code: function getSuggestedTypeNames(
    schema: GraphQLSchema,
    type: GraphQLOutputType,
    fieldName: string,
  ): Array<string> {
    if (isAbstractType(type)) {
      const suggestedObjectTypes = [];
      const interfaceUsageCount = Object.create(null);
      for (const possibleType of schema.getPossibleTypes(type)) {
        if (!possibleType.getFields()[fieldName]) {
          continue;
        }
        // This object type defines this field.
        suggestedObjectTypes.push(possibleType.name);
        for (const possibleInterface of possibleType.getInterfaces()) {
          if (!possibleInterface.getFields()[fieldName]) {
            continue;
          }
          // This interface type defines this field.
          interfaceUsageCount[possibleInterface.name] =
            (interfaceUsageCount[possibleInterface.name] || 0) + 1;
        }
      }
  
      // Suggest interface types based on how common they are.
      const suggestedInterfaceTypes = Object.keys(interfaceUsageCount).sort(
        (a, b) => interfaceUsageCount[b] - interfaceUsageCount[a],
      );
  
      // Suggest both interface and object types.
      return suggestedInterfaceTypes.concat(suggestedObjectTypes);
    }
  
    // Otherwise, must be an Object type, which does not have possible fields.
    return [];
  }
docs: Go through all of the implementations of type, as well as the interfaces that
  they implement. If any of those types include the provided field, suggest
  them, sorted by how often the type is referenced, starting with Interfaces.