import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Locale; import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.Nullable; @NullMarked class TestListWrapperAssignment { ListArrayWrapper<@Nullable String> listByArrayWithNullField = ListArrayWrapper.createArray(new @Nullable String[] {"a", null, "c"}); ListArrayWrapper listWithNullField = ListArrayWrapper.createVarargs("a", null, "c"); public static void main(String[] args) { ListArrayWrapper.createVarargs("a", "c").getList().forEach(s -> System.out.println(s.toUpperCase(Locale.ROOT))); ListArrayWrapper listArrayWrapper = ListArrayWrapper.createVarargs("a", "c"); listArrayWrapper.getList().forEach(s -> System.out.println(s.toUpperCase(Locale.ROOT))); ListArrayWrapper<@Nullable String> listArrayWrapperNullable = ListArrayWrapper.createVarargs("a", "c"); listArrayWrapperNullable.getList().forEach(s -> System.out.println(s.toUpperCase(Locale.ROOT))); ListArrayWrapper listWithNull = ListArrayWrapper.createVarargs("a", null, "c"); ListArrayWrapper<@Nullable String> listByArrayWithNull = ListArrayWrapper.createArray(new @Nullable String[] {"a", null, "c"}); ListArrayWrapper varargs = ListArrayWrapper.createVarargs("1"); ListArrayWrapper<@Nullable String> listByArrayWithoutNull = varargs; ListArrayWrapper listByArrayWithNullCorrectInspection1 = ListArrayWrapper.createArray(new @Nullable String[] {"a", null, "c"}); ListArrayWrapper<@Nullable String> listByArrayWithNullCorrectInspection2 = ListArrayWrapper.createArray(new String[] {"a", null, "c"}); } static class ListArrayWrapper { private final List list; @SafeVarargs static ListArrayWrapper createVarargs(E... elements) { return new ListArrayWrapper<>(new ArrayList<>(Arrays.asList(elements))); } static ListArrayWrapper createArray(E[] array) { return new ListArrayWrapper<>(new ArrayList<>(Arrays.asList(array))); } private ListArrayWrapper(List list) { this.list = list; } List getList() { return list; } } }