code: function createTupleTypeOfArity(arity) {
              var typeParameters = [];
              var properties = [];
              for (var i = 0; i < arity; i++) {
                  var typeParameter = createType(16384 /* TypeParameter */);
                  typeParameters.push(typeParameter);
                  var property = createSymbol(4 /* Property */ | 67108864 /* Transient */, "" + i);
                  property.type = typeParameter;
                  properties.push(property);
              }
              var type = createObjectType(262144 /* Tuple */ | 131072 /* Reference */);
              type.typeParameters = typeParameters;
              type.outerTypeParameters = undefined;
              type.localTypeParameters = typeParameters;
              type.instantiations = ts.createMap();
              type.instantiations[getTypeListId(type.typeParameters)] = type;
              type.target = type;
              type.typeArguments = type.typeParameters;
              type.thisType = createType(16384 /* TypeParameter */ | 268435456 /* ThisType */);
              type.thisType.constraint = type;
              type.declaredProperties = properties;
              type.declaredCallSignatures = emptyArray;
              type.declaredConstructSignatures = emptyArray;
              type.declaredStringIndexInfo = undefined;
              type.declaredNumberIndexInfo = undefined;
              return type;
          }
docs: We represent tuple types as type references to synthesized generic interface types created by this function. The types are of the form:  interface Tuple<T0, T1, T2, ...> extends Array<T0 | T1 | T2 | ...> { 0: T0, 1: T1, 2: T2, ... }  Note that the generic type created by this function has no symbol associated with it. The same is true for each of the synthesized type parameters.