nullAwareListSpread(List<String> list) {}
nullAwareSetSpread(Set<String> set) {}
nullAwareMapSpread(Map<int, String> map) {}
main() {}
