public class org.apache.ibatis.javassist.tools.reflect.Reflection extends java.lang.Object implements org.apache.ibatis.javassist.Translator
{
static final java.lang.String classobjectField;
static final java.lang.String classobjectAccessor;
static final java.lang.String metaobjectField;
static final java.lang.String metaobjectGetter;
static final java.lang.String metaobjectSetter;
static final java.lang.String readPrefix;
static final java.lang.String writePrefix;
static final java.lang.String metaobjectClassName;
static final java.lang.String classMetaobjectClassName;
protected org.apache.ibatis.javassist.CtMethod trapMethod;
protected org.apache.ibatis.javassist.CtMethod trapStaticMethod;
protected org.apache.ibatis.javassist.CtMethod trapRead;
protected org.apache.ibatis.javassist.CtMethod trapWrite;
protected org.apache.ibatis.javassist.CtClass[] readParam;
protected org.apache.ibatis.javassist.ClassPool classPool;
protected org.apache.ibatis.javassist.CodeConverter converter;
private boolean isExcluded(java.lang.String)
{
java.lang.String v;
org.apache.ibatis.javassist.tools.reflect.Reflection v;
boolean v, v, v, v, v, v, v;
v := @this: org.apache.ibatis.javassist.tools.reflect.Reflection;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("_m_");
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("_getClass");
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("_setMetaobject");
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("_getMetaobject");
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("_r_");
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("_w_");
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public void <init>()
{
org.apache.ibatis.javassist.CodeConverter v;
org.apache.ibatis.javassist.tools.reflect.Reflection v;
v := @this: org.apache.ibatis.javassist.tools.reflect.Reflection;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.ClassPool classPool> = null;
v = new org.apache.ibatis.javassist.CodeConverter;
specialinvoke v.<org.apache.ibatis.javassist.CodeConverter: void <init>()>();
v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.CodeConverter converter> = v;
return;
}
public void start(org.apache.ibatis.javassist.ClassPool) throws org.apache.ibatis.javassist.NotFoundException
{
org.apache.ibatis.javassist.ClassPool v, v, v;
org.apache.ibatis.javassist.CtClass v, v;
org.apache.ibatis.javassist.bytecode.BadBytecode v;
org.apache.ibatis.javassist.CtClass[] v;
org.apache.ibatis.javassist.NotFoundException v;
org.apache.ibatis.javassist.bytecode.ClassFile v;
java.lang.RuntimeException v, v;
org.apache.ibatis.javassist.CtMethod v, v, v, v;
org.apache.ibatis.javassist.tools.reflect.Reflection v;
v := @this: org.apache.ibatis.javassist.tools.reflect.Reflection;
v := @parameter: org.apache.ibatis.javassist.ClassPool;
v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.ClassPool classPool> = v;
label:
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.ClassPool classPool>;
v = virtualinvoke v.<org.apache.ibatis.javassist.ClassPool: org.apache.ibatis.javassist.CtClass get(java.lang.String)>("org.apache.ibatis.javassist.tools.reflect.Sample");
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: org.apache.ibatis.javassist.bytecode.ClassFile getClassFile()>();
virtualinvoke v.<org.apache.ibatis.javassist.tools.reflect.Reflection: void rebuildClassFile(org.apache.ibatis.javassist.bytecode.ClassFile)>(v);
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: org.apache.ibatis.javassist.CtMethod getDeclaredMethod(java.lang.String)>("trap");
v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.CtMethod trapMethod> = v;
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: org.apache.ibatis.javassist.CtMethod getDeclaredMethod(java.lang.String)>("trapStatic");
v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.CtMethod trapStaticMethod> = v;
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: org.apache.ibatis.javassist.CtMethod getDeclaredMethod(java.lang.String)>("trapRead");
v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.CtMethod trapRead> = v;
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: org.apache.ibatis.javassist.CtMethod getDeclaredMethod(java.lang.String)>("trapWrite");
v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.CtMethod trapWrite> = v;
v = newarray (org.apache.ibatis.javassist.CtClass)[1];
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.ClassPool classPool>;
v = virtualinvoke v.<org.apache.ibatis.javassist.ClassPool: org.apache.ibatis.javassist.CtClass get(java.lang.String)>("java.lang.Object");
v[0] = v;
v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.CtClass[] readParam> = v;
label:
goto label;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>("org.apache.ibatis.javassist.tools.reflect.Sample is not found or broken.");
throw v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.String)>("org.apache.ibatis.javassist.tools.reflect.Sample is not found or broken.");
throw v;
label:
return;
catch org.apache.ibatis.javassist.NotFoundException from label to label with label;
catch org.apache.ibatis.javassist.bytecode.BadBytecode from label to label with label;
}
public void onLoad(org.apache.ibatis.javassist.ClassPool, java.lang.String) throws org.apache.ibatis.javassist.CannotCompileException, org.apache.ibatis.javassist.NotFoundException
{
org.apache.ibatis.javassist.ClassPool v;
org.apache.ibatis.javassist.CodeConverter v;
java.lang.String v;
org.apache.ibatis.javassist.CtClass v;
org.apache.ibatis.javassist.tools.reflect.Reflection v;
v := @this: org.apache.ibatis.javassist.tools.reflect.Reflection;
v := @parameter: org.apache.ibatis.javassist.ClassPool;
v := @parameter: java.lang.String;
v = virtualinvoke v.<org.apache.ibatis.javassist.ClassPool: org.apache.ibatis.javassist.CtClass get(java.lang.String)>(v);
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.CodeConverter converter>;
virtualinvoke v.<org.apache.ibatis.javassist.CtClass: void instrument(org.apache.ibatis.javassist.CodeConverter)>(v);
return;
}
public boolean makeReflective(java.lang.String, java.lang.String, java.lang.String) throws org.apache.ibatis.javassist.CannotCompileException, org.apache.ibatis.javassist.NotFoundException
{
org.apache.ibatis.javassist.ClassPool v, v, v;
org.apache.ibatis.javassist.CtClass v, v, v;
java.lang.String v, v, v;
org.apache.ibatis.javassist.tools.reflect.Reflection v;
boolean v;
v := @this: org.apache.ibatis.javassist.tools.reflect.Reflection;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.ClassPool classPool>;
v = virtualinvoke v.<org.apache.ibatis.javassist.ClassPool: org.apache.ibatis.javassist.CtClass get(java.lang.String)>(v);
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.ClassPool classPool>;
v = virtualinvoke v.<org.apache.ibatis.javassist.ClassPool: org.apache.ibatis.javassist.CtClass get(java.lang.String)>(v);
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.ClassPool classPool>;
v = virtualinvoke v.<org.apache.ibatis.javassist.ClassPool: org.apache.ibatis.javassist.CtClass get(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.ibatis.javassist.tools.reflect.Reflection: boolean makeReflective(org.apache.ibatis.javassist.CtClass,org.apache.ibatis.javassist.CtClass,org.apache.ibatis.javassist.CtClass)>(v, v, v);
return v;
}
public boolean makeReflective(java.lang.Class, java.lang.Class, java.lang.Class) throws org.apache.ibatis.javassist.CannotCompileException, org.apache.ibatis.javassist.NotFoundException
{
java.lang.Class v, v, v;
java.lang.String v, v, v;
org.apache.ibatis.javassist.tools.reflect.Reflection v;
boolean v;
v := @this: org.apache.ibatis.javassist.tools.reflect.Reflection;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.Class;
v := @parameter: java.lang.Class;
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = virtualinvoke v.<org.apache.ibatis.javassist.tools.reflect.Reflection: boolean makeReflective(java.lang.String,java.lang.String,java.lang.String)>(v, v, v);
return v;
}
public boolean makeReflective(org.apache.ibatis.javassist.CtClass, org.apache.ibatis.javassist.CtClass, org.apache.ibatis.javassist.CtClass) throws org.apache.ibatis.javassist.CannotCompileException, org.apache.ibatis.javassist.tools.reflect.CannotReflectException, org.apache.ibatis.javassist.NotFoundException
{
org.apache.ibatis.javassist.ClassPool v, v;
org.apache.ibatis.javassist.CtClass v, v, v, v, v;
java.lang.String v, v, v, v, v, v;
org.apache.ibatis.javassist.tools.reflect.CannotReflectException v, v, v;
boolean v, v, v, v;
org.apache.ibatis.javassist.tools.reflect.Reflection v;
v := @this: org.apache.ibatis.javassist.tools.reflect.Reflection;
v := @parameter: org.apache.ibatis.javassist.CtClass;
v := @parameter: org.apache.ibatis.javassist.CtClass;
v := @parameter: org.apache.ibatis.javassist.CtClass;
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: boolean isInterface()>();
if v == 0 goto label;
v = new org.apache.ibatis.javassist.tools.reflect.CannotReflectException;
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: java.lang.String getName()>();
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[])>("Cannot reflect an interface: \u0001");
specialinvoke v.<org.apache.ibatis.javassist.tools.reflect.CannotReflectException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.ClassPool classPool>;
v = virtualinvoke v.<org.apache.ibatis.javassist.ClassPool: org.apache.ibatis.javassist.CtClass get(java.lang.String)>("org.apache.ibatis.javassist.tools.reflect.ClassMetaobject");
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: boolean subclassOf(org.apache.ibatis.javassist.CtClass)>(v);
if v == 0 goto label;
v = new org.apache.ibatis.javassist.tools.reflect.CannotReflectException;
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: java.lang.String getName()>();
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[])>("Cannot reflect a subclass of ClassMetaobject: \u0001");
specialinvoke v.<org.apache.ibatis.javassist.tools.reflect.CannotReflectException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.ClassPool classPool>;
v = virtualinvoke v.<org.apache.ibatis.javassist.ClassPool: org.apache.ibatis.javassist.CtClass get(java.lang.String)>("org.apache.ibatis.javassist.tools.reflect.Metaobject");
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: boolean subclassOf(org.apache.ibatis.javassist.CtClass)>(v);
if v == 0 goto label;
v = new org.apache.ibatis.javassist.tools.reflect.CannotReflectException;
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: java.lang.String getName()>();
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[])>("Cannot reflect a subclass of Metaobject: \u0001");
specialinvoke v.<org.apache.ibatis.javassist.tools.reflect.CannotReflectException: void <init>(java.lang.String)>(v);
throw v;
label:
specialinvoke v.<org.apache.ibatis.javassist.tools.reflect.Reflection: void registerReflectiveClass(org.apache.ibatis.javassist.CtClass)>(v);
v = specialinvoke v.<org.apache.ibatis.javassist.tools.reflect.Reflection: boolean modifyClassfile(org.apache.ibatis.javassist.CtClass,org.apache.ibatis.javassist.CtClass,org.apache.ibatis.javassist.CtClass)>(v, v, v);
return v;
}
private void registerReflectiveClass(org.apache.ibatis.javassist.CtClass)
{
org.apache.ibatis.javassist.CtField[] v;
org.apache.ibatis.javassist.CtClass v;
int v, v, v, v, v;
org.apache.ibatis.javassist.CodeConverter v, v;
java.lang.String v, v, v;
org.apache.ibatis.javassist.CtField v;
org.apache.ibatis.javassist.tools.reflect.Reflection v;
v := @this: org.apache.ibatis.javassist.tools.reflect.Reflection;
v := @parameter: org.apache.ibatis.javassist.CtClass;
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: org.apache.ibatis.javassist.CtField[] getDeclaredFields()>();
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<org.apache.ibatis.javassist.CtField: int getModifiers()>();
v = v & 1;
if v == 0 goto label;
v = v & 16;
if v != 0 goto label;
v = virtualinvoke v.<org.apache.ibatis.javassist.CtField: java.lang.String getName()>();
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.CodeConverter converter>;
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[])>("_r_\u0001");
virtualinvoke v.<org.apache.ibatis.javassist.CodeConverter: void replaceFieldRead(org.apache.ibatis.javassist.CtField,org.apache.ibatis.javassist.CtClass,java.lang.String)>(v, v, v);
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.CodeConverter converter>;
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[])>("_w_\u0001");
virtualinvoke v.<org.apache.ibatis.javassist.CodeConverter: void replaceFieldWrite(org.apache.ibatis.javassist.CtField,org.apache.ibatis.javassist.CtClass,java.lang.String)>(v, v, v);
label:
v = v + 1;
goto label;
label:
return;
}
private boolean modifyClassfile(org.apache.ibatis.javassist.CtClass, org.apache.ibatis.javassist.CtClass, org.apache.ibatis.javassist.CtClass) throws org.apache.ibatis.javassist.CannotCompileException, org.apache.ibatis.javassist.NotFoundException
{
byte[] v, v;
org.apache.ibatis.javassist.ClassPool v, v, v;
java.lang.String[] v;
org.apache.ibatis.javassist.CtClass v, v, v, v, v, v;
java.lang.String v;
org.apache.ibatis.javassist.CtField v, v;
boolean v, v, v;
org.apache.ibatis.javassist.CtField$Initializer v, v;
org.apache.ibatis.javassist.CtMethod v, v, v;
org.apache.ibatis.javassist.tools.reflect.Reflection v;
v := @this: org.apache.ibatis.javassist.tools.reflect.Reflection;
v := @parameter: org.apache.ibatis.javassist.CtClass;
v := @parameter: org.apache.ibatis.javassist.CtClass;
v := @parameter: org.apache.ibatis.javassist.CtClass;
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: byte[] getAttribute(java.lang.String)>("Reflective");
if v == null goto label;
return 0;
label:
v = newarray (byte)[0];
virtualinvoke v.<org.apache.ibatis.javassist.CtClass: void setAttribute(java.lang.String,byte[])>("Reflective", v);
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.ClassPool classPool>;
v = virtualinvoke v.<org.apache.ibatis.javassist.ClassPool: org.apache.ibatis.javassist.CtClass get(java.lang.String)>("org.apache.ibatis.javassist.tools.reflect.Metalevel");
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: boolean subtypeOf(org.apache.ibatis.javassist.CtClass)>(v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
if v == 0 goto label;
virtualinvoke v.<org.apache.ibatis.javassist.CtClass: void addInterface(org.apache.ibatis.javassist.CtClass)>(v);
label:
specialinvoke v.<org.apache.ibatis.javassist.tools.reflect.Reflection: void processMethods(org.apache.ibatis.javassist.CtClass,boolean)>(v, v);
specialinvoke v.<org.apache.ibatis.javassist.tools.reflect.Reflection: void processFields(org.apache.ibatis.javassist.CtClass)>(v);
if v == 0 goto label;
v = new org.apache.ibatis.javassist.CtField;
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.ClassPool classPool>;
v = virtualinvoke v.<org.apache.ibatis.javassist.ClassPool: org.apache.ibatis.javassist.CtClass get(java.lang.String)>("org.apache.ibatis.javassist.tools.reflect.Metaobject");
specialinvoke v.<org.apache.ibatis.javassist.CtField: void <init>(org.apache.ibatis.javassist.CtClass,java.lang.String,org.apache.ibatis.javassist.CtClass)>(v, "_metaobject", v);
virtualinvoke v.<org.apache.ibatis.javassist.CtField: void setModifiers(int)>(4);
v = staticinvoke <org.apache.ibatis.javassist.CtField$Initializer: org.apache.ibatis.javassist.CtField$Initializer byNewWithParams(org.apache.ibatis.javassist.CtClass)>(v);
virtualinvoke v.<org.apache.ibatis.javassist.CtClass: void addField(org.apache.ibatis.javassist.CtField,org.apache.ibatis.javassist.CtField$Initializer)>(v, v);
v = staticinvoke <org.apache.ibatis.javassist.CtNewMethod: org.apache.ibatis.javassist.CtMethod getter(java.lang.String,org.apache.ibatis.javassist.CtField)>("_getMetaobject", v);
virtualinvoke v.<org.apache.ibatis.javassist.CtClass: void addMethod(org.apache.ibatis.javassist.CtMethod)>(v);
v = staticinvoke <org.apache.ibatis.javassist.CtNewMethod: org.apache.ibatis.javassist.CtMethod setter(java.lang.String,org.apache.ibatis.javassist.CtField)>("_setMetaobject", v);
virtualinvoke v.<org.apache.ibatis.javassist.CtClass: void addMethod(org.apache.ibatis.javassist.CtMethod)>(v);
label:
v = new org.apache.ibatis.javassist.CtField;
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.ClassPool classPool>;
v = virtualinvoke v.<org.apache.ibatis.javassist.ClassPool: org.apache.ibatis.javassist.CtClass get(java.lang.String)>("org.apache.ibatis.javassist.tools.reflect.ClassMetaobject");
specialinvoke v.<org.apache.ibatis.javassist.CtField: void <init>(org.apache.ibatis.javassist.CtClass,java.lang.String,org.apache.ibatis.javassist.CtClass)>(v, "_classobject", v);
virtualinvoke v.<org.apache.ibatis.javassist.CtField: void setModifiers(int)>(10);
v = newarray (java.lang.String)[1];
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: java.lang.String getName()>();
v[0] = v;
v = staticinvoke <org.apache.ibatis.javassist.CtField$Initializer: org.apache.ibatis.javassist.CtField$Initializer byNew(org.apache.ibatis.javassist.CtClass,java.lang.String[])>(v, v);
virtualinvoke v.<org.apache.ibatis.javassist.CtClass: void addField(org.apache.ibatis.javassist.CtField,org.apache.ibatis.javassist.CtField$Initializer)>(v, v);
v = staticinvoke <org.apache.ibatis.javassist.CtNewMethod: org.apache.ibatis.javassist.CtMethod getter(java.lang.String,org.apache.ibatis.javassist.CtField)>("_getClass", v);
virtualinvoke v.<org.apache.ibatis.javassist.CtClass: void addMethod(org.apache.ibatis.javassist.CtMethod)>(v);
return 1;
}
private void processMethods(org.apache.ibatis.javassist.CtClass, boolean) throws org.apache.ibatis.javassist.CannotCompileException, org.apache.ibatis.javassist.NotFoundException
{
org.apache.ibatis.javassist.CtClass v;
org.apache.ibatis.javassist.CtMethod v;
int v, v, v;
org.apache.ibatis.javassist.CtMethod[] v;
org.apache.ibatis.javassist.tools.reflect.Reflection v;
boolean v, v, v;
v := @this: org.apache.ibatis.javassist.tools.reflect.Reflection;
v := @parameter: org.apache.ibatis.javassist.CtClass;
v := @parameter: boolean;
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: org.apache.ibatis.javassist.CtMethod[] getMethods()>();
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: int getModifiers()>();
v = staticinvoke <org.apache.ibatis.javassist.Modifier: boolean isPublic(int)>(v);
if v == 0 goto label;
v = staticinvoke <org.apache.ibatis.javassist.Modifier: boolean isAbstract(int)>(v);
if v != 0 goto label;
specialinvoke v.<org.apache.ibatis.javassist.tools.reflect.Reflection: void processMethods0(int,org.apache.ibatis.javassist.CtClass,org.apache.ibatis.javassist.CtMethod,int,boolean)>(v, v, v, v, v);
label:
v = v + 1;
goto label;
label:
return;
}
private void processMethods0(int, org.apache.ibatis.javassist.CtClass, org.apache.ibatis.javassist.CtMethod, int, boolean) throws org.apache.ibatis.javassist.CannotCompileException, org.apache.ibatis.javassist.NotFoundException
{
org.apache.ibatis.javassist.CtClass v, v, v;
int v, v, v, v;
java.lang.String v, v;
boolean v, v, v, v, v, v;
org.apache.ibatis.javassist.CtClass[] v, v;
org.apache.ibatis.javassist.CtMethod v, v, v, v, v;
org.apache.ibatis.javassist.tools.reflect.Reflection v;
org.apache.ibatis.javassist.CtMethod$ConstParameter v;
v := @this: org.apache.ibatis.javassist.tools.reflect.Reflection;
v := @parameter: int;
v := @parameter: org.apache.ibatis.javassist.CtClass;
v := @parameter: org.apache.ibatis.javassist.CtMethod;
v := @parameter: int;
v := @parameter: boolean;
v = virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: java.lang.String getName()>();
v = specialinvoke v.<org.apache.ibatis.javassist.tools.reflect.Reflection: boolean isExcluded(java.lang.String)>(v);
if v == 0 goto label;
return;
label:
v = virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: org.apache.ibatis.javassist.CtClass getDeclaringClass()>();
if v != v goto label;
v = staticinvoke <org.apache.ibatis.javassist.Modifier: boolean isNative(int)>(v);
if v == 0 goto label;
return;
label:
v = v;
v = staticinvoke <org.apache.ibatis.javassist.Modifier: boolean isFinal(int)>(v);
if v == 0 goto label;
v = (int) -17;
v = v & v;
virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: void setModifiers(int)>(v);
goto label;
label:
v = staticinvoke <org.apache.ibatis.javassist.Modifier: boolean isFinal(int)>(v);
if v == 0 goto label;
return;
label:
v = (int) -257;
v = v & v;
v = specialinvoke v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.CtMethod findOriginal(org.apache.ibatis.javassist.CtMethod,boolean)>(v, v);
v = staticinvoke <org.apache.ibatis.javassist.CtNewMethod: org.apache.ibatis.javassist.CtMethod delegator(org.apache.ibatis.javassist.CtMethod,org.apache.ibatis.javassist.CtClass)>(v, v);
virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: void setModifiers(int)>(v);
virtualinvoke v.<org.apache.ibatis.javassist.CtClass: void addMethod(org.apache.ibatis.javassist.CtMethod)>(v);
label:
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int,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[])>("_m_\u0001_\u0001");
virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: void setName(java.lang.String)>(v);
v = staticinvoke <org.apache.ibatis.javassist.Modifier: boolean isStatic(int)>(v);
if v == 0 goto label;
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.CtMethod trapStaticMethod>;
goto label;
label:
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.CtMethod trapMethod>;
label:
v = virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: org.apache.ibatis.javassist.CtClass getReturnType()>();
v = virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: org.apache.ibatis.javassist.CtClass[] getParameterTypes()>();
v = virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: org.apache.ibatis.javassist.CtClass[] getExceptionTypes()>();
v = staticinvoke <org.apache.ibatis.javassist.CtMethod$ConstParameter: org.apache.ibatis.javassist.CtMethod$ConstParameter integer(int)>(v);
v = staticinvoke <org.apache.ibatis.javassist.CtNewMethod: org.apache.ibatis.javassist.CtMethod wrapped(org.apache.ibatis.javassist.CtClass,java.lang.String,org.apache.ibatis.javassist.CtClass[],org.apache.ibatis.javassist.CtClass[],org.apache.ibatis.javassist.CtMethod,org.apache.ibatis.javassist.CtMethod$ConstParameter,org.apache.ibatis.javassist.CtClass)>(v, v, v, v, v, v, v);
virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: void setModifiers(int)>(v);
virtualinvoke v.<org.apache.ibatis.javassist.CtClass: void addMethod(org.apache.ibatis.javassist.CtMethod)>(v);
return;
}
private org.apache.ibatis.javassist.CtMethod findOriginal(org.apache.ibatis.javassist.CtMethod, boolean) throws org.apache.ibatis.javassist.NotFoundException
{
org.apache.ibatis.javassist.CtClass v;
int v, v;
java.lang.String v, v, v, v;
boolean v, v, v, v;
org.apache.ibatis.javassist.CtMethod v, v, v, v;
org.apache.ibatis.javassist.CtMethod[] v;
org.apache.ibatis.javassist.tools.reflect.Reflection v;
v := @this: org.apache.ibatis.javassist.tools.reflect.Reflection;
v := @parameter: org.apache.ibatis.javassist.CtMethod;
v := @parameter: boolean;
if v == 0 goto label;
return v;
label:
v = virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: java.lang.String getName()>();
v = virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: org.apache.ibatis.javassist.CtClass getDeclaringClass()>();
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: org.apache.ibatis.javassist.CtMethod[] getDeclaredMethods()>();
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: java.lang.String getName()>();
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("_m_");
if v == 0 goto label;
v = v[v];
v = virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: java.lang.String getSignature()>();
v = virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: java.lang.String getSignature()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = v[v];
return v;
label:
v = v + 1;
goto label;
label:
return v;
}
private void processFields(org.apache.ibatis.javassist.CtClass) throws org.apache.ibatis.javassist.CannotCompileException, org.apache.ibatis.javassist.NotFoundException
{
org.apache.ibatis.javassist.ClassPool v;
org.apache.ibatis.javassist.CtField[] v;
org.apache.ibatis.javassist.CtClass v, v, v, v;
int v, v, v, v, v, v;
java.lang.String v, v, v;
org.apache.ibatis.javassist.CtField v;
org.apache.ibatis.javassist.CtClass[] v, v;
org.apache.ibatis.javassist.CtMethod v, v, v, v;
org.apache.ibatis.javassist.tools.reflect.Reflection v;
org.apache.ibatis.javassist.CtMethod$ConstParameter v, v;
v := @this: org.apache.ibatis.javassist.tools.reflect.Reflection;
v := @parameter: org.apache.ibatis.javassist.CtClass;
v = virtualinvoke v.<org.apache.ibatis.javassist.CtClass: org.apache.ibatis.javassist.CtField[] getDeclaredFields()>();
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<org.apache.ibatis.javassist.CtField: int getModifiers()>();
v = v & 1;
if v == 0 goto label;
v = v & 16;
if v != 0 goto label;
v = v | 8;
v = virtualinvoke v.<org.apache.ibatis.javassist.CtField: java.lang.String getName()>();
v = virtualinvoke v.<org.apache.ibatis.javassist.CtField: org.apache.ibatis.javassist.CtClass getType()>();
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[])>("_r_\u0001");
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.CtClass[] readParam>;
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.CtMethod trapRead>;
v = staticinvoke <org.apache.ibatis.javassist.CtMethod$ConstParameter: org.apache.ibatis.javassist.CtMethod$ConstParameter string(java.lang.String)>(v);
v = staticinvoke <org.apache.ibatis.javassist.CtNewMethod: org.apache.ibatis.javassist.CtMethod wrapped(org.apache.ibatis.javassist.CtClass,java.lang.String,org.apache.ibatis.javassist.CtClass[],org.apache.ibatis.javassist.CtClass[],org.apache.ibatis.javassist.CtMethod,org.apache.ibatis.javassist.CtMethod$ConstParameter,org.apache.ibatis.javassist.CtClass)>(v, v, v, null, v, v, v);
virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: void setModifiers(int)>(v);
virtualinvoke v.<org.apache.ibatis.javassist.CtClass: void addMethod(org.apache.ibatis.javassist.CtMethod)>(v);
v = newarray (org.apache.ibatis.javassist.CtClass)[2];
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.ClassPool classPool>;
v = virtualinvoke v.<org.apache.ibatis.javassist.ClassPool: org.apache.ibatis.javassist.CtClass get(java.lang.String)>("java.lang.Object");
v[0] = v;
v[1] = v;
v = <org.apache.ibatis.javassist.CtClass: org.apache.ibatis.javassist.CtClass voidType>;
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[])>("_w_\u0001");
v = v.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.CtMethod trapWrite>;
v = staticinvoke <org.apache.ibatis.javassist.CtMethod$ConstParameter: org.apache.ibatis.javassist.CtMethod$ConstParameter string(java.lang.String)>(v);
v = staticinvoke <org.apache.ibatis.javassist.CtNewMethod: org.apache.ibatis.javassist.CtMethod wrapped(org.apache.ibatis.javassist.CtClass,java.lang.String,org.apache.ibatis.javassist.CtClass[],org.apache.ibatis.javassist.CtClass[],org.apache.ibatis.javassist.CtMethod,org.apache.ibatis.javassist.CtMethod$ConstParameter,org.apache.ibatis.javassist.CtClass)>(v, v, v, null, v, v, v);
virtualinvoke v.<org.apache.ibatis.javassist.CtMethod: void setModifiers(int)>(v);
virtualinvoke v.<org.apache.ibatis.javassist.CtClass: void addMethod(org.apache.ibatis.javassist.CtMethod)>(v);
label:
v = v + 1;
goto label;
label:
return;
}
public void rebuildClassFile(org.apache.ibatis.javassist.bytecode.ClassFile) throws org.apache.ibatis.javassist.bytecode.BadBytecode
{
org.apache.ibatis.javassist.ClassPool v;
java.util.Iterator v;
org.apache.ibatis.javassist.bytecode.ClassFile v;
java.util.List v;
int v;
java.lang.Object v;
org.apache.ibatis.javassist.tools.reflect.Reflection v;
boolean v;
v := @this: org.apache.ibatis.javassist.tools.reflect.Reflection;
v := @parameter: org.apache.ibatis.javassist.bytecode.ClassFile;
v = <org.apache.ibatis.javassist.bytecode.ClassFile: int MAJOR_VERSION>;
if v >= 50 goto label;
return;
label:
v = virtualinvoke v.<org.apache.ibatis.javassist.bytecode.ClassFile: java.util.List getMethods()>();
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.<org.apache.ibatis.javassist.tools.reflect.Reflection: org.apache.ibatis.javassist.ClassPool classPool>;
virtualinvoke v.<org.apache.ibatis.javassist.bytecode.MethodInfo: void rebuildStackMap(org.apache.ibatis.javassist.ClassPool)>(v);
goto label;
label:
return;
}
}