class MethodContext implements MethodOrMethodContext {
  private SootMethod method;

  public SootMethod method() {
    return method;
  }

  private Context context;

  public Context context() {
    return context;
  }

  private MethodContext(SootMethod method, Context context) {
    this.method = method;
    this.context = context;
  }

  public int hashCode() {
    return method.hashCode() + context.hashCode();
  }

  public boolean equals(Object o) {
    if (o instanceof MethodContext) {
      MethodContext other = (MethodContext) o;
      return method.equals(other.method) && context.equals(other.context);
    }
    return false;
  }

  public static MethodOrMethodContext v(SootMethod method, Context context) {<FILL_FUNCTION_BODY>}

  public String toString() {
    return "Method " + method + " in context " + context;
  }
}

    if (context == null) {
      return method;
    }
    MethodContext probe = new MethodContext(method, context);
    Map<MethodContext, MethodContext> map = G.v().MethodContext_map;
    MethodContext ret = map.get(probe);
    if (ret == null) {
      map.put(probe, probe);
      return probe;
    }
    return ret;
  
<no_super_class>