question: public void simulateMethod ( SootMethod method , ReferenceVariable thisVar , ReferenceVariable returnVar , ReferenceVariable params [ ] ) { String subSignature = method . getSubSignature ( ) ; if ( subSignature . equals ( "java.lang.Class forName0(java.lang.String,boolean,java.lang.ClassLoader)" ) ) { java_lang_Class_forName0 ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.Object newInstance0()" ) ) { java_lang_Class_newInstance0 ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.String getName()" ) ) { java_lang_Class_getName ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.ClassLoader getClassLoader0()" ) ) { java_lang_Class_getClassLoader0 ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.Class getSuperclass()" ) ) { java_lang_Class_getSuperclass ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.Class[] getInterfaces()" ) ) { java_lang_Class_getInterfaces ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.Class getComponentType()" ) ) { java_lang_Class_getComponentType ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.Object[] getSigners()" ) ) { java_lang_Class_getSigners ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "void setSigners(java.lang.Object[])" ) ) { java_lang_Class_setSigners ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.Class getDeclaringClass()" ) ) { java_lang_Class_getDeclaringClass ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "void setProtectionDomain0(java.security.ProtectionDomain)" ) ) { java_lang_Class_setProtectionDomain0 ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.security.ProtectionDomain getProtectionDomain0()" ) ) { java_lang_Class_getProtectionDomain0 ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.Class getPrimitiveClass(java.lang.String)" ) ) { java_lang_Class_getPrimitiveClass ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.reflect.Field[] getFields0(int)" ) ) { java_lang_Class_getFields0 ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.reflect.Method[] getMethods0(int)" ) ) { java_lang_Class_getMethods0 ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.reflect.Constructor[] getConstructors0(int)" ) ) { java_lang_Class_getConstructors0 ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.reflect.Field getField0(java.lang.String,int)" ) ) { java_lang_Class_getField0 ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.reflect.Method getMethod0(java.lang.String,java.lang.Class[],int)" ) ) { java_lang_Class_getMethod0 ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.reflect.Constructor getConstructor0(java.lang.Class[],int)" ) ) { java_lang_Class_getConstructor0 ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.Class[] getDeclaredClasses0()" ) ) { java_lang_Class_getDeclaredClasses0 ( method , thisVar , returnVar , params ) ; return ; } else if ( subSignature . equals ( "java.lang.reflect.Constructor[] getDeclaredConstructors0(boolean)" ) ) { java_lang_Class_getDeclaredConstructors0 ( method , thisVar , returnVar , params ) ; return ; } else { defaultMethod ( method , thisVar , returnVar , params ) ; return ; } }
target:  Implements the abstract method simulateMethod. It distributes the request to the corresponding methods  by signatures.