docs: 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 [];
  }