import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; public class Generics { List<@Nullable String> safeFilter(List<@NonNull String> in, Predicate<@NonNull String> pred) { List<@Nullable String> result = new ArrayList<>(); for (String string : in) { if (pred.test(string)) result.add(string); else result.add(null); } return result; } List<@NonNull String> unsafeSingleton(@Nullable String in) { List<@NonNull String> result = new ArrayList<>(); result.add(in); return result; } }