code: final void addSubClassAfterResolution(FunctionType subClass) {
      checkArgument(this == subClass.getSuperClassConstructor());
      if (!subClass.wasAddedToExtendedConstructorSubtypes) {
        addSubType(subClass);
      }
    }
docs: Restricted package-accessible version of {@link #addSubType}, which ensures subtypes are not
  duplicated. Generally subtypes are added internally and are guaranteed not to be duplicated,
  but this has the possibility of missing unresolved supertypes (typically from externs). To
  handle that case, {@link PrototypeObjectType} also adds subclasses after resolution. This
  method only adds a subclass to the list if it didn't already add itself to its superclass in
  the earlier pass. Ideally, "subclass" here would only refer to classes, but there's an edge
  case where interfaces have the {@code Object} constructor added as its "superclass".