code: @Nullable
    public static MethodSymbol resolveExistingMethod(
        VisitorState state,
        TypeSymbol base,
        Name name,
        Iterable<Type> argTypes,
        Iterable<Type> tyargTypes) {
      Resolve resolve = Resolve.instance(state.context);
      Enter enter = Enter.instance(state.context);
      Log log = Log.instance(state.context);
      DeferredDiagnosticHandler handler = new DeferredDiagnosticHandler(log);
      try {
        return resolve.resolveInternalMethod(
            /*pos*/ null,
            enter.getEnv(base),
            base.type,
            name,
            com.sun.tools.javac.util.List.from(argTypes),
            com.sun.tools.javac.util.List.from(tyargTypes));
      } catch (FatalError e) {
        // the method could not be resolved
        return null;
      } finally {
        log.popDiagnosticHandler(handler);
      }
    }
docs: Given a Type ({@code base}), find the method named {@code name}, with the appropriate {@code
  argTypes} and {@code tyargTypes} and return its MethodSymbol.
  
  <p>Ex:
  
  <pre>{@code
  .....
  class A {}
  class B {
  public int hashCode() { return 42; }
  }
  .....
  
  MethodSymbol meth =  ASTHelpers.resolveExistingMethod(
  state,
  symbol,
  state.getName("hashCode"),
  ImmutableList.<Type>of(),
  ImmutableList.<Type>of());
  }</pre>
  
  {@code meth} could be different MethodSymbol's depending on whether {@code symbol} represented
  {@code B} or {@code A}. (B's hashCode method or Object#hashCode).
  
  @return a MethodSymbol representing the method symbol resolved from the context of this type,
  or {@code null} if the method could not be resolved.