code: Symbol findPolymorphicSignatureInstance(Env<AttrContext> env,
                                              final Symbol spMethod,
                                              List<Type> argtypes) {
          Type mtype = infer.instantiatePolymorphicSignatureInstance(env,
                  (MethodSymbol)spMethod, currentResolutionContext, argtypes);
          for (Symbol sym : polymorphicSignatureScope.getSymbolsByName(spMethod.name)) {
              // Check that there is already a method symbol for the method
              // type and owner
              if (types.isSameType(mtype, sym.type) &&
                  spMethod.owner == sym.owner) {
                  return sym;
              }
          }
  
          // Create the desired method
          // Retain static modifier is to support invocations to
          // MethodHandle.linkTo* methods
          long flags = ABSTRACT | HYPOTHETICAL |
                       spMethod.flags() & (Flags.AccessFlags | Flags.STATIC);
          Symbol msym = new MethodSymbol(flags, spMethod.name, mtype, spMethod.owner) {
              @Override
              public Symbol baseSymbol() {
                  return spMethod;
              }
          };
          if (!mtype.isErroneous()) { // Cache only if kosher.
              polymorphicSignatureScope.enter(msym);
          }
          return msym;
      }
docs: Find or create an implicit method of exactly the given type (after erasure).
  Searches in a side table, not the main scope of the site.
  This emulates the lookup process required by JSR 292 in JVM.
  @param env       Attribution environment
  @param spMethod  signature polymorphic method - i.e. MH.invokeExact
  @param argtypes  The required argument types