I can't get even simple tests with generic signatures to work. Like this: public class test2 { static class A extends ArrayList<String> {}; public static void main(String[] args) { A a = new A(); Object x = a; ((Collection)x).add(new Byte((byte) 1)); System.out.println(x.getClass().getGenericSuperclass()); System.out.println("We have a list parametrized with: " + ((ParameterizedType)x.getClass().getGenericSuperclass()).getActualTypeArguments()[0]); } } should do this: java.util.ArrayList<java.lang.String> We have a list parametrized with: class java.lang.String but does this: Exception in thread "main" java.lang.TypeNotPresentException: type "java$util$ArrayList" not found at gnu.java.lang.reflect.ParameterizedTypeImpl.resolve(GenericSignatureParser.java:127) at gnu.java.lang.reflect.TypeImpl.resolve(TypeImpl.java:59) at gnu.java.lang.reflect.ClassSignatureParser.getSuperclassType(ClassSignatureParser.java:83) at java.lang.Class.getGenericSuperclass(Class.java:1232) at test2.main(test2.java:12) Caused by: java.lang.ClassNotFoundException: java$util$ArrayList not found in gnu.gcj.runtime.SystemClassLoader{urls=[file:./], parent=gnu.gcj.runtime.ExtensionClassLoader{urls=[], parent=null}} at java.net.URLClassLoader.findClass(URLClassLoader.java:1081) at gnu.gcj.runtime.SystemClassLoader.findClass(natSystemClassLoader.cc:27) at java.lang.ClassLoader.loadClass(ClassLoader.java:317) at java.lang.ClassLoader.loadClass(ClassLoader.java:260) at java.lang.Class.forName(natClass.cc:103) at gnu.java.lang.reflect.ParameterizedTypeImpl.resolve(GenericSignatureParser.java:123) ...4 more Is it the case that this stuff hasn't ever worked? I'll allow that we have an older cut of the generics branch in gcj. Thanks, Andrew.