3
public static void f(java.lang.Class<? extends J> cls) { }
4
// correctly it should be like this, and then it would work.
5
// unfortunately that doesn't mean we don't have to deal with it.
6
// public static void f(java.lang.Class<? extends J<?>> cls) { }