private @NotNull List<@NotNull PyClassLikeType> getAllPossibleMetaClassTypes(@NotNull TypeEvalContext context) {
    final List<PyClassLikeType> results = new ArrayList<>();
    final PyClassLikeType ownMeta = getMetaClassType(false, context);
    if (ownMeta != null) {
      results.add(ownMeta);
    }
    for (PyClassLikeType ancestor : getAncestorTypesWithMetaClassInstances(context)) {
      if (ancestor != null) {
        if (!ancestor.isDefinition()) {
          results.add(ancestor.toClass());
        }
        else {
          final PyClassLikeType ancestorMeta = ancestor.getMetaClassType(context, false);
          if (ancestorMeta != null) {
            results.add(ancestorMeta);
          }
        }
      }
    }
    return results;
  }
private @NotNull List<@NotNull PyClassLikeType> getAllPossibleMetaClassTypes(@NotNull TypeEvalContext context)