code: function mayImplement(
    schema: GraphQLSchema,
    type: GraphQLType,
    typeName: string,
  ): boolean {
    const unmodifiedType = getRawType(type);
    return (
      unmodifiedType.toString() === typeName ||
      implementsInterface(unmodifiedType, typeName) ||
      (isAbstractType(unmodifiedType) &&
        hasConcreteTypeThatImplements(schema, unmodifiedType, typeName))
    );
  }
docs: Determine if the given type may implement the named type:
  - it is the named type
  - it implements the named interface
  - it is an abstract type and *some* of its concrete types may
  implement the named type