I've several repositories that now fails to compile with the latest jdk21, which introduces sequence collections.
The introduction of a common supertype to existing collections is *not* a source compatible change because of type inference. Here is a simplified example: public static void m(List<Supplier<? extends Map<String, String>>> factories) { } public static void main(String[] args) { Supplier<LinkedHashMap<String,String>> supplier1 = LinkedHashMap::new; Supplier<SortedMap<String,String>> supplier2 = TreeMap::new; var factories = List.of(supplier1, supplier2); m(factories); } This example compiles fine with Java 20 but report an error with Java 21: SequencedCollectionBug.java:28: error: method m in class SequencedCollectionBug cannot be applied to given types; m(factories); ^ required: List<Supplier<? extends Map<String,String>>> found: List<Supplier<? extends SequencedMap<String,String>>> reason: argument mismatch; List<Supplier<? extends SequencedMap<String,String>>> cannot be converted to List<Supplier<? extends Map<String,String>>> Apart from the example above, most of the failures I see are in the unit tests provided to the students, because we are using a lot of 'var' in them so they work whatever the name of the types chosen by the students. Discussing with a colleague, we also believe that this bug is not limited to Java, existing Kotlin codes will also fail to compile due to this bug. Regards, Rémi