if (clazz == null) { ProxyData data = ProxyData.getProxyData(pt);   ClassFactory cf = new ClassFactory(data); clazz = cf.generate(loader);
if (clazz == null) { if (VMProxy.HAVE_NATIVE_GET_PROXY_CLASS) clazz = VMProxy.getProxyClass(loader, interfaces); else { ProxyData data = (VMProxy.HAVE_NATIVE_GET_PROXY_DATA ? VMProxy.getProxyData(loader, interfaces) : ProxyData.getProxyData(pt));  clazz = (VMProxy.HAVE_NATIVE_GENERATE_PROXY_CLASS ? VMProxy.generateProxyClass(loader, data) : new ClassFactory(data).generate(loader)); }
    public static synchronized Class getProxyClass(ClassLoader loader, Class[] interfaces) {		interfaces = (Class[]) interfaces.clone();		ProxyType pt = new ProxyType(loader, interfaces);		Class clazz = (Class) proxyClasses.get(pt);		if (clazz == null) {		    ProxyData data = ProxyData.getProxyData(pt);					    		    ClassFactory cf = new ClassFactory(data);		    clazz = cf.generate(loader);		    		    Object check = proxyClasses.put(pt, clazz);		    // assert check == null && clazz != null;		    if (check != null || clazz == null) {		        throw new InternalError(/* "Fatal flaw in getProxyClass" */);		    }		}		return clazz;	}