// Testcase for Issue759 // https://github.com/typetools/checker-framework/issues/759 @SuppressWarnings({"nullness", "unchecked"}) // See checker/test/nullness/Issue759.java public class Issue759 { void possibleValues(final Class<? extends Enum> enumType) { lowercase(enumType.getEnumConstants()); lowercase2(enumType.getEnumConstants()); lowercase3(enumType.getEnumConstants()); } <T extends Enum<T>> void lowercase(final T... items) {} <T extends Enum<T>> void lowercase2(final T[] items) {} <T> void lowercase3(final T items) {} } @SuppressWarnings("nullness") class Gen<T extends Gen<T>> { T[] getConstants() { return null; } } @SuppressWarnings("nullness") class IncompatibleTypes { void possibleValues(final Gen<?> genType) { lowercase(genType.getConstants()); } <S> void lowercase(final S items) {} }