{
  "metadata": {
    "toolPackage": "@microsoft/api-extractor",
    "toolVersion": "7.7.10",
    "schemaVersion": 1003,
    "oldestForwardsCompatibleVersion": 1001
  },
  "kind": "Package",
  "canonicalReference": "@loopback/metadata!",
  "docComment": "",
  "name": "@loopback/metadata",
  "members": [
    {
      "kind": "EntryPoint",
      "canonicalReference": "@loopback/metadata!",
      "name": "",
      "members": [
        {
          "kind": "Class",
          "canonicalReference": "@loopback/metadata!ClassDecoratorFactory:class",
          "docComment": "/**\n * Factory for class decorators\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class ClassDecoratorFactory<T> extends "
            },
            {
              "kind": "Reference",
              "text": "DecoratorFactory",
              "canonicalReference": "@loopback/metadata!DecoratorFactory:class"
            },
            {
              "kind": "Content",
              "text": "<T, T, "
            },
            {
              "kind": "Reference",
              "text": "ClassDecorator",
              "canonicalReference": "!ClassDecorator:type"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "ClassDecoratorFactory",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!ClassDecoratorFactory#create:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "create(): "
                },
                {
                  "kind": "Reference",
                  "text": "ClassDecorator",
                  "canonicalReference": "!ClassDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "create"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!ClassDecoratorFactory.createDecorator:member(1)",
              "docComment": "/**\n * Create a class decorator function\n *\n * @param key - Metadata key\n *\n * @param spec - Metadata object from the decorator function\n *\n * @param options - Options for the decorator\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static createDecorator<T>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataKey",
                  "canonicalReference": "@loopback/metadata!MetadataKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, "
                },
                {
                  "kind": "Reference",
                  "text": "ClassDecorator",
                  "canonicalReference": "!ClassDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", spec: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "DecoratorOptions",
                  "canonicalReference": "@loopback/metadata!DecoratorOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ClassDecorator",
                  "canonicalReference": "!ClassDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "spec",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "createDecorator"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!ClassDecoratorFactory#mergeWithInherited:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected mergeWithInherited(inheritedMetadata: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", member?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", descriptorOrIndex?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "inheritedMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "member",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                },
                {
                  "parameterName": "descriptorOrIndex",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 9
                  }
                }
              ],
              "name": "mergeWithInherited"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!ClassDecoratorFactory#mergeWithOwn:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected mergeWithOwn(ownMetadata: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", member?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", descriptorOrIndex?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "ownMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "member",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                },
                {
                  "parameterName": "descriptorOrIndex",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 9
                  }
                }
              ],
              "name": "mergeWithOwn"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 1,
            "endIndex": 5
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/metadata!DecoratorFactory:class",
          "docComment": "/**\n * Base factory class for decorator functions\n *\n * @example\n * ```\n * function classDecorator(spec: MySpec): ClassDecorator {\n *   return ClassDecoratorFactory.createDecorator('my-key', spec);\n * }\n * ```\n *\n * or\n * ```\n * function classDecorator(spec: MySpec): ClassDecorator {\n *   const factory: ClassDecoratorFactory<MySpec>('my-key', spec);\n *   return factory.create();\n * }\n * ```\n *\n * These functions above declare `@classDecorator` that can be used as follows:\n * ```\n * @classDecorator({x: 1})\n * class MyController {}\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class DecoratorFactory<T, // Type of the metadata spec for individual class/method/property/parameter\nM extends "
            },
            {
              "kind": "Content",
              "text": "T | "
            },
            {
              "kind": "Reference",
              "text": "MetadataMap",
              "canonicalReference": "@loopback/metadata!MetadataMap:interface"
            },
            {
              "kind": "Content",
              "text": "<T> | "
            },
            {
              "kind": "Reference",
              "text": "MetadataMap",
              "canonicalReference": "@loopback/metadata!MetadataMap:interface"
            },
            {
              "kind": "Content",
              "text": "<T[]>"
            },
            {
              "kind": "Content",
              "text": ", // Type of the metadata\nD extends "
            },
            {
              "kind": "Reference",
              "text": "DecoratorType",
              "canonicalReference": "@loopback/metadata!DecoratorType:type"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "typeParameterName": "M",
              "constraintTokenRange": {
                "startIndex": 1,
                "endIndex": 6
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "typeParameterName": "D",
              "constraintTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "DecoratorFactory",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!DecoratorFactory._createDecorator:member(1)",
              "docComment": "/**\n * Create a decorator function\n *\n * @param key - Metadata key\n *\n * @param spec - Metadata object from the decorator function\n *\n * @param options - Options for the decorator\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected static _createDecorator<T, M extends "
                },
                {
                  "kind": "Content",
                  "text": "T | "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T> | "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ", D extends "
                },
                {
                  "kind": "Reference",
                  "text": "DecoratorType",
                  "canonicalReference": "@loopback/metadata!DecoratorType:type"
                },
                {
                  "kind": "Content",
                  "text": ">(key: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataKey",
                  "canonicalReference": "@loopback/metadata!MetadataKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, D>"
                },
                {
                  "kind": "Content",
                  "text": ", spec: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "DecoratorOptions",
                  "canonicalReference": "@loopback/metadata!DecoratorOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "D"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 16,
                "endIndex": 17
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 9,
                    "endIndex": 11
                  }
                },
                {
                  "parameterName": "spec",
                  "parameterTypeTokenRange": {
                    "startIndex": 12,
                    "endIndex": 13
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 14,
                    "endIndex": 15
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                },
                {
                  "typeParameterName": "M",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 6
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                },
                {
                  "typeParameterName": "D",
                  "constraintTokenRange": {
                    "startIndex": 7,
                    "endIndex": 8
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "_createDecorator"
            },
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/metadata!DecoratorFactory:constructor(1)",
              "docComment": "/**\n * Construct a new class decorator factory\n *\n * @param key - Metadata key\n *\n * @param spec - Metadata object from the decorator function\n *\n * @param options - Options for the decorator. Default to `{allowInheritance: true}` if not provided\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(key: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", spec: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "DecoratorOptions",
                  "canonicalReference": "@loopback/metadata!DecoratorOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "spec",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!DecoratorFactory#allowInheritance:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected allowInheritance(): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "allowInheritance"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!DecoratorFactory.cloneDeep:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static cloneDeep<V>(val: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly",
                  "canonicalReference": "!Readonly:type"
                },
                {
                  "kind": "Content",
                  "text": "<V>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "V"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 5
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "val",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "V",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "cloneDeep"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!DecoratorFactory#create:member(1)",
              "docComment": "/**\n * Create a decorator function of the given type. Each sub class MUST implement this method.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "create(): "
                },
                {
                  "kind": "Content",
                  "text": "D"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "create"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!DecoratorFactory#decorate:member(1)",
              "docComment": "/**\n * Base implementation of the decorator function\n *\n * @param target - Decorator target\n *\n * @param member - Optional property or method\n *\n * @param descriptorOrIndex - Optional method descriptor or parameter index\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected decorate(target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", member?: "
                },
                {
                  "kind": "Content",
                  "text": "string | symbol"
                },
                {
                  "kind": "Content",
                  "text": ", descriptorOrIndex?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "member",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "descriptorOrIndex",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 7
                  }
                }
              ],
              "name": "decorate"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/metadata!DecoratorFactory#decoratorName:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected decoratorName: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "decoratorName",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!DecoratorFactory#duplicateDecorationError:member(1)",
              "docComment": "/**\n * Create an error to report if the decorator is applied to the target more than once\n *\n * @param target - Decoration target\n *\n * @param member - Optional property or method\n *\n * @param descriptorOrIndex - Optional parameter index or method descriptor\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected duplicateDecorationError(target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", member?: "
                },
                {
                  "kind": "Content",
                  "text": "string | symbol"
                },
                {
                  "kind": "Content",
                  "text": ", descriptorOrIndex?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Error",
                  "canonicalReference": "!Error:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "member",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "descriptorOrIndex",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 7
                  }
                }
              ],
              "name": "duplicateDecorationError"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!DecoratorFactory.getNumberOfParameters:member(1)",
              "docComment": "/**\n * Get the number of parameters for a given constructor or method\n *\n * @param target - Class or the prototype\n *\n * @param member - Method name\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static getNumberOfParameters(target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", member?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "number"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "member",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ],
              "name": "getNumberOfParameters"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!DecoratorFactory#getTarget:member(1)",
              "docComment": "/**\n * Get the optional decoration target of a given spec\n *\n * @param spec - Metadata spec\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getTarget(spec: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "spec",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "getTarget"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!DecoratorFactory.getTargetName:member(1)",
              "docComment": "/**\n * Get the qualified name of a decoration target. For example:\n * ```\n * class MyClass\n * MyClass.constructor[0] // First parameter of the constructor\n * MyClass.myStaticProperty\n * MyClass.myStaticMethod()\n * MyClass.myStaticMethod[0] // First parameter of the myStaticMethod\n * MyClass.prototype.myProperty\n * MyClass.prototype.myMethod()\n * MyClass.prototype.myMethod[1] // Second parameter of myMethod\n * ```\n *\n * @param target - Class or prototype of a class\n *\n * @param member - Optional property/method name\n *\n * @param descriptorOrIndex - Optional method descriptor or parameter index\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static getTargetName(target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", member?: "
                },
                {
                  "kind": "Content",
                  "text": "string | symbol"
                },
                {
                  "kind": "Content",
                  "text": ", descriptorOrIndex?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "member",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "descriptorOrIndex",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 7
                  }
                }
              ],
              "name": "getTargetName"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!DecoratorFactory#inherit:member(1)",
              "docComment": "/**\n * Inherit metadata from base classes. By default, this method merges base metadata into the spec if `allowInheritance` is set to `true`. To customize the behavior, this method can be overridden by sub classes.\n *\n * @param inheritedMetadata - Metadata from base classes for the member\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected inherit(inheritedMetadata: "
                },
                {
                  "kind": "Content",
                  "text": "T | undefined | null"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "inheritedMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ],
              "name": "inherit"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/metadata!DecoratorFactory#key:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected key: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "key",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!DecoratorFactory#mergeWithInherited:member(1)",
              "docComment": "/**\n * This method is called by the default implementation of the decorator function to merge the spec argument from the decoration with the inherited metadata for a class, all properties, all methods, or all method parameters that are decorated by this decorator.\n *\n * It MUST be overridden by subclasses to process inherited metadata.\n *\n * @param inheritedMetadata - Metadata inherited from the base classes\n *\n * @param target - Decoration target\n *\n * @param member - Optional property or method\n *\n * @param descriptorOrIndex - Optional parameter index or method descriptor\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected mergeWithInherited(inheritedMetadata: "
                },
                {
                  "kind": "Content",
                  "text": "M"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", member?: "
                },
                {
                  "kind": "Content",
                  "text": "string | symbol"
                },
                {
                  "kind": "Content",
                  "text": ", descriptorOrIndex?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "M"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "inheritedMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "member",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                },
                {
                  "parameterName": "descriptorOrIndex",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 9
                  }
                }
              ],
              "name": "mergeWithInherited"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!DecoratorFactory#mergeWithOwn:member(1)",
              "docComment": "/**\n * This method is called by the default implementation of the decorator function to merge the spec argument from the decoration with the own metadata for a class, all properties, all methods, or all method parameters that are decorated by this decorator.\n *\n * It MUST be overridden by subclasses to process own metadata.\n *\n * @param ownMetadata - Own Metadata exists locally on the target\n *\n * @param target - Decoration target\n *\n * @param member - Optional property or method\n *\n * @param descriptorOrIndex - Optional parameter index or method descriptor\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected mergeWithOwn(ownMetadata: "
                },
                {
                  "kind": "Content",
                  "text": "M"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", member?: "
                },
                {
                  "kind": "Content",
                  "text": "string | symbol"
                },
                {
                  "kind": "Content",
                  "text": ", descriptorOrIndex?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "M"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "ownMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "member",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                },
                {
                  "parameterName": "descriptorOrIndex",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 9
                  }
                }
              ],
              "name": "mergeWithOwn"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/metadata!DecoratorFactory#options:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected options: "
                },
                {
                  "kind": "Reference",
                  "text": "DecoratorOptions",
                  "canonicalReference": "@loopback/metadata!DecoratorOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "options",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/metadata!DecoratorFactory#spec:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected spec: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "spec",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/metadata!DecoratorFactory.TARGET:member",
              "docComment": "/**\n * A constant to reference the target of a decoration\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static TARGET: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "TARGET",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": true
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!DecoratorFactory#withTarget:member(1)",
              "docComment": "/**\n * Set a reference to the target class or prototype for a given spec if it's an object\n *\n * @param spec - Metadata spec\n *\n * @param target - Target of the decoration. It is a class or the prototype of a class.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "withTarget(spec: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "spec",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ],
              "name": "withTarget"
            }
          ],
          "implementsTokenRanges": []
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/metadata!DecoratorOptions:interface",
          "docComment": "/**\n * Options for a decorator\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface DecoratorOptions "
            }
          ],
          "releaseTag": "Public",
          "name": "DecoratorOptions",
          "members": [
            {
              "kind": "IndexSignature",
              "canonicalReference": "@loopback/metadata!DecoratorOptions:index(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "[name: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "]: "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "name",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ]
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/metadata!DecoratorOptions#allowInheritance:member",
              "docComment": "/**\n * Controls if inherited metadata will be honored. Default to `true`.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "allowInheritance?: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "allowInheritance",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/metadata!DecoratorOptions#cloneInputSpec:member",
              "docComment": "/**\n * Controls if the value of `spec` argument will be cloned. Sometimes we use shared spec for the decoration, but the decorator function might need to mutate the object. Cloning the input spec makes it safe to use the same spec (`template`) to decorate different members.\n *\n * Default to `true`.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "cloneInputSpec?: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "cloneInputSpec",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/metadata!DecoratorOptions#decoratorName:member",
              "docComment": "/**\n * Name of the decorator for debugging purpose, such as `@inject`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "decoratorName?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "decoratorName",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/metadata!DecoratorType:type",
          "docComment": "/**\n * Decorator function types\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type DecoratorType = "
            },
            {
              "kind": "Reference",
              "text": "ClassDecorator",
              "canonicalReference": "!ClassDecorator:type"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "PropertyDecorator",
              "canonicalReference": "!PropertyDecorator:type"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "MethodDecorator",
              "canonicalReference": "!MethodDecorator:type"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "ParameterDecorator",
              "canonicalReference": "!ParameterDecorator:type"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "DecoratorType",
          "typeTokenRange": {
            "startIndex": 1,
            "endIndex": 8
          }
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/metadata!DesignTimeMethodMetadata:interface",
          "docComment": "/**\n * Design time metadata for a method.\n *\n * @example\n * ```ts\n * class MyController\n * {\n *   myMethod(x: string, y: number, z: MyClass): boolean {\n *     // ...\n *     return true;\n *   }\n * }\n * ```\n *\n * The `myMethod` above has design-time metadata as follows:\n * ```ts\n * {\n *   type: Function,\n *   parameterTypes: [String, Number, MyClass],\n *   returnType: Boolean\n * }\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface DesignTimeMethodMetadata "
            }
          ],
          "releaseTag": "Public",
          "name": "DesignTimeMethodMetadata",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/metadata!DesignTimeMethodMetadata#parameterTypes:member",
              "docComment": "/**\n * An array of parameter types\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "parameterTypes: "
                },
                {
                  "kind": "Reference",
                  "text": "Function",
                  "canonicalReference": "!Function:interface"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "parameterTypes",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/metadata!DesignTimeMethodMetadata#returnType:member",
              "docComment": "/**\n * Return type\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "returnType: "
                },
                {
                  "kind": "Reference",
                  "text": "Function",
                  "canonicalReference": "!Function:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "returnType",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/metadata!DesignTimeMethodMetadata#type:member",
              "docComment": "/**\n * Type of the method itself. It is `Function`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "type: "
                },
                {
                  "kind": "Reference",
                  "text": "Function",
                  "canonicalReference": "!Function:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "type",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/metadata!InspectionOptions:interface",
          "docComment": "/**\n * Options for inspection\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface InspectionOptions "
            }
          ],
          "releaseTag": "Public",
          "name": "InspectionOptions",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "@loopback/metadata!InspectionOptions#ownMetadataOnly:member",
              "docComment": "/**\n * Only inspect own metadata of a given target. The prototype chain will not be checked. The implementation uses `Reflect.getOwnMetadata()` if the flag is set to `true`. Otherwise, it uses `Reflect.getMetadata()`.\n *\n * The flag is `false` by default for `MetadataInspector`.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "ownMetadataOnly?: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "ownMetadataOnly",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/metadata!MetadataAccessor:class",
          "docComment": "/**\n * A strongly-typed metadata accessor via reflection\n *\n * @typeParam T - Type of the metadata value\n *\n * @typeParam D - Type of the decorator\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class MetadataAccessor<T, D extends "
            },
            {
              "kind": "Reference",
              "text": "DecoratorType",
              "canonicalReference": "@loopback/metadata!DecoratorType:type"
            },
            {
              "kind": "Content",
              "text": " "
            },
            {
              "kind": "Content",
              "text": "= "
            },
            {
              "kind": "Reference",
              "text": "DecoratorType",
              "canonicalReference": "@loopback/metadata!DecoratorType:type"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "typeParameterName": "D",
              "constraintTokenRange": {
                "startIndex": 1,
                "endIndex": 3
              },
              "defaultTypeTokenRange": {
                "startIndex": 4,
                "endIndex": 5
              }
            }
          ],
          "name": "MetadataAccessor",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MetadataAccessor.create:member(1)",
              "docComment": "/**\n * Create a strongly-typed metadata accessor\n *\n * @param key - The metadata key\n *\n * @typeParam T - Type of the metadata value\n *\n * @typeParam D - Type of the decorator\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static create<T, D extends "
                },
                {
                  "kind": "Reference",
                  "text": "DecoratorType",
                  "canonicalReference": "@loopback/metadata!DecoratorType:type"
                },
                {
                  "kind": "Content",
                  "text": ">(key: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataAccessor",
                  "canonicalReference": "@loopback/metadata!MetadataAccessor:class"
                },
                {
                  "kind": "Content",
                  "text": "<T, D>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                },
                {
                  "typeParameterName": "D",
                  "constraintTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "create"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/metadata!MetadataAccessor#key:member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly key: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "key",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MetadataAccessor#toString:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "toString(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "toString"
            }
          ],
          "implementsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/metadata!MetadataInspector:class",
          "docComment": "/**\n * Inspector for metadata applied by decorators\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class MetadataInspector "
            }
          ],
          "releaseTag": "Public",
          "name": "MetadataInspector",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MetadataInspector.defineMetadata:member(1)",
              "docComment": "/**\n * Define metadata for the given target\n *\n * @param key - Metadata key\n *\n * @param value - Metadata value\n *\n * @param target - Target for the metadata\n *\n * @param member - Optional property or method name\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static defineMetadata<T>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataKey",
                  "canonicalReference": "@loopback/metadata!MetadataKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, "
                },
                {
                  "kind": "Reference",
                  "text": "DecoratorType",
                  "canonicalReference": "@loopback/metadata!DecoratorType:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", value: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", member?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 12,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "value",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                },
                {
                  "parameterName": "member",
                  "parameterTypeTokenRange": {
                    "startIndex": 10,
                    "endIndex": 11
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "defineMetadata"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/metadata!MetadataInspector.DesignTimeReflector:member",
              "docComment": "/**\n * Expose the reflector for TypeScript design-time metadata\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static readonly DesignTimeReflector: "
                },
                {
                  "kind": "Reference",
                  "text": "NamespacedReflect",
                  "canonicalReference": "@loopback/metadata!NamespacedReflect:class"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "DesignTimeReflector",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": true
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MetadataInspector.getAllMethodMetadata:member(1)",
              "docComment": "/**\n * Get the metadata associated with the given key for all methods of the target class or prototype\n *\n * @param key - Metadata key\n *\n * @param target - Class for static methods or prototype for instance methods\n *\n * @param options - Options for inspection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static getAllMethodMetadata<T>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataKey",
                  "canonicalReference": "@loopback/metadata!MetadataKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, "
                },
                {
                  "kind": "Reference",
                  "text": "MethodDecorator",
                  "canonicalReference": "!MethodDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "InspectionOptions",
                  "canonicalReference": "@loopback/metadata!InspectionOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 12
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getAllMethodMetadata"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MetadataInspector.getAllParameterMetadata:member(1)",
              "docComment": "/**\n * Get the metadata associated with the given key for all parameters of a given method\n *\n * @param key - Metadata key\n *\n * @param target - Class for static methods or prototype for instance methods\n *\n * @param methodName - Method name. If not present, default to '' to use the constructor\n *\n * @param options - Options for inspection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static getAllParameterMetadata<T>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataKey",
                  "canonicalReference": "@loopback/metadata!MetadataKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, "
                },
                {
                  "kind": "Reference",
                  "text": "ParameterDecorator",
                  "canonicalReference": "!ParameterDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", methodName?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "InspectionOptions",
                  "canonicalReference": "@loopback/metadata!InspectionOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "T[] | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 12,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "methodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 10,
                    "endIndex": 11
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getAllParameterMetadata"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MetadataInspector.getAllPropertyMetadata:member(1)",
              "docComment": "/**\n * Get the metadata associated with the given key for all properties of the target class or prototype\n *\n * @param key - Metadata key\n *\n * @param target - Class for static methods or prototype for instance methods\n *\n * @param options - Options for inspection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static getAllPropertyMetadata<T>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataKey",
                  "canonicalReference": "@loopback/metadata!MetadataKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, "
                },
                {
                  "kind": "Reference",
                  "text": "PropertyDecorator",
                  "canonicalReference": "!PropertyDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "InspectionOptions",
                  "canonicalReference": "@loopback/metadata!InspectionOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 12
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getAllPropertyMetadata"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MetadataInspector.getClassMetadata:member(1)",
              "docComment": "/**\n * Get the metadata associated with the given key for a given class\n *\n * @param key - Metadata key\n *\n * @param target - Class that contains the metadata\n *\n * @param options - Options for inspection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static getClassMetadata<T>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataKey",
                  "canonicalReference": "@loopback/metadata!MetadataKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, "
                },
                {
                  "kind": "Reference",
                  "text": "ClassDecorator",
                  "canonicalReference": "!ClassDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Function",
                  "canonicalReference": "!Function:interface"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "InspectionOptions",
                  "canonicalReference": "@loopback/metadata!InspectionOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "T | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getClassMetadata"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MetadataInspector.getDesignTypeForMethod:member(1)",
              "docComment": "/**\n * Get TypeScript design time type for a method\n *\n * @param target - Class or prototype\n *\n * @param methodName - Method name\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static getDesignTypeForMethod(target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", methodName: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "DesignTimeMethodMetadata",
                  "canonicalReference": "@loopback/metadata!DesignTimeMethodMetadata:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "methodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ],
              "name": "getDesignTypeForMethod"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MetadataInspector.getDesignTypeForProperty:member(1)",
              "docComment": "/**\n * Get TypeScript design time type for a property\n *\n * @param target - Class or prototype\n *\n * @param propertyName - Property name\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static getDesignTypeForProperty(target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", propertyName: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Function",
                  "canonicalReference": "!Function:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "propertyName",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ],
              "name": "getDesignTypeForProperty"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MetadataInspector.getMethodMetadata:member(1)",
              "docComment": "/**\n * Get the metadata associated with the given key for a given method of the target class or prototype\n *\n * @param key - Metadata key\n *\n * @param target - Class for static methods or prototype for instance methods\n *\n * @param methodName - Method name. If not present, default to '' to use the constructor\n *\n * @param options - Options for inspection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static getMethodMetadata<T>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataKey",
                  "canonicalReference": "@loopback/metadata!MetadataKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, "
                },
                {
                  "kind": "Reference",
                  "text": "MethodDecorator",
                  "canonicalReference": "!MethodDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", methodName?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "InspectionOptions",
                  "canonicalReference": "@loopback/metadata!InspectionOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "T | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 12,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "methodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 10,
                    "endIndex": 11
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getMethodMetadata"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MetadataInspector.getParameterMetadata:member(1)",
              "docComment": "/**\n * Get the metadata associated with the given key for a parameter of a given method by index\n *\n * @param key - Metadata key\n *\n * @param target - Class for static methods or prototype for instance methods\n *\n * @param methodName - Method name. If not present, default to '' to use the constructor\n *\n * @param index - Index of the parameter, starting with 0\n *\n * @param options - Options for inspection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static getParameterMetadata<T>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataKey",
                  "canonicalReference": "@loopback/metadata!MetadataKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, "
                },
                {
                  "kind": "Reference",
                  "text": "ParameterDecorator",
                  "canonicalReference": "!ParameterDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", methodName: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", index: "
                },
                {
                  "kind": "Content",
                  "text": "number"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "InspectionOptions",
                  "canonicalReference": "@loopback/metadata!InspectionOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "T | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 14,
                "endIndex": 15
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "methodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                },
                {
                  "parameterName": "index",
                  "parameterTypeTokenRange": {
                    "startIndex": 10,
                    "endIndex": 11
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 12,
                    "endIndex": 13
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getParameterMetadata"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MetadataInspector.getPropertyMetadata:member(1)",
              "docComment": "/**\n * Get the metadata associated with the given key for a given property of the target class or prototype\n *\n * @param key - Metadata key\n *\n * @param target - Class for static properties or prototype for instance properties\n *\n * @param propertyName - Property name\n *\n * @param options - Options for inspection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static getPropertyMetadata<T>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataKey",
                  "canonicalReference": "@loopback/metadata!MetadataKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, "
                },
                {
                  "kind": "Reference",
                  "text": "PropertyDecorator",
                  "canonicalReference": "!PropertyDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", propertyName: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "InspectionOptions",
                  "canonicalReference": "@loopback/metadata!InspectionOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "T | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 12,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "propertyName",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 10,
                    "endIndex": 11
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getPropertyMetadata"
            },
            {
              "kind": "Property",
              "canonicalReference": "@loopback/metadata!MetadataInspector.Reflector:member",
              "docComment": "/**\n * Expose Reflector, which is a wrapper of `Reflect` and it uses `loopback` as the namespace prefix for all metadata keys\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static readonly Reflector: "
                },
                {
                  "kind": "Reference",
                  "text": "NamespacedReflect",
                  "canonicalReference": "@loopback/metadata!NamespacedReflect:class"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "Reflector",
              "propertyTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "isStatic": true
            }
          ],
          "implementsTokenRanges": []
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "@loopback/metadata!MetadataKey:type",
          "docComment": "/**\n * Key for metadata access via reflection\n *\n * @typeParam T - Type of the metadata value\n *\n * @typeParam D - Type of the decorator\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type MetadataKey<T, D extends "
            },
            {
              "kind": "Reference",
              "text": "DecoratorType",
              "canonicalReference": "@loopback/metadata!DecoratorType:type"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Reference",
              "text": "MetadataAccessor",
              "canonicalReference": "@loopback/metadata!MetadataAccessor:class"
            },
            {
              "kind": "Content",
              "text": "<T, D> | string"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "MetadataKey",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "typeParameterName": "D",
              "constraintTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 5
          }
        },
        {
          "kind": "Interface",
          "canonicalReference": "@loopback/metadata!MetadataMap:interface",
          "docComment": "/**\n * An object mapping keys to corresponding metadata\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface MetadataMap<T> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "MetadataMap",
          "members": [
            {
              "kind": "IndexSignature",
              "canonicalReference": "@loopback/metadata!MetadataMap:index(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "[propertyOrMethodName: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "]: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "propertyOrMethodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ]
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/metadata!MethodDecoratorFactory:class",
          "docComment": "/**\n * Factory for method decorators\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class MethodDecoratorFactory<T> extends "
            },
            {
              "kind": "Reference",
              "text": "DecoratorFactory",
              "canonicalReference": "@loopback/metadata!DecoratorFactory:class"
            },
            {
              "kind": "Content",
              "text": "<T, "
            },
            {
              "kind": "Reference",
              "text": "MetadataMap",
              "canonicalReference": "@loopback/metadata!MetadataMap:interface"
            },
            {
              "kind": "Content",
              "text": "<T>, "
            },
            {
              "kind": "Reference",
              "text": "MethodDecorator",
              "canonicalReference": "!MethodDecorator:type"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "MethodDecoratorFactory",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MethodDecoratorFactory#create:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "create(): "
                },
                {
                  "kind": "Reference",
                  "text": "MethodDecorator",
                  "canonicalReference": "!MethodDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "create"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MethodDecoratorFactory.createDecorator:member(1)",
              "docComment": "/**\n * Create a method decorator function\n *\n * @param key - Metadata key\n *\n * @param spec - Metadata object from the decorator function\n *\n * @param options - Options for the decorator\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static createDecorator<T>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataKey",
                  "canonicalReference": "@loopback/metadata!MetadataKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, "
                },
                {
                  "kind": "Reference",
                  "text": "MethodDecorator",
                  "canonicalReference": "!MethodDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", spec: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "DecoratorOptions",
                  "canonicalReference": "@loopback/metadata!DecoratorOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MethodDecorator",
                  "canonicalReference": "!MethodDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "spec",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "createDecorator"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MethodDecoratorFactory#mergeWithInherited:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected mergeWithInherited(inheritedMetadata: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", methodName?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", methodDescriptor?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 11,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "inheritedMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "methodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "methodDescriptor",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 10
                  }
                }
              ],
              "name": "mergeWithInherited"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MethodDecoratorFactory#mergeWithOwn:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected mergeWithOwn(ownMetadata: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", methodName?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", methodDescriptor?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 11,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "ownMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "methodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "methodDescriptor",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 10
                  }
                }
              ],
              "name": "mergeWithOwn"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 1,
            "endIndex": 7
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/metadata!MethodMultiDecoratorFactory:class",
          "docComment": "/**\n * Factory for an append-array of method-level decorators The  @response metadata for a method is an array. Each item in the array should be a single value, containing a response code and a single spec or Model. This should allow:\n * ```ts\n *  @response(200, MyFirstModel)\n *  @response(403, [NotAuthorizedReasonOne, NotAuthorizedReasonTwo])\n *  @response(404, NotFoundOne)\n *  @response(404, NotFoundTwo)\n *  @response(409, {schema: {}})\n *  public async myMethod() {}\n * ```\n *\n * In the case that a ResponseObject is passed, it becomes the default for description/content, and if possible, further Models are incorporated as a `oneOf: []` array.\n *\n * In the case that a ReferenceObject is passed, it and it alone is used, since references can be external and we cannot `oneOf` their content.\n *\n * The factory creates and updates an array of items T[], and the getter provides the values as that array.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class MethodMultiDecoratorFactory<T> extends "
            },
            {
              "kind": "Reference",
              "text": "MethodDecoratorFactory",
              "canonicalReference": "@loopback/metadata!MethodDecoratorFactory:class"
            },
            {
              "kind": "Content",
              "text": "<T[]> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "MethodMultiDecoratorFactory",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MethodMultiDecoratorFactory#mergeWithInherited:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected mergeWithInherited(inheritedMetadata: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", methodName?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "inheritedMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "methodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                }
              ],
              "name": "mergeWithInherited"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MethodMultiDecoratorFactory#mergeWithOwn:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected mergeWithOwn(ownMetadata: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", methodName?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", methodDescriptor?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 11,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "ownMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "methodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "methodDescriptor",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 10
                  }
                }
              ],
              "name": "mergeWithOwn"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 1,
            "endIndex": 3
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/metadata!MethodParameterDecoratorFactory:class",
          "docComment": "/**\n * Factory for method level parameter decorator.\n *\n * @example\n *\n * For example, the following code uses `@param` to declare two parameters for `greet()`.\n * ```ts\n * class MyController {\n *   @param('name') // Parameter 0\n *   @param('msg')  // Parameter 1\n *   greet() {}\n * }\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class MethodParameterDecoratorFactory<T> extends "
            },
            {
              "kind": "Reference",
              "text": "DecoratorFactory",
              "canonicalReference": "@loopback/metadata!DecoratorFactory:class"
            },
            {
              "kind": "Content",
              "text": "<T, "
            },
            {
              "kind": "Reference",
              "text": "MetadataMap",
              "canonicalReference": "@loopback/metadata!MetadataMap:interface"
            },
            {
              "kind": "Content",
              "text": "<T[]>, "
            },
            {
              "kind": "Reference",
              "text": "MethodDecorator",
              "canonicalReference": "!MethodDecorator:type"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "MethodParameterDecoratorFactory",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MethodParameterDecoratorFactory#create:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "create(): "
                },
                {
                  "kind": "Reference",
                  "text": "MethodDecorator",
                  "canonicalReference": "!MethodDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "create"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MethodParameterDecoratorFactory.createDecorator:member(1)",
              "docComment": "/**\n * Create a method decorator function\n *\n * @param key - Metadata key\n *\n * @param spec - Metadata object from the decorator function\n *\n * @param options - Options for the decorator\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static createDecorator<T>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataKey",
                  "canonicalReference": "@loopback/metadata!MetadataKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, "
                },
                {
                  "kind": "Reference",
                  "text": "MethodDecorator",
                  "canonicalReference": "!MethodDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", spec: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "DecoratorOptions",
                  "canonicalReference": "@loopback/metadata!DecoratorOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MethodDecorator",
                  "canonicalReference": "!MethodDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "spec",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "createDecorator"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MethodParameterDecoratorFactory#mergeWithInherited:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected mergeWithInherited(inheritedMetadata: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", methodName?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", methodDescriptor?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 11,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "inheritedMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "methodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "methodDescriptor",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 10
                  }
                }
              ],
              "name": "mergeWithInherited"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!MethodParameterDecoratorFactory#mergeWithOwn:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected mergeWithOwn(ownMetadata: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", methodName?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", methodDescriptor?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 11,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "ownMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "methodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "methodDescriptor",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 10
                  }
                }
              ],
              "name": "mergeWithOwn"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 1,
            "endIndex": 7
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/metadata!NamespacedReflect:class",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class NamespacedReflect "
            }
          ],
          "releaseTag": "Public",
          "name": "NamespacedReflect",
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "@loopback/metadata!NamespacedReflect:constructor(1)",
              "docComment": "/**\n * Constructs a new instance of the `NamespacedReflect` class\n *\n * @param namespace - Namespace to bind this reflect context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor(namespace?: "
                },
                {
                  "kind": "Content",
                  "text": "string | undefined"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "namespace",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!NamespacedReflect#decorate:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "decorate(decorators: "
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "PropertyDecorator",
                  "canonicalReference": "!PropertyDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": " | "
                },
                {
                  "kind": "Reference",
                  "text": "MethodDecorator",
                  "canonicalReference": "!MethodDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ")[]"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", targetKey?: "
                },
                {
                  "kind": "Content",
                  "text": "string | symbol"
                },
                {
                  "kind": "Content",
                  "text": ", descriptor?: "
                },
                {
                  "kind": "Reference",
                  "text": "PropertyDescriptor",
                  "canonicalReference": "!PropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "PropertyDescriptor",
                  "canonicalReference": "!PropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": " | "
                },
                {
                  "kind": "Reference",
                  "text": "Function",
                  "canonicalReference": "!Function:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 16
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "decorators",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 6
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 8
                  }
                },
                {
                  "parameterName": "targetKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 9,
                    "endIndex": 10
                  }
                },
                {
                  "parameterName": "descriptor",
                  "parameterTypeTokenRange": {
                    "startIndex": 11,
                    "endIndex": 12
                  }
                }
              ],
              "name": "decorate"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!NamespacedReflect#decorate:member(2)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "decorate(decorators: "
                },
                {
                  "kind": "Reference",
                  "text": "ClassDecorator",
                  "canonicalReference": "!ClassDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "PropertyDescriptor",
                  "canonicalReference": "!PropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": " | "
                },
                {
                  "kind": "Reference",
                  "text": "Function",
                  "canonicalReference": "!Function:interface"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 9
              },
              "releaseTag": "Public",
              "overloadIndex": 2,
              "parameters": [
                {
                  "parameterName": "decorators",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "decorate"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!NamespacedReflect#defineMetadata:member(1)",
              "docComment": "/**\n * define metadata for a target class or it's property/method\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "defineMetadata(metadataKey: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", metadataValue: "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", propertyKey?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "metadataKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "metadataValue",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                },
                {
                  "parameterName": "propertyKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 8
                  }
                }
              ],
              "name": "defineMetadata"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!NamespacedReflect#deleteMetadata:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "deleteMetadata(metadataKey: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", propertyKey?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "metadataKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "propertyKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ],
              "name": "deleteMetadata"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!NamespacedReflect#getMetadata:member(1)",
              "docComment": "/**\n * lookup metadata from a target object and its prototype chain\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getMetadata(metadataKey: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", propertyKey?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "metadataKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "propertyKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ],
              "name": "getMetadata"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!NamespacedReflect#getMetadataKeys:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getMetadataKeys(target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", propertyKey?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "string[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "propertyKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ],
              "name": "getMetadataKeys"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!NamespacedReflect#getOwnMetadata:member(1)",
              "docComment": "/**\n * get own metadata for a target object or it's property/method\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getOwnMetadata(metadataKey: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", propertyKey?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "metadataKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "propertyKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ],
              "name": "getOwnMetadata"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!NamespacedReflect#getOwnMetadataKeys:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "getOwnMetadataKeys(target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", propertyKey?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "string[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "propertyKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ],
              "name": "getOwnMetadataKeys"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!NamespacedReflect#hasMetadata:member(1)",
              "docComment": "/**\n * Check if the target has corresponding metadata\n *\n * @param metadataKey - Key\n *\n * @param target - Target\n *\n * @param propertyKey - Optional property key\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "hasMetadata(metadataKey: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", propertyKey?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "metadataKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "propertyKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ],
              "name": "hasMetadata"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!NamespacedReflect#hasOwnMetadata:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "hasOwnMetadata(metadataKey: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", propertyKey?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "metadataKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "propertyKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ],
              "name": "hasOwnMetadata"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!NamespacedReflect#metadata:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "metadata(metadataKey: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", metadataValue: "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "{\n        (target: "
                },
                {
                  "kind": "Reference",
                  "text": "Function",
                  "canonicalReference": "!Function:interface"
                },
                {
                  "kind": "Content",
                  "text": "): void;\n        (target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", targetKey: string | symbol): void;\n    }"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "metadataKey",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 2
                  }
                },
                {
                  "parameterName": "metadataValue",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ],
              "name": "metadata"
            }
          ],
          "implementsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/metadata!ParameterDecoratorFactory:class",
          "docComment": "/**\n * Factory for parameter decorators\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class ParameterDecoratorFactory<T> extends "
            },
            {
              "kind": "Reference",
              "text": "DecoratorFactory",
              "canonicalReference": "@loopback/metadata!DecoratorFactory:class"
            },
            {
              "kind": "Content",
              "text": "<T, "
            },
            {
              "kind": "Reference",
              "text": "MetadataMap",
              "canonicalReference": "@loopback/metadata!MetadataMap:interface"
            },
            {
              "kind": "Content",
              "text": "<T[]>, "
            },
            {
              "kind": "Reference",
              "text": "ParameterDecorator",
              "canonicalReference": "!ParameterDecorator:type"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "ParameterDecoratorFactory",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!ParameterDecoratorFactory#create:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "create(): "
                },
                {
                  "kind": "Reference",
                  "text": "ParameterDecorator",
                  "canonicalReference": "!ParameterDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "create"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!ParameterDecoratorFactory.createDecorator:member(1)",
              "docComment": "/**\n * Create a parameter decorator function\n *\n * @param key - Metadata key\n *\n * @param spec - Metadata object from the decorator function\n *\n * @param options - Options for the decorator\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static createDecorator<T>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataKey",
                  "canonicalReference": "@loopback/metadata!MetadataKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, "
                },
                {
                  "kind": "Reference",
                  "text": "ParameterDecorator",
                  "canonicalReference": "!ParameterDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", spec: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "DecoratorOptions",
                  "canonicalReference": "@loopback/metadata!DecoratorOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ParameterDecorator",
                  "canonicalReference": "!ParameterDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "spec",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "createDecorator"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!ParameterDecoratorFactory#mergeWithInherited:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected mergeWithInherited(inheritedMetadata: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", methodName?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", parameterIndex?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 11,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "inheritedMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "methodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "parameterIndex",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 10
                  }
                }
              ],
              "name": "mergeWithInherited"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!ParameterDecoratorFactory#mergeWithOwn:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected mergeWithOwn(ownMetadata: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", methodName?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", parameterIndex?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T[]>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 11,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "ownMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "methodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "parameterIndex",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 10
                  }
                }
              ],
              "name": "mergeWithOwn"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 1,
            "endIndex": 7
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "@loopback/metadata!PropertyDecoratorFactory:class",
          "docComment": "/**\n * Factory for property decorators\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class PropertyDecoratorFactory<T> extends "
            },
            {
              "kind": "Reference",
              "text": "DecoratorFactory",
              "canonicalReference": "@loopback/metadata!DecoratorFactory:class"
            },
            {
              "kind": "Content",
              "text": "<T, "
            },
            {
              "kind": "Reference",
              "text": "MetadataMap",
              "canonicalReference": "@loopback/metadata!MetadataMap:interface"
            },
            {
              "kind": "Content",
              "text": "<T>, "
            },
            {
              "kind": "Reference",
              "text": "PropertyDecorator",
              "canonicalReference": "!PropertyDecorator:type"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "PropertyDecoratorFactory",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!PropertyDecoratorFactory#create:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "create(): "
                },
                {
                  "kind": "Reference",
                  "text": "PropertyDecorator",
                  "canonicalReference": "!PropertyDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 1,
                "endIndex": 2
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [],
              "name": "create"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!PropertyDecoratorFactory.createDecorator:member(1)",
              "docComment": "/**\n * Create a property decorator function\n *\n * @param key - Metadata key\n *\n * @param spec - Metadata object from the decorator function\n *\n * @param options - Options for the decorator\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static createDecorator<T>(key: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataKey",
                  "canonicalReference": "@loopback/metadata!MetadataKey:type"
                },
                {
                  "kind": "Content",
                  "text": "<T, "
                },
                {
                  "kind": "Reference",
                  "text": "PropertyDecorator",
                  "canonicalReference": "!PropertyDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", spec: "
                },
                {
                  "kind": "Content",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ", options?: "
                },
                {
                  "kind": "Reference",
                  "text": "DecoratorOptions",
                  "canonicalReference": "@loopback/metadata!DecoratorOptions:interface"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "PropertyDecorator",
                  "canonicalReference": "!PropertyDecorator:type"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "spec",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "createDecorator"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!PropertyDecoratorFactory#mergeWithInherited:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected mergeWithInherited(inheritedMetadata: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", propertyName?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", descriptorOrIndex?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 11,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "inheritedMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "propertyName",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "descriptorOrIndex",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 10
                  }
                }
              ],
              "name": "mergeWithInherited"
            },
            {
              "kind": "Method",
              "canonicalReference": "@loopback/metadata!PropertyDecoratorFactory#mergeWithOwn:member(1)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected mergeWithOwn(ownMetadata: "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ", target: "
                },
                {
                  "kind": "Reference",
                  "text": "Object",
                  "canonicalReference": "!Object:interface"
                },
                {
                  "kind": "Content",
                  "text": ", propertyName?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", descriptorOrParameterIndex?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor",
                  "canonicalReference": "!TypedPropertyDescriptor:interface"
                },
                {
                  "kind": "Content",
                  "text": "<any> | number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "MetadataMap",
                  "canonicalReference": "@loopback/metadata!MetadataMap:interface"
                },
                {
                  "kind": "Content",
                  "text": "<T>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 11,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "ownMetadata",
                  "parameterTypeTokenRange": {
                    "startIndex": 1,
                    "endIndex": 3
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "propertyName",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "descriptorOrParameterIndex",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 10
                  }
                }
              ],
              "name": "mergeWithOwn"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 1,
            "endIndex": 7
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Variable",
          "canonicalReference": "@loopback/metadata!Reflector:var",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "Reflector: "
            },
            {
              "kind": "Reference",
              "text": "NamespacedReflect",
              "canonicalReference": "@loopback/metadata!NamespacedReflect:class"
            }
          ],
          "releaseTag": "Public",
          "name": "Reflector",
          "variableTypeTokenRange": {
            "startIndex": 1,
            "endIndex": 2
          }
        }
      ]
    }
  ]
}
