docs: function getIntersectionType(types, aliasSymbol, aliasTypeArguments) {
              if (types.length === 0) {
                  return emptyObjectType;
              }
              var typeSet = [];
              addTypesToIntersection(typeSet, types);
              if (typeSet.containsAny) {
                  return anyType;
              }
              if (typeSet.length === 1) {
                  return typeSet[0];
              }
              var id = getTypeListId(typeSet);
              var type = intersectionTypes[id];
              if (!type) {
                  var propagatedFlags = getPropagatingFlagsOfTypes(typeSet, /*excludeKinds*/ 6144 /* Nullable */);
                  type = intersectionTypes[id] = createObjectType(1048576 /* Intersection */ | propagatedFlags);
                  type.types = typeSet;
                  type.aliasSymbol = aliasSymbol;
                  type.aliasTypeArguments = aliasTypeArguments;
              }
              return type;
          }