public class javassist.util.proxy.ProxyFactory extends java.lang.Object
{
private java.lang.Class superClass;
private java.lang.Class[] interfaces;
private javassist.util.proxy.MethodFilter methodFilter;
private javassist.util.proxy.MethodHandler handler;
private java.util.List signatureMethods;
private boolean hasGetHandler;
private byte[] signature;
private java.lang.String classname;
private java.lang.String basename;
private java.lang.String superName;
private java.lang.Class thisClass;
private java.lang.String genericSignature;
private boolean factoryUseCache;
private boolean factoryWriteReplace;
public static boolean onlyPublicMethods;
public java.lang.String writeDirectory;
private static final java.lang.Class OBJECT_TYPE;
private static final java.lang.String HOLDER;
private static final java.lang.String HOLDER_TYPE;
private static final java.lang.String FILTER_SIGNATURE_FIELD;
private static final java.lang.String FILTER_SIGNATURE_TYPE;
private static final java.lang.String HANDLER;
private static final java.lang.String NULL_INTERCEPTOR_HOLDER;
private static final java.lang.String DEFAULT_INTERCEPTOR;
private static final java.lang.String HANDLER_TYPE;
private static final java.lang.String HANDLER_SETTER;
private static final java.lang.String HANDLER_SETTER_TYPE;
private static final java.lang.String HANDLER_GETTER;
private static final java.lang.String HANDLER_GETTER_TYPE;
private static final java.lang.String SERIAL_VERSION_UID_FIELD;
private static final java.lang.String SERIAL_VERSION_UID_TYPE;
private static final long SERIAL_VERSION_UID_VALUE;
public static volatile boolean useCache;
public static volatile boolean useWriteReplace;
private static java.util.Map proxyCache;
private static char[] hexDigits;
public static javassist.util.proxy.ProxyFactory$ClassLoaderProvider classLoaderProvider;
public static javassist.util.proxy.ProxyFactory$UniqueName nameGenerator;
private static final java.lang.String packageForJavaBase;
private static java.util.Comparator sorter;
private static final java.lang.String HANDLER_GETTER_KEY;
public boolean isUseCache()
{
javassist.util.proxy.ProxyFactory v;
boolean v;
v := @this: javassist.util.proxy.ProxyFactory;
v = v.<javassist.util.proxy.ProxyFactory: boolean factoryUseCache>;
return v;
}
public void setUseCache(boolean)
{
javassist.util.proxy.MethodHandler v;
javassist.util.proxy.ProxyFactory v;
java.lang.RuntimeException v;
boolean v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: boolean;
v = v.<javassist.util.proxy.ProxyFactory: javassist.util.proxy.MethodHandler handler>;
if v == null goto label;
if v == 0 goto label;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>("caching cannot be enabled if the factory default interceptor has been set");
throw v;
label:
v.<javassist.util.proxy.ProxyFactory: boolean factoryUseCache> = v;
return;
}
public boolean isUseWriteReplace()
{
javassist.util.proxy.ProxyFactory v;
boolean v;
v := @this: javassist.util.proxy.ProxyFactory;
v = v.<javassist.util.proxy.ProxyFactory: boolean factoryWriteReplace>;
return v;
}
public void setUseWriteReplace(boolean)
{
javassist.util.proxy.ProxyFactory v;
boolean v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: boolean;
v.<javassist.util.proxy.ProxyFactory: boolean factoryWriteReplace> = v;
return;
}
public static boolean isProxyClass(java.lang.Class)
{
java.lang.Class v, v;
boolean v;
v := @parameter: java.lang.Class;
v = class "Ljavassist/util/proxy/Proxy;";
v = virtualinvoke v.<java.lang.Class: boolean isAssignableFrom(java.lang.Class)>(v);
return v;
}
public void <init>()
{
javassist.util.proxy.ProxyFactory v;
boolean v, v;
v := @this: javassist.util.proxy.ProxyFactory;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass> = null;
v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces> = null;
v.<javassist.util.proxy.ProxyFactory: javassist.util.proxy.MethodFilter methodFilter> = null;
v.<javassist.util.proxy.ProxyFactory: javassist.util.proxy.MethodHandler handler> = null;
v.<javassist.util.proxy.ProxyFactory: byte[] signature> = null;
v.<javassist.util.proxy.ProxyFactory: java.util.List signatureMethods> = null;
v.<javassist.util.proxy.ProxyFactory: boolean hasGetHandler> = 0;
v.<javassist.util.proxy.ProxyFactory: java.lang.Class thisClass> = null;
v.<javassist.util.proxy.ProxyFactory: java.lang.String genericSignature> = null;
v.<javassist.util.proxy.ProxyFactory: java.lang.String writeDirectory> = null;
v = <javassist.util.proxy.ProxyFactory: boolean useCache>;
v.<javassist.util.proxy.ProxyFactory: boolean factoryUseCache> = v;
v = <javassist.util.proxy.ProxyFactory: boolean useWriteReplace>;
v.<javassist.util.proxy.ProxyFactory: boolean factoryWriteReplace> = v;
return;
}
public void setSuperclass(java.lang.Class)
{
java.lang.Class v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.Class;
v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass> = v;
v.<javassist.util.proxy.ProxyFactory: byte[] signature> = null;
return;
}
public java.lang.Class getSuperclass()
{
java.lang.Class v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
return v;
}
public void setInterfaces(java.lang.Class[])
{
java.lang.Class[] v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.Class[];
v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces> = v;
v.<javassist.util.proxy.ProxyFactory: byte[] signature> = null;
return;
}
public java.lang.Class[] getInterfaces()
{
java.lang.Class[] v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
return v;
}
public void setFilter(javassist.util.proxy.MethodFilter)
{
javassist.util.proxy.ProxyFactory v;
javassist.util.proxy.MethodFilter v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: javassist.util.proxy.MethodFilter;
v.<javassist.util.proxy.ProxyFactory: javassist.util.proxy.MethodFilter methodFilter> = v;
v.<javassist.util.proxy.ProxyFactory: byte[] signature> = null;
return;
}
public void setGenericSignature(java.lang.String)
{
javassist.util.proxy.ProxyFactory v;
java.lang.String v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.String;
v.<javassist.util.proxy.ProxyFactory: java.lang.String genericSignature> = v;
return;
}
public java.lang.Class createClass()
{
byte[] v;
javassist.util.proxy.MethodFilter v;
java.lang.Class v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v = v.<javassist.util.proxy.ProxyFactory: byte[] signature>;
if v != null goto label;
v = v.<javassist.util.proxy.ProxyFactory: javassist.util.proxy.MethodFilter methodFilter>;
specialinvoke v.<javassist.util.proxy.ProxyFactory: void computeSignature(javassist.util.proxy.MethodFilter)>(v);
label:
v = specialinvoke v.<javassist.util.proxy.ProxyFactory: java.lang.Class createClass1(java.lang.invoke.MethodHandles$Lookup)>(null);
return v;
}
public java.lang.Class createClass(javassist.util.proxy.MethodFilter)
{
java.lang.Class v;
javassist.util.proxy.ProxyFactory v;
javassist.util.proxy.MethodFilter v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: javassist.util.proxy.MethodFilter;
specialinvoke v.<javassist.util.proxy.ProxyFactory: void computeSignature(javassist.util.proxy.MethodFilter)>(v);
v = specialinvoke v.<javassist.util.proxy.ProxyFactory: java.lang.Class createClass1(java.lang.invoke.MethodHandles$Lookup)>(null);
return v;
}
java.lang.Class createClass(byte[])
{
byte[] v;
java.lang.Class v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: byte[];
specialinvoke v.<javassist.util.proxy.ProxyFactory: void installSignature(byte[])>(v);
v = specialinvoke v.<javassist.util.proxy.ProxyFactory: java.lang.Class createClass1(java.lang.invoke.MethodHandles$Lookup)>(null);
return v;
}
public java.lang.Class createClass(java.lang.invoke.MethodHandles$Lookup)
{
byte[] v;
java.lang.invoke.MethodHandles$Lookup v;
javassist.util.proxy.MethodFilter v;
java.lang.Class v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.invoke.MethodHandles$Lookup;
v = v.<javassist.util.proxy.ProxyFactory: byte[] signature>;
if v != null goto label;
v = v.<javassist.util.proxy.ProxyFactory: javassist.util.proxy.MethodFilter methodFilter>;
specialinvoke v.<javassist.util.proxy.ProxyFactory: void computeSignature(javassist.util.proxy.MethodFilter)>(v);
label:
v = specialinvoke v.<javassist.util.proxy.ProxyFactory: java.lang.Class createClass1(java.lang.invoke.MethodHandles$Lookup)>(v);
return v;
}
public java.lang.Class createClass(java.lang.invoke.MethodHandles$Lookup, javassist.util.proxy.MethodFilter)
{
java.lang.invoke.MethodHandles$Lookup v;
javassist.util.proxy.MethodFilter v;
java.lang.Class v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.invoke.MethodHandles$Lookup;
v := @parameter: javassist.util.proxy.MethodFilter;
specialinvoke v.<javassist.util.proxy.ProxyFactory: void computeSignature(javassist.util.proxy.MethodFilter)>(v);
v = specialinvoke v.<javassist.util.proxy.ProxyFactory: java.lang.Class createClass1(java.lang.invoke.MethodHandles$Lookup)>(v);
return v;
}
java.lang.Class createClass(java.lang.invoke.MethodHandles$Lookup, byte[])
{
byte[] v;
java.lang.invoke.MethodHandles$Lookup v;
java.lang.Class v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.invoke.MethodHandles$Lookup;
v := @parameter: byte[];
specialinvoke v.<javassist.util.proxy.ProxyFactory: void installSignature(byte[])>(v);
v = specialinvoke v.<javassist.util.proxy.ProxyFactory: java.lang.Class createClass1(java.lang.invoke.MethodHandles$Lookup)>(v);
return v;
}
private java.lang.Class createClass1(java.lang.invoke.MethodHandles$Lookup)
{
java.lang.Throwable v;
java.lang.invoke.MethodHandles$Lookup v;
java.util.Map v;
java.lang.Class v;
javassist.util.proxy.ProxyFactory v;
java.lang.ClassLoader v;
boolean v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.invoke.MethodHandles$Lookup;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class thisClass>;
if v != null goto label;
v = virtualinvoke v.<javassist.util.proxy.ProxyFactory: java.lang.ClassLoader getClassLoader()>();
v = <javassist.util.proxy.ProxyFactory: java.util.Map proxyCache>;
entermonitor v;
label:
v = v.<javassist.util.proxy.ProxyFactory: boolean factoryUseCache>;
if v == 0 goto label;
specialinvoke v.<javassist.util.proxy.ProxyFactory: void createClass2(java.lang.ClassLoader,java.lang.invoke.MethodHandles$Lookup)>(v, v);
goto label;
label:
specialinvoke v.<javassist.util.proxy.ProxyFactory: void createClass3(java.lang.ClassLoader,java.lang.invoke.MethodHandles$Lookup)>(v, v);
label:
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class thisClass>;
v.<javassist.util.proxy.ProxyFactory: java.lang.Class thisClass> = null;
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return v;
catch java.lang.Throwable from label to label with label;
}
public java.lang.String getKey(java.lang.Class, java.lang.Class[], byte[], boolean)
{
byte[] v;
byte v, v;
int v, v, v, v, v, v;
java.lang.String v, v, v;
boolean v;
java.lang.Class[] v;
char v, v;
char[] v, v;
java.lang.Class v, v;
java.lang.StringBuilder v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.Class[];
v := @parameter: byte[];
v := @parameter: boolean;
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(58);
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(58);
v = v + 1;
goto label;
label:
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = v & 15;
v = v >> 4;
v = v & 15;
v = <javassist.util.proxy.ProxyFactory: char[] hexDigits>;
v = v[v];
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(v);
v = <javassist.util.proxy.ProxyFactory: char[] hexDigits>;
v = v[v];
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(v);
v = v + 1;
goto label;
label:
if v == 0 goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(":w");
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
private void createClass2(java.lang.ClassLoader, java.lang.invoke.MethodHandles$Lookup)
{
byte[] v, v;
java.util.HashMap v;
java.util.Map v, v;
java.lang.String v;
boolean v, v;
java.lang.invoke.MethodHandles$Lookup v;
java.lang.Class[] v;
java.lang.ref.Reference v;
javassist.util.proxy.ProxyFactory$ProxyDetails v;
java.lang.Class v, v, v;
java.lang.Object v, v, v;
javassist.util.proxy.ProxyFactory v;
java.lang.ClassLoader v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.ClassLoader;
v := @parameter: java.lang.invoke.MethodHandles$Lookup;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
v = v.<javassist.util.proxy.ProxyFactory: byte[] signature>;
v = v.<javassist.util.proxy.ProxyFactory: boolean factoryWriteReplace>;
v = virtualinvoke v.<javassist.util.proxy.ProxyFactory: java.lang.String getKey(java.lang.Class,java.lang.Class[],byte[],boolean)>(v, v, v, v);
v = <javassist.util.proxy.ProxyFactory: java.util.Map proxyCache>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v != null goto label;
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v = v;
v = <javassist.util.proxy.ProxyFactory: java.util.Map proxyCache>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
v = v.<javassist.util.proxy.ProxyFactory$ProxyDetails: java.lang.ref.Reference proxyClass>;
v = virtualinvoke v.<java.lang.ref.Reference: java.lang.Object get()>();
v.<javassist.util.proxy.ProxyFactory: java.lang.Class thisClass> = v;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class thisClass>;
if v == null goto label;
return;
label:
specialinvoke v.<javassist.util.proxy.ProxyFactory: void createClass3(java.lang.ClassLoader,java.lang.invoke.MethodHandles$Lookup)>(v, v);
v = new javassist.util.proxy.ProxyFactory$ProxyDetails;
v = v.<javassist.util.proxy.ProxyFactory: byte[] signature>;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class thisClass>;
v = v.<javassist.util.proxy.ProxyFactory: boolean factoryWriteReplace>;
specialinvoke v.<javassist.util.proxy.ProxyFactory$ProxyDetails: void <init>(byte[],java.lang.Class,boolean)>(v, v, v);
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
return;
}
private void createClass3(java.lang.ClassLoader, java.lang.invoke.MethodHandles$Lookup)
{
byte[] v;
java.lang.String v, v, v;
boolean v;
javassist.CannotCompileException v;
java.lang.invoke.MethodHandles$Lookup v;
javassist.bytecode.ClassFile v;
java.lang.RuntimeException v;
javassist.util.proxy.MethodHandler v;
java.security.ProtectionDomain v;
java.lang.Class v, v, v;
javassist.util.proxy.ProxyFactory v;
java.lang.ClassLoader v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.ClassLoader;
v := @parameter: java.lang.invoke.MethodHandles$Lookup;
specialinvoke v.<javassist.util.proxy.ProxyFactory: void allocateClassName()>();
label:
v = specialinvoke v.<javassist.util.proxy.ProxyFactory: javassist.bytecode.ClassFile make()>();
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String writeDirectory>;
if v == null goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String writeDirectory>;
staticinvoke <javassist.util.proxy.FactoryHelper: void writeFile(javassist.bytecode.ClassFile,java.lang.String)>(v, v);
label:
if v != null goto label;
v = specialinvoke v.<javassist.util.proxy.ProxyFactory: java.lang.Class getClassInTheSamePackage()>();
v = virtualinvoke v.<javassist.util.proxy.ProxyFactory: java.security.ProtectionDomain getDomain()>();
v = staticinvoke <javassist.util.proxy.FactoryHelper: java.lang.Class toClass(javassist.bytecode.ClassFile,java.lang.Class,java.lang.ClassLoader,java.security.ProtectionDomain)>(v, v, v, v);
v.<javassist.util.proxy.ProxyFactory: java.lang.Class thisClass> = v;
goto label;
label:
v = staticinvoke <javassist.util.proxy.FactoryHelper: java.lang.Class toClass(javassist.bytecode.ClassFile,java.lang.invoke.MethodHandles$Lookup)>(v, v);
v.<javassist.util.proxy.ProxyFactory: java.lang.Class thisClass> = v;
label:
v = v.<javassist.util.proxy.ProxyFactory: byte[] signature>;
specialinvoke v.<javassist.util.proxy.ProxyFactory: void setField(java.lang.String,java.lang.Object)>("_filter_signature", v);
v = v.<javassist.util.proxy.ProxyFactory: boolean factoryUseCache>;
if v != 0 goto label;
v = v.<javassist.util.proxy.ProxyFactory: javassist.util.proxy.MethodHandler handler>;
specialinvoke v.<javassist.util.proxy.ProxyFactory: void setField(java.lang.String,java.lang.Object)>("default_interceptor", v);
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
v = virtualinvoke v.<javassist.CannotCompileException: java.lang.String getMessage()>();
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String,java.lang.Throwable)>(v, v);
throw v;
label:
return;
catch javassist.CannotCompileException from label to label with label;
}
private java.lang.Class getClassInTheSamePackage()
{
java.lang.Class[] v, v, v;
int v;
java.lang.Class v, v, v, v, v, v, v;
javassist.util.proxy.ProxyFactory v;
java.lang.String v;
boolean v;
v := @this: javassist.util.proxy.ProxyFactory;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String basename>;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("javassist.util.proxy.");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
return v;
label:
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
if v == null goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
v = <javassist.util.proxy.ProxyFactory: java.lang.Class OBJECT_TYPE>;
if v == v goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
return v;
label:
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
if v == null goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
v = lengthof v;
if v <= 0 goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
v = v[0];
return v;
label:
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
return v;
}
private void setField(java.lang.String, java.lang.Object)
{
java.lang.RuntimeException v;
java.lang.reflect.Field v;
java.lang.Exception v;
java.lang.Class v, v;
java.lang.Object v;
javassist.util.proxy.ProxyFactory v;
java.lang.String v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Object;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class thisClass>;
if v == null goto label;
if v == null goto label;
label:
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class thisClass>;
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Field getField(java.lang.String)>(v);
staticinvoke <javassist.util.proxy.SecurityActions: void setAccessible(java.lang.reflect.AccessibleObject,boolean)>(v, 1);
virtualinvoke v.<java.lang.reflect.Field: void set(java.lang.Object,java.lang.Object)>(null, v);
staticinvoke <javassist.util.proxy.SecurityActions: void setAccessible(java.lang.reflect.AccessibleObject,boolean)>(v, 0);
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
return;
catch java.lang.Exception from label to label with label;
}
static byte[] getFilterSignature(java.lang.Class)
{
java.lang.Class v;
java.lang.Object v;
v := @parameter: java.lang.Class;
v = staticinvoke <javassist.util.proxy.ProxyFactory: java.lang.Object getField(java.lang.Class,java.lang.String)>(v, "_filter_signature");
return v;
}
private static java.lang.Object getField(java.lang.Class, java.lang.String)
{
java.lang.Class v;
java.lang.Object v;
java.lang.RuntimeException v;
java.lang.String v;
java.lang.reflect.Field v;
java.lang.Exception v;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.String;
label:
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Field getField(java.lang.String)>(v);
virtualinvoke v.<java.lang.reflect.Field: void setAccessible(boolean)>(1);
v = virtualinvoke v.<java.lang.reflect.Field: java.lang.Object get(java.lang.Object)>(null);
virtualinvoke v.<java.lang.reflect.Field: void setAccessible(boolean)>(0);
label:
return v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
catch java.lang.Exception from label to label with label;
}
public static javassist.util.proxy.MethodHandler getHandler(javassist.util.proxy.Proxy)
{
javassist.util.proxy.Proxy v;
java.lang.Class v;
java.lang.Object v;
java.lang.RuntimeException v;
java.lang.reflect.Field v;
java.lang.Exception v;
v := @parameter: javassist.util.proxy.Proxy;
label:
v = interfaceinvoke v.<javassist.util.proxy.Proxy: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Field getDeclaredField(java.lang.String)>("handler");
virtualinvoke v.<java.lang.reflect.Field: void setAccessible(boolean)>(1);
v = virtualinvoke v.<java.lang.reflect.Field: java.lang.Object get(java.lang.Object)>(v);
virtualinvoke v.<java.lang.reflect.Field: void setAccessible(boolean)>(0);
label:
return v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
catch java.lang.Exception from label to label with label;
}
protected java.lang.ClassLoader getClassLoader()
{
javassist.util.proxy.ProxyFactory$ClassLoaderProvider v;
javassist.util.proxy.ProxyFactory v;
java.lang.ClassLoader v;
v := @this: javassist.util.proxy.ProxyFactory;
v = <javassist.util.proxy.ProxyFactory: javassist.util.proxy.ProxyFactory$ClassLoaderProvider classLoaderProvider>;
v = interfaceinvoke v.<javassist.util.proxy.ProxyFactory$ClassLoaderProvider: java.lang.ClassLoader get(javassist.util.proxy.ProxyFactory)>(v);
return v;
}
protected java.lang.ClassLoader getClassLoader0()
{
java.lang.Class[] v, v, v;
java.lang.Thread v;
int v;
java.lang.Class v, v, v, v, v;
javassist.util.proxy.ProxyFactory v;
java.lang.ClassLoader v;
java.lang.String v;
boolean v;
v := @this: javassist.util.proxy.ProxyFactory;
v = null;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
if v == null goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("java.lang.Object");
if v != 0 goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
goto label;
label:
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
if v == null goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
v = lengthof v;
if v <= 0 goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
v = v[0];
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
label:
if v != null goto label;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.ClassLoader getClassLoader()>();
if v != null goto label;
v = staticinvoke <java.lang.Thread: java.lang.Thread currentThread()>();
v = virtualinvoke v.<java.lang.Thread: java.lang.ClassLoader getContextClassLoader()>();
if v != null goto label;
v = staticinvoke <java.lang.ClassLoader: java.lang.ClassLoader getSystemClassLoader()>();
label:
return v;
}
protected java.security.ProtectionDomain getDomain()
{
java.lang.Class[] v, v, v;
java.security.ProtectionDomain v;
int v;
java.lang.Class v, v, v;
javassist.util.proxy.ProxyFactory v;
java.lang.String v;
boolean v;
v := @this: javassist.util.proxy.ProxyFactory;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
if v == null goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("java.lang.Object");
if v != 0 goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
goto label;
label:
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
if v == null goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
v = lengthof v;
if v <= 0 goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
v = v[0];
goto label;
label:
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
label:
v = virtualinvoke v.<java.lang.Class: java.security.ProtectionDomain getProtectionDomain()>();
return v;
}
public java.lang.Object create(java.lang.Class[], java.lang.Object[], javassist.util.proxy.MethodHandler) throws java.lang.NoSuchMethodException, java.lang.IllegalArgumentException, java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException
{
javassist.util.proxy.MethodHandler v;
java.lang.Object[] v;
java.lang.Class[] v;
java.lang.Object v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.Class[];
v := @parameter: java.lang.Object[];
v := @parameter: javassist.util.proxy.MethodHandler;
v = virtualinvoke v.<javassist.util.proxy.ProxyFactory: java.lang.Object create(java.lang.Class[],java.lang.Object[])>(v, v);
interfaceinvoke v.<javassist.util.proxy.Proxy: void setHandler(javassist.util.proxy.MethodHandler)>(v);
return v;
}
public java.lang.Object create(java.lang.Class[], java.lang.Object[]) throws java.lang.NoSuchMethodException, java.lang.IllegalArgumentException, java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException
{
java.lang.Object[] v;
java.lang.Class[] v;
java.lang.Class v;
java.lang.Object v;
javassist.util.proxy.ProxyFactory v;
java.lang.reflect.Constructor v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.Class[];
v := @parameter: java.lang.Object[];
v = virtualinvoke v.<javassist.util.proxy.ProxyFactory: java.lang.Class createClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Constructor getConstructor(java.lang.Class[])>(v);
v = virtualinvoke v.<java.lang.reflect.Constructor: java.lang.Object newInstance(java.lang.Object[])>(v);
return v;
}
public void setHandler(javassist.util.proxy.MethodHandler)
{
javassist.util.proxy.MethodHandler v, v;
javassist.util.proxy.ProxyFactory v;
boolean v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: javassist.util.proxy.MethodHandler;
v = v.<javassist.util.proxy.ProxyFactory: boolean factoryUseCache>;
if v == 0 goto label;
if v == null goto label;
v.<javassist.util.proxy.ProxyFactory: boolean factoryUseCache> = 0;
v.<javassist.util.proxy.ProxyFactory: java.lang.Class thisClass> = null;
label:
v.<javassist.util.proxy.ProxyFactory: javassist.util.proxy.MethodHandler handler> = v;
v = v.<javassist.util.proxy.ProxyFactory: javassist.util.proxy.MethodHandler handler>;
specialinvoke v.<javassist.util.proxy.ProxyFactory: void setField(java.lang.String,java.lang.Object)>("default_interceptor", v);
return;
}
private static java.lang.String makeProxyName(java.lang.String)
{
java.lang.Throwable v;
javassist.util.proxy.ProxyFactory$UniqueName v, v;
java.lang.String v, v;
v := @parameter: java.lang.String;
v = <javassist.util.proxy.ProxyFactory: javassist.util.proxy.ProxyFactory$UniqueName nameGenerator>;
entermonitor v;
label:
v = <javassist.util.proxy.ProxyFactory: javassist.util.proxy.ProxyFactory$UniqueName nameGenerator>;
v = interfaceinvoke v.<javassist.util.proxy.ProxyFactory$UniqueName: java.lang.String get(java.lang.String)>(v);
exitmonitor v;
label:
return v;
label:
v := @caughtexception;
exitmonitor v;
throw v;
catch java.lang.Throwable from label to label with label;
}
private javassist.bytecode.ClassFile make() throws javassist.CannotCompileException
{
javassist.bytecode.ConstPool v;
javassist.bytecode.DuplicateMemberException v;
java.util.ArrayList v;
javassist.bytecode.FieldInfo v, v, v, v;
int v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v;
boolean v, v, v, v;
javassist.bytecode.ClassFile v;
java.lang.Class[] v;
javassist.bytecode.SignatureAttribute v;
javassist.bytecode.MethodInfo v;
java.lang.Class v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v = new javassist.bytecode.ClassFile;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String classname>;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String superName>;
specialinvoke v.<javassist.bytecode.ClassFile: void <init>(boolean,java.lang.String,java.lang.String)>(0, v, v);
virtualinvoke v.<javassist.bytecode.ClassFile: void setAccessFlags(int)>(1);
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
v = v.<javassist.util.proxy.ProxyFactory: boolean hasGetHandler>;
if v == 0 goto label;
v = class "Ljavassist/util/proxy/Proxy;";
goto label;
label:
v = class "Ljavassist/util/proxy/ProxyObject;";
label:
staticinvoke <javassist.util.proxy.ProxyFactory: void setInterfaces(javassist.bytecode.ClassFile,java.lang.Class[],java.lang.Class)>(v, v, v);
v = virtualinvoke v.<javassist.bytecode.ClassFile: javassist.bytecode.ConstPool getConstPool()>();
v = v.<javassist.util.proxy.ProxyFactory: boolean factoryUseCache>;
if v != 0 goto label;
v = new javassist.bytecode.FieldInfo;
v = <javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_TYPE>;
specialinvoke v.<javassist.bytecode.FieldInfo: void <init>(javassist.bytecode.ConstPool,java.lang.String,java.lang.String)>(v, "default_interceptor", v);
virtualinvoke v.<javassist.bytecode.FieldInfo: void setAccessFlags(int)>(9);
virtualinvoke v.<javassist.bytecode.ClassFile: void addField(javassist.bytecode.FieldInfo)>(v);
label:
v = new javassist.bytecode.FieldInfo;
v = <javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_TYPE>;
specialinvoke v.<javassist.bytecode.FieldInfo: void <init>(javassist.bytecode.ConstPool,java.lang.String,java.lang.String)>(v, "handler", v);
virtualinvoke v.<javassist.bytecode.FieldInfo: void setAccessFlags(int)>(2);
virtualinvoke v.<javassist.bytecode.ClassFile: void addField(javassist.bytecode.FieldInfo)>(v);
v = new javassist.bytecode.FieldInfo;
specialinvoke v.<javassist.bytecode.FieldInfo: void <init>(javassist.bytecode.ConstPool,java.lang.String,java.lang.String)>(v, "_filter_signature", "[B");
virtualinvoke v.<javassist.bytecode.FieldInfo: void setAccessFlags(int)>(9);
virtualinvoke v.<javassist.bytecode.ClassFile: void addField(javassist.bytecode.FieldInfo)>(v);
v = new javassist.bytecode.FieldInfo;
specialinvoke v.<javassist.bytecode.FieldInfo: void <init>(javassist.bytecode.ConstPool,java.lang.String,java.lang.String)>(v, "serialVersionUID", "J");
virtualinvoke v.<javassist.bytecode.FieldInfo: void setAccessFlags(int)>(25);
virtualinvoke v.<javassist.bytecode.ClassFile: void addField(javassist.bytecode.FieldInfo)>(v);
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String genericSignature>;
if v == null goto label;
v = new javassist.bytecode.SignatureAttribute;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String genericSignature>;
specialinvoke v.<javassist.bytecode.SignatureAttribute: void <init>(javassist.bytecode.ConstPool,java.lang.String)>(v, v);
virtualinvoke v.<javassist.bytecode.ClassFile: void addAttribute(javassist.bytecode.AttributeInfo)>(v);
label:
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String classname>;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String classname>;
specialinvoke v.<javassist.util.proxy.ProxyFactory: void makeConstructors(java.lang.String,javassist.bytecode.ClassFile,javassist.bytecode.ConstPool,java.lang.String)>(v, v, v, v);
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String classname>;
v = specialinvoke v.<javassist.util.proxy.ProxyFactory: int overrideMethods(javassist.bytecode.ClassFile,javassist.bytecode.ConstPool,java.lang.String,java.util.List)>(v, v, v, v);
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String classname>;
staticinvoke <javassist.util.proxy.ProxyFactory: void addClassInitializer(javassist.bytecode.ClassFile,javassist.bytecode.ConstPool,java.lang.String,int,java.util.List)>(v, v, v, v, v);
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String classname>;
staticinvoke <javassist.util.proxy.ProxyFactory: void addSetter(java.lang.String,javassist.bytecode.ClassFile,javassist.bytecode.ConstPool)>(v, v, v);
v = v.<javassist.util.proxy.ProxyFactory: boolean hasGetHandler>;
if v != 0 goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String classname>;
staticinvoke <javassist.util.proxy.ProxyFactory: void addGetter(java.lang.String,javassist.bytecode.ClassFile,javassist.bytecode.ConstPool)>(v, v, v);
label:
v = v.<javassist.util.proxy.ProxyFactory: boolean factoryWriteReplace>;
if v == 0 goto label;
label:
v = staticinvoke <javassist.util.proxy.ProxyFactory: javassist.bytecode.MethodInfo makeWriteReplace(javassist.bytecode.ConstPool)>(v);
virtualinvoke v.<javassist.bytecode.ClassFile: void addMethod(javassist.bytecode.MethodInfo)>(v);
label:
goto label;
label:
v := @caughtexception;
label:
v.<javassist.util.proxy.ProxyFactory: java.lang.Class thisClass> = null;
return v;
catch javassist.bytecode.DuplicateMemberException from label to label with label;
}
private void checkClassAndSuperName()
{
int v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v;
boolean v, v, v, v;
java.lang.Class[] v, v, v, v;
java.lang.RuntimeException v;
java.lang.Class v, v, v, v, v, v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
if v != null goto label;
v = newarray (java.lang.Class)[0];
v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces> = v;
label:
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
if v != null goto label;
v = <javassist.util.proxy.ProxyFactory: java.lang.Class OBJECT_TYPE>;
v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass> = v;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v.<javassist.util.proxy.ProxyFactory: java.lang.String superName> = v;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
v = lengthof v;
if v != 0 goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String superName>;
goto label;
label:
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
v = v[0];
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
label:
v.<javassist.util.proxy.ProxyFactory: java.lang.String basename> = v;
goto label;
label:
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v.<javassist.util.proxy.ProxyFactory: java.lang.String superName> = v;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String superName>;
v.<javassist.util.proxy.ProxyFactory: java.lang.String basename> = v;
label:
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
v = virtualinvoke v.<java.lang.Class: int getModifiers()>();
v = staticinvoke <java.lang.reflect.Modifier: boolean isFinal(int)>(v);
if v == 0 goto label;
v = new java.lang.RuntimeException;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String superName>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u is final");
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String basename>;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("java.");
if v != 0 goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String basename>;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("jdk.");
if v != 0 goto label;
v = <javassist.util.proxy.ProxyFactory: boolean onlyPublicMethods>;
if v == 0 goto label;
label:
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String basename>;
v = virtualinvoke v.<java.lang.String: java.lang.String replace(char,char)>(46, 95);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("javassist.util.proxy.\u0001");
v.<javassist.util.proxy.ProxyFactory: java.lang.String basename> = v;
label:
return;
}
private void allocateClassName()
{
javassist.util.proxy.ProxyFactory v;
java.lang.String v, v;
v := @this: javassist.util.proxy.ProxyFactory;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String basename>;
v = staticinvoke <javassist.util.proxy.ProxyFactory: java.lang.String makeProxyName(java.lang.String)>(v);
v.<javassist.util.proxy.ProxyFactory: java.lang.String classname> = v;
return;
}
private void makeSortedMethodList()
{
java.lang.Class[] v;
java.util.Set v;
java.util.ArrayList v;
java.util.List v;
java.util.Map v;
java.lang.Class v;
javassist.util.proxy.ProxyFactory v;
java.util.Comparator v;
v := @this: javassist.util.proxy.ProxyFactory;
specialinvoke v.<javassist.util.proxy.ProxyFactory: void checkClassAndSuperName()>();
v.<javassist.util.proxy.ProxyFactory: boolean hasGetHandler> = 0;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
v = specialinvoke v.<javassist.util.proxy.ProxyFactory: java.util.Map getMethods(java.lang.Class,java.lang.Class[])>(v, v);
v = new java.util.ArrayList;
v = interfaceinvoke v.<java.util.Map: java.util.Set entrySet()>();
specialinvoke v.<java.util.ArrayList: void <init>(java.util.Collection)>(v);
v.<javassist.util.proxy.ProxyFactory: java.util.List signatureMethods> = v;
v = v.<javassist.util.proxy.ProxyFactory: java.util.List signatureMethods>;
v = <javassist.util.proxy.ProxyFactory: java.util.Comparator sorter>;
staticinvoke <java.util.Collections: void sort(java.util.List,java.util.Comparator)>(v, v);
return;
}
private void computeSignature(javassist.util.proxy.MethodFilter)
{
byte[] v, v;
int v, v, v, v, v;
java.lang.String v;
boolean v, v, v, v;
javassist.util.proxy.MethodFilter v;
java.util.List v, v;
java.lang.Object v, v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: javassist.util.proxy.MethodFilter;
specialinvoke v.<javassist.util.proxy.ProxyFactory: void makeSortedMethodList()>();
v = v.<javassist.util.proxy.ProxyFactory: java.util.List signatureMethods>;
v = interfaceinvoke v.<java.util.List: int size()>();
v = v + 7;
v = v >> 3;
v = newarray (byte)[v];
v.<javassist.util.proxy.ProxyFactory: byte[] signature> = v;
v = 0;
label:
if v >= v goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.util.List signatureMethods>;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(v);
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = virtualinvoke v.<java.lang.reflect.Method: int getModifiers()>();
v = staticinvoke <java.lang.reflect.Modifier: boolean isFinal(int)>(v);
if v != 0 goto label;
v = staticinvoke <java.lang.reflect.Modifier: boolean isStatic(int)>(v);
if v != 0 goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String basename>;
v = staticinvoke <javassist.util.proxy.ProxyFactory: boolean isVisible(int,java.lang.String,java.lang.reflect.Member)>(v, v, v);
if v == 0 goto label;
if v == null goto label;
v = interfaceinvoke v.<javassist.util.proxy.MethodFilter: boolean isHandled(java.lang.reflect.Method)>(v);
if v == 0 goto label;
label:
v = v.<javassist.util.proxy.ProxyFactory: byte[] signature>;
specialinvoke v.<javassist.util.proxy.ProxyFactory: void setBit(byte[],int)>(v, v);
label:
v = v + 1;
goto label;
label:
return;
}
private void installSignature(byte[])
{
byte[] v;
java.lang.RuntimeException v;
java.util.List v;
int v, v, v, v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: byte[];
specialinvoke v.<javassist.util.proxy.ProxyFactory: void makeSortedMethodList()>();
v = v.<javassist.util.proxy.ProxyFactory: java.util.List signatureMethods>;
v = interfaceinvoke v.<java.util.List: int size()>();
v = v + 7;
v = v >> 3;
v = lengthof v;
if v == v goto label;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>("invalid filter signature length for deserialized proxy class");
throw v;
label:
v.<javassist.util.proxy.ProxyFactory: byte[] signature> = v;
return;
}
private boolean testBit(byte[], int)
{
byte[] v;
byte v;
int v, v, v, v, v, v;
javassist.util.proxy.ProxyFactory v;
boolean v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: byte[];
v := @parameter: int;
v = v >> 3;
v = lengthof v;
if v <= v goto label;
return 0;
label:
v = v & 7;
v = 1 << v;
v = v[v];
v = v & v;
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private void setBit(byte[], int)
{
byte[] v;
byte v;
int v, v, v, v, v, v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: byte[];
v := @parameter: int;
v = v >> 3;
v = lengthof v;
if v >= v goto label;
v = v & 7;
v = 1 << v;
v = v[v];
v = v | v;
v[v] = v;
label:
return;
}
private static void setInterfaces(javassist.bytecode.ClassFile, java.lang.Class[], java.lang.Class)
{
javassist.bytecode.ClassFile v;
java.lang.Class[] v;
java.lang.String[] v, v;
int v, v, v, v, v, v;
java.lang.Class v, v;
java.lang.String v, v;
v := @parameter: javassist.bytecode.ClassFile;
v := @parameter: java.lang.Class[];
v := @parameter: java.lang.Class;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
if v == null goto label;
v = lengthof v;
if v != 0 goto label;
label:
v = newarray (java.lang.String)[1];
v[0] = v;
v = v;
goto label;
label:
v = lengthof v;
v = v + 1;
v = newarray (java.lang.String)[v];
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v[v] = v;
v = v + 1;
goto label;
label:
v = lengthof v;
v[v] = v;
label:
virtualinvoke v.<javassist.bytecode.ClassFile: void setInterfaces(java.lang.String[])>(v);
return;
}
private static void addClassInitializer(javassist.bytecode.ClassFile, javassist.bytecode.ConstPool, java.lang.String, int, java.util.List) throws javassist.CannotCompileException
{
javassist.bytecode.ConstPool v;
javassist.bytecode.CodeAttribute v;
javassist.bytecode.FieldInfo v;
int v, v, v;
java.lang.String v, v, v, v;
boolean v;
java.util.Iterator v;
javassist.bytecode.ClassFile v;
java.lang.Class[] v;
java.util.List v;
javassist.bytecode.Bytecode v;
javassist.bytecode.MethodInfo v;
java.lang.Object v;
v := @parameter: javassist.bytecode.ClassFile;
v := @parameter: javassist.bytecode.ConstPool;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: java.util.List;
v = new javassist.bytecode.FieldInfo;
specialinvoke v.<javassist.bytecode.FieldInfo: void <init>(javassist.bytecode.ConstPool,java.lang.String,java.lang.String)>(v, "_methods_", "[Ljava/lang/reflect/Method;");
virtualinvoke v.<javassist.bytecode.FieldInfo: void setAccessFlags(int)>(10);
virtualinvoke v.<javassist.bytecode.ClassFile: void addField(javassist.bytecode.FieldInfo)>(v);
v = new javassist.bytecode.MethodInfo;
specialinvoke v.<javassist.bytecode.MethodInfo: void <init>(javassist.bytecode.ConstPool,java.lang.String,java.lang.String)>(v, "<clinit>", "()V");
virtualinvoke v.<javassist.bytecode.MethodInfo: void setAccessFlags(int)>(8);
v = newarray (java.lang.Class)[1];
v[0] = class "Ljava/lang/ClassNotFoundException;";
staticinvoke <javassist.util.proxy.ProxyFactory: void setThrows(javassist.bytecode.MethodInfo,javassist.bytecode.ConstPool,java.lang.Class[])>(v, v, v);
v = new javassist.bytecode.Bytecode;
specialinvoke v.<javassist.bytecode.Bytecode: void <init>(javassist.bytecode.ConstPool,int,int)>(v, 0, 2);
v = v * 2;
virtualinvoke v.<javassist.bytecode.Bytecode: void addIconst(int)>(v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addAnewarray(java.lang.String)>("java.lang.reflect.Method");
virtualinvoke v.<javassist.bytecode.Bytecode: void addAstore(int)>(0);
virtualinvoke v.<javassist.bytecode.Bytecode: void addLdc(java.lang.String)>(v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addInvokestatic(java.lang.String,java.lang.String,java.lang.String)>("java.lang.Class", "forName", "(Ljava/lang/String;)Ljava/lang/Class;");
virtualinvoke v.<javassist.bytecode.Bytecode: void addAstore(int)>(1);
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = v.<javassist.util.proxy.ProxyFactory$Find2MethodsArgs: java.lang.String methodName>;
v = v.<javassist.util.proxy.ProxyFactory$Find2MethodsArgs: java.lang.String delegatorName>;
v = v.<javassist.util.proxy.ProxyFactory$Find2MethodsArgs: int origIndex>;
v = v.<javassist.util.proxy.ProxyFactory$Find2MethodsArgs: java.lang.String descriptor>;
staticinvoke <javassist.util.proxy.ProxyFactory: void callFind2Methods(javassist.bytecode.Bytecode,java.lang.String,java.lang.String,int,java.lang.String,int,int)>(v, v, v, v, v, 1, 0);
goto label;
label:
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(0);
virtualinvoke v.<javassist.bytecode.Bytecode: void addPutstatic(java.lang.String,java.lang.String,java.lang.String)>(v, "_methods_", "[Ljava/lang/reflect/Method;");
virtualinvoke v.<javassist.bytecode.Bytecode: void addLconst(long)>(-1L);
virtualinvoke v.<javassist.bytecode.Bytecode: void addPutstatic(java.lang.String,java.lang.String,java.lang.String)>(v, "serialVersionUID", "J");
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(177);
v = virtualinvoke v.<javassist.bytecode.Bytecode: javassist.bytecode.CodeAttribute toCodeAttribute()>();
virtualinvoke v.<javassist.bytecode.MethodInfo: void setCodeAttribute(javassist.bytecode.CodeAttribute)>(v);
virtualinvoke v.<javassist.bytecode.ClassFile: void addMethod(javassist.bytecode.MethodInfo)>(v);
return;
}
private static void callFind2Methods(javassist.bytecode.Bytecode, java.lang.String, java.lang.String, int, java.lang.String, int, int)
{
javassist.bytecode.Bytecode v;
int v, v, v;
java.lang.Class v;
java.lang.String v, v, v, v;
v := @parameter: javassist.bytecode.Bytecode;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: int;
v = class "Ljavassist/util/proxy/RuntimeSupport;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addLdc(java.lang.String)>(v);
if v != null goto label;
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(1);
goto label;
label:
virtualinvoke v.<javassist.bytecode.Bytecode: void addLdc(java.lang.String)>(v);
label:
virtualinvoke v.<javassist.bytecode.Bytecode: void addIconst(int)>(v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addLdc(java.lang.String)>(v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addInvokestatic(java.lang.String,java.lang.String,java.lang.String)>(v, "find2Methods", "(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/reflect/Method;)V");
return;
}
private static void addSetter(java.lang.String, javassist.bytecode.ClassFile, javassist.bytecode.ConstPool) throws javassist.CannotCompileException
{
javassist.bytecode.ConstPool v;
javassist.bytecode.ClassFile v;
javassist.bytecode.CodeAttribute v;
javassist.bytecode.Bytecode v;
javassist.bytecode.MethodInfo v;
java.lang.String v, v, v;
v := @parameter: java.lang.String;
v := @parameter: javassist.bytecode.ClassFile;
v := @parameter: javassist.bytecode.ConstPool;
v = new javassist.bytecode.MethodInfo;
v = <javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_SETTER_TYPE>;
specialinvoke v.<javassist.bytecode.MethodInfo: void <init>(javassist.bytecode.ConstPool,java.lang.String,java.lang.String)>(v, "setHandler", v);
virtualinvoke v.<javassist.bytecode.MethodInfo: void setAccessFlags(int)>(1);
v = new javassist.bytecode.Bytecode;
specialinvoke v.<javassist.bytecode.Bytecode: void <init>(javassist.bytecode.ConstPool,int,int)>(v, 2, 2);
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(0);
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(1);
v = <javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_TYPE>;
virtualinvoke v.<javassist.bytecode.Bytecode: void addPutfield(java.lang.String,java.lang.String,java.lang.String)>(v, "handler", v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(177);
v = virtualinvoke v.<javassist.bytecode.Bytecode: javassist.bytecode.CodeAttribute toCodeAttribute()>();
virtualinvoke v.<javassist.bytecode.MethodInfo: void setCodeAttribute(javassist.bytecode.CodeAttribute)>(v);
virtualinvoke v.<javassist.bytecode.ClassFile: void addMethod(javassist.bytecode.MethodInfo)>(v);
return;
}
private static void addGetter(java.lang.String, javassist.bytecode.ClassFile, javassist.bytecode.ConstPool) throws javassist.CannotCompileException
{
javassist.bytecode.ConstPool v;
javassist.bytecode.ClassFile v;
javassist.bytecode.CodeAttribute v;
javassist.bytecode.Bytecode v;
javassist.bytecode.MethodInfo v;
java.lang.String v, v, v;
v := @parameter: java.lang.String;
v := @parameter: javassist.bytecode.ClassFile;
v := @parameter: javassist.bytecode.ConstPool;
v = new javassist.bytecode.MethodInfo;
v = <javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_GETTER_TYPE>;
specialinvoke v.<javassist.bytecode.MethodInfo: void <init>(javassist.bytecode.ConstPool,java.lang.String,java.lang.String)>(v, "getHandler", v);
virtualinvoke v.<javassist.bytecode.MethodInfo: void setAccessFlags(int)>(1);
v = new javassist.bytecode.Bytecode;
specialinvoke v.<javassist.bytecode.Bytecode: void <init>(javassist.bytecode.ConstPool,int,int)>(v, 1, 1);
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(0);
v = <javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_TYPE>;
virtualinvoke v.<javassist.bytecode.Bytecode: void addGetfield(java.lang.String,java.lang.String,java.lang.String)>(v, "handler", v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(176);
v = virtualinvoke v.<javassist.bytecode.Bytecode: javassist.bytecode.CodeAttribute toCodeAttribute()>();
virtualinvoke v.<javassist.bytecode.MethodInfo: void setCodeAttribute(javassist.bytecode.CodeAttribute)>(v);
virtualinvoke v.<javassist.bytecode.ClassFile: void addMethod(javassist.bytecode.MethodInfo)>(v);
return;
}
private int overrideMethods(javassist.bytecode.ClassFile, javassist.bytecode.ConstPool, java.lang.String, java.util.List) throws javassist.CannotCompileException
{
javassist.bytecode.ConstPool v;
byte[] v;
int v, v;
java.lang.String v, v, v;
boolean v, v, v;
java.util.Iterator v;
javassist.bytecode.ClassFile v;
java.util.List v, v, v;
java.lang.Object v, v, v, v, v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: javassist.bytecode.ClassFile;
v := @parameter: javassist.bytecode.ConstPool;
v := @parameter: java.lang.String;
v := @parameter: java.util.List;
v = v.<javassist.util.proxy.ProxyFactory: java.util.List signatureMethods>;
v = staticinvoke <javassist.util.proxy.ProxyFactory: java.lang.String makeUniqueName(java.lang.String,java.util.List)>("_d", v);
v = v.<javassist.util.proxy.ProxyFactory: java.util.List signatureMethods>;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
v = 0;
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = <javassist.bytecode.ClassFile: int MAJOR_VERSION>;
if v < 49 goto label;
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = staticinvoke <javassist.util.proxy.ProxyFactory: boolean isBridge(java.lang.reflect.Method)>(v);
if v != 0 goto label;
label:
v = v.<javassist.util.proxy.ProxyFactory: byte[] signature>;
v = specialinvoke v.<javassist.util.proxy.ProxyFactory: boolean testBit(byte[],int)>(v, v);
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getValue()>();
v = staticinvoke <javassist.util.proxy.ProxyFactory: java.lang.String keyToDesc(java.lang.String,java.lang.reflect.Method)>(v, v);
specialinvoke v.<javassist.util.proxy.ProxyFactory: void override(java.lang.String,java.lang.reflect.Method,java.lang.String,int,java.lang.String,javassist.bytecode.ClassFile,javassist.bytecode.ConstPool,java.util.List)>(v, v, v, v, v, v, v, v);
label:
v = v + 1;
goto label;
label:
return v;
}
private static boolean isBridge(java.lang.reflect.Method)
{
java.lang.reflect.Method v;
boolean v;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.reflect.Method: boolean isBridge()>();
return v;
}
private void override(java.lang.String, java.lang.reflect.Method, java.lang.String, int, java.lang.String, javassist.bytecode.ClassFile, javassist.bytecode.ConstPool, java.util.List) throws javassist.CannotCompileException
{
javassist.bytecode.ConstPool v;
int v, v, v, v, v;
java.lang.String v, v, v, v, v;
java.lang.reflect.Method v;
boolean v;
javassist.bytecode.ClassFile v;
java.util.List v;
javassist.bytecode.MethodInfo v, v;
java.lang.Class v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.String;
v := @parameter: java.lang.reflect.Method;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: java.lang.String;
v := @parameter: javassist.bytecode.ClassFile;
v := @parameter: javassist.bytecode.ConstPool;
v := @parameter: java.util.List;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class getDeclaringClass()>();
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,int,java.lang.String)>(v, v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001\u0001\u0001");
v = virtualinvoke v.<java.lang.reflect.Method: int getModifiers()>();
v = staticinvoke <java.lang.reflect.Modifier: boolean isAbstract(int)>(v);
if v == 0 goto label;
v = null;
goto label;
label:
v = specialinvoke v.<javassist.util.proxy.ProxyFactory: javassist.bytecode.MethodInfo makeDelegator(java.lang.reflect.Method,java.lang.String,javassist.bytecode.ConstPool,java.lang.Class,java.lang.String)>(v, v, v, v, v);
v = virtualinvoke v.<javassist.bytecode.MethodInfo: int getAccessFlags()>();
v = (int) -65;
v = v & v;
virtualinvoke v.<javassist.bytecode.MethodInfo: void setAccessFlags(int)>(v);
virtualinvoke v.<javassist.bytecode.ClassFile: void addMethod(javassist.bytecode.MethodInfo)>(v);
label:
v = staticinvoke <javassist.util.proxy.ProxyFactory: javassist.bytecode.MethodInfo makeForwarder(java.lang.String,java.lang.reflect.Method,java.lang.String,javassist.bytecode.ConstPool,java.lang.Class,java.lang.String,int,java.util.List)>(v, v, v, v, v, v, v, v);
virtualinvoke v.<javassist.bytecode.ClassFile: void addMethod(javassist.bytecode.MethodInfo)>(v);
return;
}
private void makeConstructors(java.lang.String, javassist.bytecode.ClassFile, javassist.bytecode.ConstPool, java.lang.String) throws javassist.CannotCompileException
{
javassist.bytecode.ConstPool v;
java.lang.reflect.Constructor v;
java.lang.reflect.Constructor[] v;
int v, v, v;
java.lang.String v, v, v;
boolean v, v, v, v, v, v;
javassist.bytecode.ClassFile v;
javassist.bytecode.MethodInfo v;
java.lang.Class v, v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.String;
v := @parameter: javassist.bytecode.ClassFile;
v := @parameter: javassist.bytecode.ConstPool;
v := @parameter: java.lang.String;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
v = staticinvoke <javassist.util.proxy.SecurityActions: java.lang.reflect.Constructor[] getDeclaredConstructors(java.lang.Class)>(v);
v = v.<javassist.util.proxy.ProxyFactory: boolean factoryUseCache>;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.reflect.Constructor: int getModifiers()>();
v = staticinvoke <java.lang.reflect.Modifier: boolean isFinal(int)>(v);
if v != 0 goto label;
v = staticinvoke <java.lang.reflect.Modifier: boolean isPrivate(int)>(v);
if v != 0 goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.String basename>;
v = staticinvoke <javassist.util.proxy.ProxyFactory: boolean isVisible(int,java.lang.String,java.lang.reflect.Member)>(v, v, v);
if v == 0 goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
v = staticinvoke <javassist.util.proxy.ProxyFactory: javassist.bytecode.MethodInfo makeConstructor(java.lang.String,java.lang.reflect.Constructor,javassist.bytecode.ConstPool,java.lang.Class,boolean)>(v, v, v, v, v);
virtualinvoke v.<javassist.bytecode.ClassFile: void addMethod(javassist.bytecode.MethodInfo)>(v);
label:
v = v + 1;
goto label;
label:
return;
}
private static java.lang.String makeUniqueName(java.lang.String, java.util.List)
{
java.util.Iterator v, v;
java.lang.RuntimeException v;
java.util.List v;
int v;
java.lang.String v, v;
boolean v, v;
v := @parameter: java.lang.String;
v := @parameter: java.util.List;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
v = staticinvoke <javassist.util.proxy.ProxyFactory: boolean makeUniqueName0(java.lang.String,java.util.Iterator)>(v, v);
if v == 0 goto label;
return v;
label:
v = 100;
label:
if v >= 999 goto label;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,int)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001\u0001");
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
v = staticinvoke <javassist.util.proxy.ProxyFactory: boolean makeUniqueName0(java.lang.String,java.util.Iterator)>(v, v);
if v == 0 goto label;
return v;
label:
v = v + 1;
goto label;
label:
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>("cannot make a unique method name");
throw v;
}
private static boolean makeUniqueName0(java.lang.String, java.util.Iterator)
{
java.util.Iterator v;
java.lang.Object v, v;
java.lang.String v;
boolean v, v;
v := @parameter: java.lang.String;
v := @parameter: java.util.Iterator;
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = interfaceinvoke v.<java.util.Map$Entry: java.lang.Object getKey()>();
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>(v);
if v == 0 goto label;
return 0;
label:
return 1;
}
private static boolean isVisible(int, java.lang.String, java.lang.reflect.Member)
{
java.lang.reflect.Member v;
int v, v, v;
java.lang.Class v;
java.lang.String v, v, v, v;
boolean v, v;
v := @parameter: int;
v := @parameter: java.lang.String;
v := @parameter: java.lang.reflect.Member;
v = v & 2;
if v == 0 goto label;
return 0;
label:
v = v & 5;
if v == 0 goto label;
return 1;
label:
v = staticinvoke <javassist.util.proxy.ProxyFactory: java.lang.String getPackageName(java.lang.String)>(v);
v = interfaceinvoke v.<java.lang.reflect.Member: java.lang.Class getDeclaringClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = staticinvoke <javassist.util.proxy.ProxyFactory: java.lang.String getPackageName(java.lang.String)>(v);
if v != null goto label;
if v != null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
return v;
}
private static java.lang.String getPackageName(java.lang.String)
{
int v;
java.lang.String v, v;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: int lastIndexOf(int)>(46);
if v >= 0 goto label;
return null;
label:
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
return v;
}
private java.util.Map getMethods(java.lang.Class, java.lang.Class[])
{
java.lang.Class[] v;
java.util.HashMap v;
java.util.HashSet v;
int v, v;
java.lang.Class v, v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.Class[];
v = new java.util.HashMap;
specialinvoke v.<java.util.HashMap: void <init>()>();
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
specialinvoke v.<javassist.util.proxy.ProxyFactory: void getMethods(java.util.Map,java.lang.Class,java.util.Set)>(v, v, v);
v = v + 1;
goto label;
label:
specialinvoke v.<javassist.util.proxy.ProxyFactory: void getMethods(java.util.Map,java.lang.Class,java.util.Set)>(v, v, v);
return v;
}
private void getMethods(java.util.Map, java.lang.Class, java.util.Set)
{
java.lang.reflect.Method[] v;
java.util.Map v;
java.lang.reflect.Method v, v;
boolean v, v, v, v, v, v, v, v, v;
java.util.Set v;
int v, v, v, v, v, v, v, v, v;
java.lang.String v, v, v;
java.lang.Class[] v;
java.lang.Class v, v, v, v;
java.lang.Object v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.util.Map;
v := @parameter: java.lang.Class;
v := @parameter: java.util.Set;
v = interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
if v != 0 goto label;
return;
label:
v = virtualinvoke v.<java.lang.Class: java.lang.Class[] getInterfaces()>();
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
specialinvoke v.<javassist.util.proxy.ProxyFactory: void getMethods(java.util.Map,java.lang.Class,java.util.Set)>(v, v, v);
v = v + 1;
goto label;
label:
v = virtualinvoke v.<java.lang.Class: java.lang.Class getSuperclass()>();
if v == null goto label;
specialinvoke v.<javassist.util.proxy.ProxyFactory: void getMethods(java.util.Map,java.lang.Class,java.util.Set)>(v, v, v);
label:
v = staticinvoke <javassist.util.proxy.SecurityActions: java.lang.reflect.Method[] getDeclaredMethods(java.lang.Class)>(v);
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.reflect.Method: int getModifiers()>();
v = staticinvoke <java.lang.reflect.Modifier: boolean isPrivate(int)>(v);
if v != 0 goto label;
v = v[v];
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = staticinvoke <javassist.util.proxy.RuntimeSupport: java.lang.String makeDescriptor(java.lang.reflect.Method)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001:\u0001");
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("getHandler:()");
if v == 0 goto label;
v.<javassist.util.proxy.ProxyFactory: boolean hasGetHandler> = 1;
label:
v = interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
if null == v goto label;
v = staticinvoke <javassist.util.proxy.ProxyFactory: boolean isBridge(java.lang.reflect.Method)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class getDeclaringClass()>();
v = virtualinvoke v.<java.lang.Class: int getModifiers()>();
v = staticinvoke <java.lang.reflect.Modifier: boolean isPublic(int)>(v);
if v != 0 goto label;
v = virtualinvoke v.<java.lang.reflect.Method: int getModifiers()>();
v = staticinvoke <java.lang.reflect.Modifier: boolean isAbstract(int)>(v);
if v != 0 goto label;
v = staticinvoke <javassist.util.proxy.ProxyFactory: boolean isDuplicated(int,java.lang.reflect.Method[])>(v, v);
if v != 0 goto label;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
if null == v goto label;
v = virtualinvoke v.<java.lang.reflect.Method: int getModifiers()>();
v = staticinvoke <java.lang.reflect.Modifier: boolean isPublic(int)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.reflect.Method: int getModifiers()>();
v = staticinvoke <java.lang.reflect.Modifier: boolean isPublic(int)>(v);
if v != 0 goto label;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
v = v + 1;
goto label;
label:
return;
}
private static boolean isDuplicated(int, java.lang.reflect.Method[])
{
java.lang.reflect.Method[] v;
int v, v, v;
java.lang.String v, v;
java.lang.reflect.Method v, v, v, v;
boolean v, v;
v := @parameter: int;
v := @parameter: java.lang.reflect.Method[];
v = v[v];
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = 0;
label:
v = lengthof v;
if v >= v goto label;
if v == v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = v[v];
v = v[v];
v = staticinvoke <javassist.util.proxy.ProxyFactory: boolean areParametersSame(java.lang.reflect.Method,java.lang.reflect.Method)>(v, v);
if v == 0 goto label;
return 1;
label:
v = v + 1;
goto label;
label:
return 0;
}
private static boolean areParametersSame(java.lang.reflect.Method, java.lang.reflect.Method)
{
java.lang.Class[] v, v;
int v, v, v, v;
java.lang.Class v, v;
java.lang.String v, v;
java.lang.reflect.Method v, v;
boolean v;
v := @parameter: java.lang.reflect.Method;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = lengthof v;
v = lengthof v;
if v != v goto label;
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = v[v];
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
return 0;
label:
v = v + 1;
goto label;
label:
return 1;
label:
return 0;
}
private static java.lang.String keyToDesc(java.lang.String, java.lang.reflect.Method)
{
int v, v;
java.lang.String v, v;
java.lang.reflect.Method v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(58);
v = v + 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
return v;
}
private static javassist.bytecode.MethodInfo makeConstructor(java.lang.String, java.lang.reflect.Constructor, javassist.bytecode.ConstPool, java.lang.Class, boolean)
{
javassist.bytecode.ConstPool v;
java.lang.reflect.Constructor v;
javassist.bytecode.CodeAttribute v;
int v, v, v;
java.lang.String v, v, v, v, v, v, v, v;
boolean v;
javassist.bytecode.StackMapTable v;
java.lang.Class[] v, v, v;
javassist.bytecode.Bytecode v;
javassist.bytecode.MethodInfo v;
java.lang.Class v, v;
javassist.bytecode.StackMapTable$Writer v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.reflect.Constructor;
v := @parameter: javassist.bytecode.ConstPool;
v := @parameter: java.lang.Class;
v := @parameter: boolean;
v = virtualinvoke v.<java.lang.reflect.Constructor: java.lang.Class[] getParameterTypes()>();
v = <java.lang.Void: java.lang.Class TYPE>;
v = staticinvoke <javassist.util.proxy.RuntimeSupport: java.lang.String makeDescriptor(java.lang.Class[],java.lang.Class)>(v, v);
v = new javassist.bytecode.MethodInfo;
specialinvoke v.<javassist.bytecode.MethodInfo: void <init>(javassist.bytecode.ConstPool,java.lang.String,java.lang.String)>(v, "<init>", v);
virtualinvoke v.<javassist.bytecode.MethodInfo: void setAccessFlags(int)>(1);
v = virtualinvoke v.<java.lang.reflect.Constructor: java.lang.Class[] getExceptionTypes()>();
staticinvoke <javassist.util.proxy.ProxyFactory: void setThrows(javassist.bytecode.MethodInfo,javassist.bytecode.ConstPool,java.lang.Class[])>(v, v, v);
v = new javassist.bytecode.Bytecode;
specialinvoke v.<javassist.bytecode.Bytecode: void <init>(javassist.bytecode.ConstPool,int,int)>(v, 0, 0);
if v == 0 goto label;
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(0);
v = <javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_TYPE>;
virtualinvoke v.<javassist.bytecode.Bytecode: void addGetstatic(java.lang.String,java.lang.String,java.lang.String)>(v, "default_interceptor", v);
v = <javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_TYPE>;
virtualinvoke v.<javassist.bytecode.Bytecode: void addPutfield(java.lang.String,java.lang.String,java.lang.String)>(v, "handler", v);
v = <javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_TYPE>;
virtualinvoke v.<javassist.bytecode.Bytecode: void addGetstatic(java.lang.String,java.lang.String,java.lang.String)>(v, "default_interceptor", v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(199);
virtualinvoke v.<javassist.bytecode.Bytecode: void addIndex(int)>(10);
label:
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(0);
v = <javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_TYPE>;
virtualinvoke v.<javassist.bytecode.Bytecode: void addGetstatic(java.lang.String,java.lang.String,java.lang.String)>("javassist.util.proxy.RuntimeSupport", "default_interceptor", v);
v = <javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_TYPE>;
virtualinvoke v.<javassist.bytecode.Bytecode: void addPutfield(java.lang.String,java.lang.String,java.lang.String)>(v, "handler", v);
v = virtualinvoke v.<javassist.bytecode.Bytecode: int currentPc()>();
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(0);
v = virtualinvoke v.<java.lang.reflect.Constructor: java.lang.Class[] getParameterTypes()>();
v = staticinvoke <javassist.util.proxy.ProxyFactory: int addLoadParameters(javassist.bytecode.Bytecode,java.lang.Class[],int)>(v, v, 1);
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
virtualinvoke v.<javassist.bytecode.Bytecode: void addInvokespecial(java.lang.String,java.lang.String,java.lang.String)>(v, "<init>", v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(177);
v = v + 1;
virtualinvoke v.<javassist.bytecode.Bytecode: void setMaxLocals(int)>(v);
v = virtualinvoke v.<javassist.bytecode.Bytecode: javassist.bytecode.CodeAttribute toCodeAttribute()>();
virtualinvoke v.<javassist.bytecode.MethodInfo: void setCodeAttribute(javassist.bytecode.CodeAttribute)>(v);
v = new javassist.bytecode.StackMapTable$Writer;
specialinvoke v.<javassist.bytecode.StackMapTable$Writer: void <init>(int)>(32);
virtualinvoke v.<javassist.bytecode.StackMapTable$Writer: void sameFrame(int)>(v);
v = virtualinvoke v.<javassist.bytecode.StackMapTable$Writer: javassist.bytecode.StackMapTable toStackMapTable(javassist.bytecode.ConstPool)>(v);
virtualinvoke v.<javassist.bytecode.CodeAttribute: void setAttribute(javassist.bytecode.StackMapTable)>(v);
return v;
}
private javassist.bytecode.MethodInfo makeDelegator(java.lang.reflect.Method, java.lang.String, javassist.bytecode.ConstPool, java.lang.Class, java.lang.String)
{
javassist.bytecode.ConstPool v;
javassist.bytecode.CodeAttribute v;
int v, v, v, v, v, v, v;
java.lang.String v, v, v, v;
java.lang.reflect.Method v;
boolean v;
java.lang.Class[] v;
javassist.bytecode.Bytecode v;
javassist.bytecode.MethodInfo v;
java.lang.Class v, v, v;
javassist.util.proxy.ProxyFactory v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.reflect.Method;
v := @parameter: java.lang.String;
v := @parameter: javassist.bytecode.ConstPool;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.String;
v = new javassist.bytecode.MethodInfo;
specialinvoke v.<javassist.bytecode.MethodInfo: void <init>(javassist.bytecode.ConstPool,java.lang.String,java.lang.String)>(v, v, v);
v = virtualinvoke v.<java.lang.reflect.Method: int getModifiers()>();
v = (int) -1319;
v = v & v;
v = 17 | v;
virtualinvoke v.<javassist.bytecode.MethodInfo: void setAccessFlags(int)>(v);
staticinvoke <javassist.util.proxy.ProxyFactory: void setThrows(javassist.bytecode.MethodInfo,javassist.bytecode.ConstPool,java.lang.reflect.Method)>(v, v, v);
v = new javassist.bytecode.Bytecode;
specialinvoke v.<javassist.bytecode.Bytecode: void <init>(javassist.bytecode.ConstPool,int,int)>(v, 0, 0);
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(0);
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
v = staticinvoke <javassist.util.proxy.ProxyFactory: int addLoadParameters(javassist.bytecode.Bytecode,java.lang.Class[],int)>(v, v, 1);
v = specialinvoke v.<javassist.util.proxy.ProxyFactory: java.lang.Class invokespecialTarget(java.lang.Class)>(v);
v = virtualinvoke v.<java.lang.Class: boolean isInterface()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<javassist.bytecode.ConstPool: int addClassInfo(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
virtualinvoke v.<javassist.bytecode.Bytecode: void addInvokespecial(boolean,int,java.lang.String,java.lang.String)>(v, v, v, v);
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class getReturnType()>();
staticinvoke <javassist.util.proxy.ProxyFactory: int addReturn(javassist.bytecode.Bytecode,java.lang.Class)>(v, v);
v = v + 1;
virtualinvoke v.<javassist.bytecode.Bytecode: void setMaxLocals(int)>(v);
v = virtualinvoke v.<javassist.bytecode.Bytecode: javassist.bytecode.CodeAttribute toCodeAttribute()>();
virtualinvoke v.<javassist.bytecode.MethodInfo: void setCodeAttribute(javassist.bytecode.CodeAttribute)>(v);
return v;
}
private java.lang.Class invokespecialTarget(java.lang.Class)
{
java.lang.Class[] v;
int v, v;
java.lang.Class v, v, v;
javassist.util.proxy.ProxyFactory v;
boolean v, v;
v := @this: javassist.util.proxy.ProxyFactory;
v := @parameter: java.lang.Class;
v = virtualinvoke v.<java.lang.Class: boolean isInterface()>();
if v == 0 goto label;
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class[] interfaces>;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.Class: boolean isAssignableFrom(java.lang.Class)>(v);
if v == 0 goto label;
return v;
label:
v = v + 1;
goto label;
label:
v = v.<javassist.util.proxy.ProxyFactory: java.lang.Class superClass>;
return v;
}
private static javassist.bytecode.MethodInfo makeForwarder(java.lang.String, java.lang.reflect.Method, java.lang.String, javassist.bytecode.ConstPool, java.lang.Class, java.lang.String, int, java.util.List)
{
javassist.bytecode.ConstPool v;
javassist.bytecode.CodeAttribute v;
int v, v, v, v, v, v, v, v, v, v, v;
java.lang.String v, v, v, v, v, v, v;
java.lang.reflect.Method v;
javassist.util.proxy.ProxyFactory$Find2MethodsArgs v;
java.lang.Class[] v;
java.util.List v;
javassist.bytecode.Bytecode v;
javassist.bytecode.MethodInfo v;
java.lang.Class v, v, v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.reflect.Method;
v := @parameter: java.lang.String;
v := @parameter: javassist.bytecode.ConstPool;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: java.util.List;
v = new javassist.bytecode.MethodInfo;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
specialinvoke v.<javassist.bytecode.MethodInfo: void <init>(javassist.bytecode.ConstPool,java.lang.String,java.lang.String)>(v, v, v);
v = virtualinvoke v.<java.lang.reflect.Method: int getModifiers()>();
v = (int) -1313;
v = v & v;
v = 16 | v;
virtualinvoke v.<javassist.bytecode.MethodInfo: void setAccessFlags(int)>(v);
staticinvoke <javassist.util.proxy.ProxyFactory: void setThrows(javassist.bytecode.MethodInfo,javassist.bytecode.ConstPool,java.lang.reflect.Method)>(v, v, v);
v = staticinvoke <javassist.bytecode.Descriptor: int paramSize(java.lang.String)>(v);
v = new javassist.bytecode.Bytecode;
v = v + 2;
specialinvoke v.<javassist.bytecode.Bytecode: void <init>(javassist.bytecode.ConstPool,int,int)>(v, 0, v);
v = v * 2;
v = v * 2;
v = v + 1;
v = v + 1;
virtualinvoke v.<javassist.bytecode.Bytecode: void addGetstatic(java.lang.String,java.lang.String,java.lang.String)>(v, "_methods_", "[Ljava/lang/reflect/Method;");
virtualinvoke v.<javassist.bytecode.Bytecode: void addAstore(int)>(v);
v = new javassist.util.proxy.ProxyFactory$Find2MethodsArgs;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
specialinvoke v.<javassist.util.proxy.ProxyFactory$Find2MethodsArgs: void <init>(java.lang.String,java.lang.String,java.lang.String,int)>(v, v, v, v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(0);
v = <javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_TYPE>;
virtualinvoke v.<javassist.bytecode.Bytecode: void addGetfield(java.lang.String,java.lang.String,java.lang.String)>(v, "handler", v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(0);
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addIconst(int)>(v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(50);
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addIconst(int)>(v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(50);
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getParameterTypes()>();
staticinvoke <javassist.util.proxy.ProxyFactory: void makeParameterList(javassist.bytecode.Bytecode,java.lang.Class[])>(v, v);
v = class "Ljavassist/util/proxy/MethodHandler;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
virtualinvoke v.<javassist.bytecode.Bytecode: void addInvokeinterface(java.lang.String,java.lang.String,java.lang.String,int)>(v, "invoke", "(Ljava/lang/Object;Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;", 5);
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class getReturnType()>();
staticinvoke <javassist.util.proxy.ProxyFactory: void addUnwrapper(javassist.bytecode.Bytecode,java.lang.Class)>(v, v);
staticinvoke <javassist.util.proxy.ProxyFactory: int addReturn(javassist.bytecode.Bytecode,java.lang.Class)>(v, v);
v = virtualinvoke v.<javassist.bytecode.Bytecode: javassist.bytecode.CodeAttribute toCodeAttribute()>();
virtualinvoke v.<javassist.bytecode.MethodInfo: void setCodeAttribute(javassist.bytecode.CodeAttribute)>(v);
return v;
}
private static void setThrows(javassist.bytecode.MethodInfo, javassist.bytecode.ConstPool, java.lang.reflect.Method)
{
javassist.bytecode.ConstPool v;
java.lang.Class[] v;
javassist.bytecode.MethodInfo v;
java.lang.reflect.Method v;
v := @parameter: javassist.bytecode.MethodInfo;
v := @parameter: javassist.bytecode.ConstPool;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.Class[] getExceptionTypes()>();
staticinvoke <javassist.util.proxy.ProxyFactory: void setThrows(javassist.bytecode.MethodInfo,javassist.bytecode.ConstPool,java.lang.Class[])>(v, v, v);
return;
}
private static void setThrows(javassist.bytecode.MethodInfo, javassist.bytecode.ConstPool, java.lang.Class[])
{
javassist.bytecode.ConstPool v;
javassist.bytecode.ExceptionsAttribute v;
java.lang.Class[] v;
java.lang.String[] v;
int v, v, v, v;
javassist.bytecode.MethodInfo v;
java.lang.Class v;
java.lang.String v;
v := @parameter: javassist.bytecode.MethodInfo;
v := @parameter: javassist.bytecode.ConstPool;
v := @parameter: java.lang.Class[];
v = lengthof v;
if v != 0 goto label;
return;
label:
v = lengthof v;
v = newarray (java.lang.String)[v];
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v[v] = v;
v = v + 1;
goto label;
label:
v = new javassist.bytecode.ExceptionsAttribute;
specialinvoke v.<javassist.bytecode.ExceptionsAttribute: void <init>(javassist.bytecode.ConstPool)>(v);
virtualinvoke v.<javassist.bytecode.ExceptionsAttribute: void setExceptions(java.lang.String[])>(v);
virtualinvoke v.<javassist.bytecode.MethodInfo: void setExceptionsAttribute(javassist.bytecode.ExceptionsAttribute)>(v);
return;
}
private static int addLoadParameters(javassist.bytecode.Bytecode, java.lang.Class[], int)
{
java.lang.Class[] v;
javassist.bytecode.Bytecode v;
int v, v, v, v, v, v;
java.lang.Class v;
v := @parameter: javassist.bytecode.Bytecode;
v := @parameter: java.lang.Class[];
v := @parameter: int;
v = 0;
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v + v;
v = v[v];
v = staticinvoke <javassist.util.proxy.ProxyFactory: int addLoad(javassist.bytecode.Bytecode,int,java.lang.Class)>(v, v, v);
v = v + v;
v = v + 1;
goto label;
label:
return v;
}
private static int addLoad(javassist.bytecode.Bytecode, int, java.lang.Class)
{
javassist.bytecode.Bytecode v;
int v;
java.lang.Class v, v, v, v;
boolean v;
v := @parameter: javassist.bytecode.Bytecode;
v := @parameter: int;
v := @parameter: java.lang.Class;
v = virtualinvoke v.<java.lang.Class: boolean isPrimitive()>();
if v == 0 goto label;
v = <java.lang.Long: java.lang.Class TYPE>;
if v != v goto label;
virtualinvoke v.<javassist.bytecode.Bytecode: void addLload(int)>(v);
return 2;
label:
v = <java.lang.Float: java.lang.Class TYPE>;
if v != v goto label;
virtualinvoke v.<javassist.bytecode.Bytecode: void addFload(int)>(v);
goto label;
label:
v = <java.lang.Double: java.lang.Class TYPE>;
if v != v goto label;
virtualinvoke v.<javassist.bytecode.Bytecode: void addDload(int)>(v);
return 2;
label:
virtualinvoke v.<javassist.bytecode.Bytecode: void addIload(int)>(v);
goto label;
label:
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(v);
label:
return 1;
}
private static int addReturn(javassist.bytecode.Bytecode, java.lang.Class)
{
javassist.bytecode.Bytecode v;
java.lang.Class v, v, v, v, v;
boolean v;
v := @parameter: javassist.bytecode.Bytecode;
v := @parameter: java.lang.Class;
v = virtualinvoke v.<java.lang.Class: boolean isPrimitive()>();
if v == 0 goto label;
v = <java.lang.Long: java.lang.Class TYPE>;
if v != v goto label;
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(173);
return 2;
label:
v = <java.lang.Float: java.lang.Class TYPE>;
if v != v goto label;
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(174);
goto label;
label:
v = <java.lang.Double: java.lang.Class TYPE>;
if v != v goto label;
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(175);
return 2;
label:
v = <java.lang.Void: java.lang.Class TYPE>;
if v != v goto label;
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(177);
return 0;
label:
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(172);
goto label;
label:
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(176);
label:
return 1;
}
private static void makeParameterList(javassist.bytecode.Bytecode, java.lang.Class[])
{
javassist.bytecode.Bytecode v;
int v, v, v;
java.lang.Class[] v;
java.lang.Class v;
boolean v;
v := @parameter: javassist.bytecode.Bytecode;
v := @parameter: java.lang.Class[];
v = 1;
v = lengthof v;
virtualinvoke v.<javassist.bytecode.Bytecode: void addIconst(int)>(v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addAnewarray(java.lang.String)>("java/lang/Object");
v = 0;
label:
if v >= v goto label;
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(89);
virtualinvoke v.<javassist.bytecode.Bytecode: void addIconst(int)>(v);
v = v[v];
v = virtualinvoke v.<java.lang.Class: boolean isPrimitive()>();
if v == 0 goto label;
v = staticinvoke <javassist.util.proxy.ProxyFactory: int makeWrapper(javassist.bytecode.Bytecode,java.lang.Class,int)>(v, v, v);
goto label;
label:
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(v);
v = v + 1;
label:
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(83);
v = v + 1;
goto label;
label:
return;
}
private static int makeWrapper(javassist.bytecode.Bytecode, java.lang.Class, int)
{
java.lang.String[] v, v;
javassist.bytecode.Bytecode v;
int[] v;
int v, v, v, v;
java.lang.Class v;
java.lang.String v, v;
v := @parameter: javassist.bytecode.Bytecode;
v := @parameter: java.lang.Class;
v := @parameter: int;
v = staticinvoke <javassist.util.proxy.FactoryHelper: int typeIndex(java.lang.Class)>(v);
v = <javassist.util.proxy.FactoryHelper: java.lang.String[] wrapperTypes>;
v = v[v];
virtualinvoke v.<javassist.bytecode.Bytecode: void addNew(java.lang.String)>(v);
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(89);
staticinvoke <javassist.util.proxy.ProxyFactory: int addLoad(javassist.bytecode.Bytecode,int,java.lang.Class)>(v, v, v);
v = <javassist.util.proxy.FactoryHelper: java.lang.String[] wrapperDesc>;
v = v[v];
virtualinvoke v.<javassist.bytecode.Bytecode: void addInvokespecial(java.lang.String,java.lang.String,java.lang.String)>(v, "<init>", v);
v = <javassist.util.proxy.FactoryHelper: int[] dataSize>;
v = v[v];
v = v + v;
return v;
}
private static void addUnwrapper(javassist.bytecode.Bytecode, java.lang.Class)
{
java.lang.String[] v, v, v;
javassist.bytecode.Bytecode v;
int v;
java.lang.Class v, v;
java.lang.String v, v, v, v;
boolean v;
v := @parameter: javassist.bytecode.Bytecode;
v := @parameter: java.lang.Class;
v = virtualinvoke v.<java.lang.Class: boolean isPrimitive()>();
if v == 0 goto label;
v = <java.lang.Void: java.lang.Class TYPE>;
if v != v goto label;
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(87);
goto label;
label:
v = staticinvoke <javassist.util.proxy.FactoryHelper: int typeIndex(java.lang.Class)>(v);
v = <javassist.util.proxy.FactoryHelper: java.lang.String[] wrapperTypes>;
v = v[v];
virtualinvoke v.<javassist.bytecode.Bytecode: void addCheckcast(java.lang.String)>(v);
v = <javassist.util.proxy.FactoryHelper: java.lang.String[] unwarpMethods>;
v = v[v];
v = <javassist.util.proxy.FactoryHelper: java.lang.String[] unwrapDesc>;
v = v[v];
virtualinvoke v.<javassist.bytecode.Bytecode: void addInvokevirtual(java.lang.String,java.lang.String,java.lang.String)>(v, v, v);
goto label;
label:
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
virtualinvoke v.<javassist.bytecode.Bytecode: void addCheckcast(java.lang.String)>(v);
label:
return;
}
private static javassist.bytecode.MethodInfo makeWriteReplace(javassist.bytecode.ConstPool)
{
javassist.bytecode.ConstPool v;
javassist.bytecode.CodeAttribute v;
javassist.bytecode.Bytecode v;
javassist.bytecode.ExceptionsAttribute v;
javassist.bytecode.MethodInfo v;
java.lang.String[] v;
v := @parameter: javassist.bytecode.ConstPool;
v = new javassist.bytecode.MethodInfo;
specialinvoke v.<javassist.bytecode.MethodInfo: void <init>(javassist.bytecode.ConstPool,java.lang.String,java.lang.String)>(v, "writeReplace", "()Ljava/lang/Object;");
v = newarray (java.lang.String)[1];
v[0] = "java.io.ObjectStreamException";
v = new javassist.bytecode.ExceptionsAttribute;
specialinvoke v.<javassist.bytecode.ExceptionsAttribute: void <init>(javassist.bytecode.ConstPool)>(v);
virtualinvoke v.<javassist.bytecode.ExceptionsAttribute: void setExceptions(java.lang.String[])>(v);
virtualinvoke v.<javassist.bytecode.MethodInfo: void setExceptionsAttribute(javassist.bytecode.ExceptionsAttribute)>(v);
v = new javassist.bytecode.Bytecode;
specialinvoke v.<javassist.bytecode.Bytecode: void <init>(javassist.bytecode.ConstPool,int,int)>(v, 0, 1);
virtualinvoke v.<javassist.bytecode.Bytecode: void addAload(int)>(0);
virtualinvoke v.<javassist.bytecode.Bytecode: void addInvokestatic(java.lang.String,java.lang.String,java.lang.String)>("javassist.util.proxy.RuntimeSupport", "makeSerializedProxy", "(Ljava/lang/Object;)Ljavassist/util/proxy/SerializedProxy;");
virtualinvoke v.<javassist.bytecode.Bytecode: void addOpcode(int)>(176);
v = virtualinvoke v.<javassist.bytecode.Bytecode: javassist.bytecode.CodeAttribute toCodeAttribute()>();
virtualinvoke v.<javassist.bytecode.MethodInfo: void setCodeAttribute(javassist.bytecode.CodeAttribute)>(v);
return v;
}
static void <clinit>()
{
javassist.util.proxy.ProxyFactory$2 v;
javassist.util.proxy.ProxyFactory$3 v;
javassist.util.proxy.ProxyFactory$1 v;
char[] v;
java.lang.Class v;
java.lang.String v, v, v, v, v, v, v;
java.util.WeakHashMap v;
<javassist.util.proxy.ProxyFactory: boolean onlyPublicMethods> = 0;
<javassist.util.proxy.ProxyFactory: java.lang.Class OBJECT_TYPE> = class "Ljava/lang/Object;";
v = class "Ljavassist/util/proxy/MethodHandler;";
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: java.lang.String replace(char,char)>(46, 47);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("L\u;");
<javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_TYPE> = v;
v = <javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_TYPE>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("(\u)V");
<javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_SETTER_TYPE> = v;
v = <javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_TYPE>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("()\u0001");
<javassist.util.proxy.ProxyFactory: java.lang.String HANDLER_GETTER_TYPE> = v;
<javassist.util.proxy.ProxyFactory: boolean useCache> = 1;
<javassist.util.proxy.ProxyFactory: boolean useWriteReplace> = 1;
v = new java.util.WeakHashMap;
specialinvoke v.<java.util.WeakHashMap: void <init>()>();
<javassist.util.proxy.ProxyFactory: java.util.Map proxyCache> = v;
v = newarray (char)[16];
v[0] = 48;
v[1] = 49;
v[2] = 50;
v[3] = 51;
v[4] = 52;
v[5] = 53;
v[6] = 54;
v[7] = 55;
v[8] = 56;
v[9] = 57;
v[10] = 97;
v[11] = 98;
v[12] = 99;
v[13] = 100;
v[14] = 101;
v[15] = 102;
<javassist.util.proxy.ProxyFactory: char[] hexDigits> = v;
v = new javassist.util.proxy.ProxyFactory$1;
specialinvoke v.<javassist.util.proxy.ProxyFactory$1: void <init>()>();
<javassist.util.proxy.ProxyFactory: javassist.util.proxy.ProxyFactory$ClassLoaderProvider classLoaderProvider> = v;
v = new javassist.util.proxy.ProxyFactory$2;
specialinvoke v.<javassist.util.proxy.ProxyFactory$2: void <init>()>();
<javassist.util.proxy.ProxyFactory: javassist.util.proxy.ProxyFactory$UniqueName nameGenerator> = v;
v = new javassist.util.proxy.ProxyFactory$3;
specialinvoke v.<javassist.util.proxy.ProxyFactory$3: void <init>()>();
<javassist.util.proxy.ProxyFactory: java.util.Comparator sorter> = v;
return;
}
}