code: function emitSerializedParameterTypesOfNode(node) {
                  // serialization of parameter types uses the following rules:
                  //
                  // * If the declaration is a class, the parameters of the first constructor with a body are used.
                  // * If the declaration is function-like and has a body, the parameters of the function are used.
                  //
                  // For the rules on serializing the type of each parameter declaration, see `serializeTypeOfDeclaration`.
                  if (node) {
                      var valueDeclaration = void 0;
                      if (node.kind === 221 /* ClassDeclaration */) {
                          valueDeclaration = ts.getFirstConstructorWithBody(node);
                      }
                      else if (ts.isFunctionLike(node) && ts.nodeIsPresent(node.body)) {
                          valueDeclaration = node;
                      }
                      if (valueDeclaration) {
                          var parameters = valueDeclaration.parameters;
                          var skipThisCount = parameters.length && parameters[0].name.originalKeywordKind === 97 /* ThisKeyword */ ? 1 : 0;
                          var parameterCount = parameters.length;
                          if (parameterCount > skipThisCount) {
                              for (var i = skipThisCount; i < parameterCount; i++) {
                                  if (i > skipThisCount) {
                                      write(", ");
                                  }
                                  if (parameters[i].dotDotDotToken) {
                                      var parameterType = parameters[i].type;
                                      if (parameterType && parameterType.kind === 160 /* ArrayType */) {
                                          parameterType = parameterType.elementType;
                                      }
                                      else if (parameterType && parameterType.kind === 155 /* TypeReference */ && parameterType.typeArguments && parameterType.typeArguments.length === 1) {
                                          parameterType = parameterType.typeArguments[0];
                                      }
                                      else {
                                          parameterType = undefined;
                                      }
                                      emitSerializedTypeNode(parameterType);
                                  }
                                  else {
                                      emitSerializedTypeOfNode(parameters[i]);
                                  }
                              }
                          }
                      }
                  }
              }
docs: Serializes the parameter types of a function or the constructor of a class. Used by the __metadata decorator for a method or set accessor.