code: Symbol resolveOperator(DiagnosticPosition pos, JCTree.Tag optag,
                             Env<AttrContext> env, List<Type> argtypes) {
          MethodResolutionContext prevResolutionContext = currentResolutionContext;
          try {
              currentResolutionContext = new MethodResolutionContext();
              Name name = treeinfo.operatorName(optag);
              return lookupMethod(env, pos, syms.predefClass, currentResolutionContext,
                      new BasicLookupHelper(name, syms.predefClass.type, argtypes, null, BOX) {
                  @Override
                  Symbol doLookup(Env<AttrContext> env, MethodResolutionPhase phase) {
                      return findMethod(env, site, name, argtypes, typeargtypes,
                              phase.isBoxingRequired(),
                              phase.isVarargsRequired(), true);
                  }
                  @Override
                  Symbol access(Env<AttrContext> env, DiagnosticPosition pos, Symbol location, Symbol sym) {
                      return accessMethod(sym, pos, env.enclClass.sym.type, name,
                            false, argtypes, null);
                  }
              });
          } finally {
              currentResolutionContext = prevResolutionContext;
          }
      }
docs: Resolve operator.
  @param pos       The position to use for error reporting.
  @param optag     The tag of the operation tree.
  @param env       The environment current at the operation.
  @param argtypes  The types of the operands.