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;
  }
}

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 ; } }
implements the abstract method simulatemethod . it distributes the request to the corresponding methods by signatures .
