qualName = ((data.pack == null ? "" : data.pack.getName() + '.') + "$Proxy" + data.id);
qualName = (data.pack + "$Proxy" + data.id);
        ClassFactory(ProxyData data) {            methods = data.methods;            // magic = 0xcafebabe            // minor_version = 0            // major_version = 46            // constant_pool_count: place-holder for now            pool.append("\u00ca\u00fe\u00ba\u00be\0\0\0\56\0\0");            // constant_pool[], filled in as we go            // access_flags            putU2(Modifier.SUPER | Modifier.FINAL | Modifier.PUBLIC);            // this_class            qualName = ((data.pack == null ? "" : data.pack.getName() + '.')                    + "$Proxy" + data.id);            putU2(classInfo(TypeSignature.getEncodingOfClass(qualName, false)));            // super_class            putU2(classInfo("java/lang/reflect/Proxy"));            // interfaces_count            putU2(data.interfaces.length);            // interfaces[]            for (int i = 0; i < data.interfaces.length; i++)                putU2(classInfo(data.interfaces[ i]));            // Recall that Proxy classes serialize specially, so we do not need            // to worry about a <clinit> method for this field. Instead, we            // just assign it by reflection after the class is successfully            // loaded.            // fields_count - private static Method[] m;            putU2(1);            // fields[]            // m.access_flags            putU2(Modifier.PRIVATE | Modifier.STATIC);            // m.name_index            putU2(utf8Info("m"));            // m.descriptor_index            putU2(utf8Info("[Ljava/lang/reflect/Method;"));            // m.attributes_count            putU2(0);            // m.attributes[]            // methods_count - # handler methods, plus <init>            putU2(methods.length + 1);            // methods[]            // <init>.access_flags            putU2(Modifier.PUBLIC);            // <init>.name_index            putU2(utf8Info("<init>"));            // <init>.descriptor_index            putU2(utf8Info(CTOR_SIG));            // <init>.attributes_count - only Code is needed            putU2(1);            // <init>.Code.attribute_name_index            putU2(utf8Info("Code"));            // <init>.Code.attribute_length = 18            // <init>.Code.info:            //   $Proxynn(InvocationHandler h) { super(h); }            // <init>.Code.max_stack = 2            // <init>.Code.max_locals = 2            // <init>.Code.code_length = 6            // <init>.Code.code[]            stream.append("\0\0\0\22\0\2\0\2\0\0\0\6" + ALOAD_0 + ALOAD_1                    + INVOKESPECIAL);            putU2(refInfo(METHOD, "java/lang/reflect/Proxy", "<init>", CTOR_SIG));            // <init>.Code.exception_table_length = 0            // <init>.Code.exception_table[]            // <init>.Code.attributes_count = 0            // <init>.Code.attributes[]            stream.append(RETURN + "\0\0\0\0");            for (int i = methods.length - 1; i >= 0; i--)                emitMethod(i, data.exceptions[ i]);            // attributes_count            putU2(0);            // attributes[] - empty; omit SourceFile attribute            // XXX should we mark this with a Synthetic attribute?        }