public boolean isSignaturePolymorphic(MethodSymbol msym) {
       List<Type> argtypes = msym.type.getParameterTypes();
       return (msym.flags_field & NATIVE) != 0 &&
              (msym.owner == syms.methodHandleType.tsym || msym.owner == syms.varHandleType.tsym) &&
               argtypes.length() == 1 &&
               argtypes.head.hasTag(TypeTag.ARRAY) &&
               ((ArrayType)argtypes.head).elemtype.tsym == syms.objectType.tsym;
   }
public boolean isSignaturePolymorphic ( MethodSymbol msym ) { List < Type > argtypes = msym . type . getParameterTypes ( ) ; return ( msym . flags_field & NATIVE ) != 0 && ( msym . owner == syms . methodHandleType . tsym || msym . owner == syms . varHandleType . tsym ) && argtypes . length ( ) == 1 && argtypes . head . hasTag ( TypeTag . ARRAY ) && ( ( ArrayType ) argtypes . head ) . elemtype . tsym == syms . objectType . tsym ; }
A polymorphic signature method (JLS 15.12.3) is a method that
(i) is declared in the java.lang.invoke.MethodHandle/VarHandle classes;
(ii) takes a single variable arity parameter;
(iii) whose declared type is Object[];
(iv) has any return type, Object signifying a polymorphic return type; and
(v) is native.