class ReflectiveCalls {

  private final static Set<String> classForName = new HashSet<String>();
  private final static Set<String> classNewInstance = new HashSet<String>();
  private final static Set<String> constructorNewInstance = new HashSet<String>();
  private final static Set<String> methodInvoke = new HashSet<String>();
  private final static Set<String> fieldSet = new HashSet<String>();
  private final static Set<String> fieldGet = new HashSet<String>();

  static {
    // soot will add initialization code here
  }

  public static void knownClassForName(int contextId, String className) {
    if (!classForName.contains(contextId + className)) {
      UnexpectedReflectiveCall.classForName(className);
    }
  }

  public static void knownClassNewInstance(int contextId, Class<?> c) {
    if (!classNewInstance.contains(contextId + c.getName())) {
      UnexpectedReflectiveCall.classNewInstance(c);
    }
  }

  public static void knownConstructorNewInstance(int contextId, Constructor<?> c) {
    if (!constructorNewInstance.contains(contextId + SootSig.sootSignature(c))) {
      UnexpectedReflectiveCall.constructorNewInstance(c);
    }
  }

  public static void knownMethodInvoke(int contextId, Object o, Method m) {<FILL_FUNCTION_BODY>}

  public static void knownFieldSet(int contextId, Object o, Field f) {
    if (!fieldSet.contains(contextId + SootSig.sootSignature(f))) {
      UnexpectedReflectiveCall.fieldSet(o, f);
    }
  }

  public static void knownFieldGet(int contextId, Object o, Field f) {
    if (!fieldGet.contains(contextId + SootSig.sootSignature(f))) {
      UnexpectedReflectiveCall.fieldGet(o, f);
    }
  }
}

    if (!methodInvoke.contains(contextId + SootSig.sootSignature(o, m))) {
      UnexpectedReflectiveCall.methodInvoke(o, m);
    }
  
<no_super_class>