{
  "metadata": {
    "toolPackage": "@microsoft/api-extractor",
    "toolVersion": "7.2.1",
    "schemaVersion": 1001,
    "oldestForwardsCompatibleVersion": 1001
  },
  "kind": "Package",
  "canonicalReference": "@loopback/context",
  "docComment": "",
  "name": "@loopback/context",
  "members": [
    {
      "kind": "EntryPoint",
      "canonicalReference": "",
      "name": "",
      "members": [
        {
          "kind": "Function",
          "canonicalReference": "(asBindingTemplate:0)",
          "docComment": "/**\n * Convert binding scope and tags as a template function\n *\n * @param scopeAndTags - Binding scope and tags\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "asBindingTemplate"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "scopeAndTags"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "BindingScopeAndTags"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingTemplate"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 7,
            "endIndex": 8
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "scopeAndTags",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "asBindingTemplate"
        },
        {
          "kind": "Function",
          "canonicalReference": "(asClassOrProvider:0)",
          "docComment": "/**\n * A factory function to create a template function to bind the target class as a class or `Provider`.\n *\n * @param target - Target class, which can be an implementation of `Provider`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "asClassOrProvider"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "target"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Constructor"
            },
            {
              "kind": "Content",
              "text": "<unknown>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingTemplate"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 8,
            "endIndex": 9
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              }
            }
          ],
          "name": "asClassOrProvider"
        },
        {
          "kind": "Function",
          "canonicalReference": "(asGlobalInterceptor:0)",
          "docComment": "/**\n * The `BindingTemplate` function to configure a binding as a global interceptor by tagging it with `ContextTags.INTERCEPTOR`\n *\n * @param group - Group for ordering the interceptor\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "asGlobalInterceptor"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "group"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingTemplate"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 7,
            "endIndex": 8
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "group",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "asGlobalInterceptor"
        },
        {
          "kind": "Function",
          "canonicalReference": "(asProvider:0)",
          "docComment": "/**\n * A factory function to create a template function to bind the target class as a `Provider`.\n *\n * @param target - Target provider class\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "asProvider"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "target"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Constructor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Provider"
            },
            {
              "kind": "Content",
              "text": "<unknown>>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingTemplate"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 10,
            "endIndex": 11
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 9
              }
            }
          ],
          "name": "asProvider"
        },
        {
          "kind": "Function",
          "canonicalReference": "(asResolutionOptions:0)",
          "docComment": "/**\n * Normalize ResolutionOptionsOrSession to ResolutionOptions\n *\n * @param optionsOrSession - resolution options or session\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "asResolutionOptions"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "optionsOrSession"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "ResolutionOptionsOrSession"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ResolutionOptions"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 7,
            "endIndex": 8
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "optionsOrSession",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "asResolutionOptions"
        },
        {
          "kind": "Function",
          "canonicalReference": "(assertTargetType:0)",
          "docComment": "/**\n * Assert the target type inspected from TypeScript for injection to be the expected type. If the types don't match, an error is thrown.\n *\n * @param injection - Injection information\n *\n * @param expectedType - Expected type\n *\n * @param expectedTypeName - Name of the expected type to be used in the error\n *\n * @returns The name of the target\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "assertTargetType"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "injection"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Readonly"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Injection"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "expectedType"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Function"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "expectedTypeName"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "string | undefined"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 18,
            "endIndex": 19
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "injection",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 9
              }
            },
            {
              "parameterName": "expectedType",
              "parameterTypeTokenRange": {
                "startIndex": 12,
                "endIndex": 13
              }
            },
            {
              "parameterName": "expectedTypeName",
              "parameterTypeTokenRange": {
                "startIndex": 16,
                "endIndex": 17
              }
            }
          ],
          "name": "assertTargetType"
        },
        {
          "kind": "Function",
          "canonicalReference": "(bind:1)",
          "docComment": "/**\n * Decorate a class with binding configuration\n *\n * @param specs - A list of binding scope/tags or template functions to configure the binding\n *\n * @example\n * ```ts\n * @bind((binding) => {binding.inScope(BindingScope.SINGLETON).tag('controller')}\n * )\n * export class MyController {\n * }\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "bind"
            },
            {
              "kind": "Content",
              "text": "(..."
            },
            {
              "kind": "Reference",
              "text": "specs"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "BindingSpec"
            },
            {
              "kind": "Content",
              "text": "[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ClassDecorator"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 8,
            "endIndex": 9
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "specs",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              }
            }
          ],
          "name": "bind"
        },
        {
          "kind": "Namespace",
          "canonicalReference": "(bind:namespace)",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace "
            },
            {
              "kind": "Reference",
              "text": "bind"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "bind",
          "members": [
            {
              "kind": "Function",
              "canonicalReference": "(provider:0)",
              "docComment": "/**\n * `@bind.provider` to denote a provider class\n *\n * A list of binding scope/tags or template functions to configure the binding\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "function "
                },
                {
                  "kind": "Reference",
                  "text": "provider"
                },
                {
                  "kind": "Content",
                  "text": "(..."
                },
                {
                  "kind": "Reference",
                  "text": "specs"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingSpec"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Provider"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>>) => void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 15
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "specs",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 7
                  }
                }
              ],
              "name": "provider"
            }
          ]
        },
        {
          "kind": "Class",
          "canonicalReference": "(Binding:class)",
          "docComment": "/**\n * Binding represents an entry in the `Context`. Each binding has a key and a corresponding value getter.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class "
            },
            {
              "kind": "Reference",
              "text": "Binding"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Reference",
              "text": "BoundValue"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "Binding",
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "(:constructor,0)",
              "docComment": "/**\n * Constructs a new instance of the `Binding` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "isLocked"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "isLocked",
                  "parameterTypeTokenRange": {
                    "startIndex": 10,
                    "endIndex": 11
                  }
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "(apply:instance,0)",
              "docComment": "/**\n * Apply one or more template functions to set up the binding with scope, tags, and other attributes as a group.\n *\n * @param templateFns - One or more functions to configure the binding\n *\n * @example\n * ```ts\n * const serverTemplate = (binding: Binding) =>\n *   binding.inScope(BindingScope.SINGLETON).tag('server');\n *\n * const serverBinding = new Binding<RestServer>('servers.RestServer1');\n * serverBinding.apply(serverTemplate);\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "apply"
                },
                {
                  "kind": "Content",
                  "text": "(..."
                },
                {
                  "kind": "Reference",
                  "text": "templateFns"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingTemplate"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">[]"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "templateFns",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 8
                  }
                }
              ],
              "name": "apply"
            },
            {
              "kind": "Method",
              "canonicalReference": "(applyDefaultScope:instance,0)",
              "docComment": "/**\n * Apply default scope to the binding. It only changes the scope if it's not set yet\n *\n * @param scope - Default binding scope\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "applyDefaultScope"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "scope"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingScope"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "scope",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "applyDefaultScope"
            },
            {
              "kind": "Method",
              "canonicalReference": "(bind:static,0)",
              "docComment": "/**\n * A static method to create a binding so that we can do `Binding.bind('foo').to('bar');` as `new Binding('foo').to('bar')` is not easy to read.\n *\n * @param key - Binding key\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static "
                },
                {
                  "kind": "Reference",
                  "text": "bind"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "unknown"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 14,
                "endIndex": 18
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 9,
                    "endIndex": 13
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ],
              "name": "bind"
            },
            {
              "kind": "Method",
              "canonicalReference": "(configure:static,0)",
              "docComment": "/**\n * Create a configuration binding for the given key\n *\n * @param key - Key for the binding to be configured\n *\n * @typeparam  - T Generic type for the configuration value (not the binding to be configured)\n *\n * @example\n * ```ts\n * const configBinding = Binding.configure('servers.RestServer.server1')\n *   .to({port: 3000});\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static "
                },
                {
                  "kind": "Reference",
                  "text": "configure"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "unknown"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 11,
                "endIndex": 15
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 9,
                    "endIndex": 10
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ],
              "name": "configure"
            },
            {
              "kind": "Method",
              "canonicalReference": "(getValue:instance,1)",
              "docComment": "/**\n * This is an internal function optimized for performance. Users should use `@inject(key)` or `ctx.get(key)` instead.\n *\n * Get the value bound to this key. Depending on `isSync`, this function returns either: - the bound value - a promise of the bound value\n *\n * Consumers wishing to consume sync values directly should use `isPromiseLike` to check the type of the returned value to decide how to handle it.\n *\n * @param ctx - Context for the resolution\n *\n * @param session - Optional session for binding and dependency resolution\n *\n * @example\n * ```\n * const result = binding.getValue(ctx);\n * if (isPromiseLike(result)) {\n *   result.then(doSomething)\n * } else {\n *   doSomething(result);\n * }\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getValue"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "ctx"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Context"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "session"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 14
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "ctx",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "name": "getValue"
            },
            {
              "kind": "Method",
              "canonicalReference": "(getValue:instance,2)",
              "docComment": "/**\n * Returns a value or promise for this binding in the given context. The resolved value can be `undefined` if `optional` is set to `true` in `options`.\n *\n * @param ctx - Context for the resolution\n *\n * @param options - Optional options for binding and dependency resolution\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getValue"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "ctx"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Context"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "options"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": " | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 14
              },
              "releaseTag": "Public",
              "overloadIndex": 2,
              "parameters": [
                {
                  "parameterName": "ctx",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "name": "getValue"
            },
            {
              "kind": "Method",
              "canonicalReference": "(inScope:instance,0)",
              "docComment": "/**\n * Set the binding scope\n *\n * @param scope - Binding scope\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "inScope"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "scope"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingScope"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "scope",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "inScope"
            },
            {
              "kind": "Property",
              "canonicalReference": "(isLocked:instance)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "isLocked"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "isLocked",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "(key:instance)",
              "docComment": "/**\n * Key of the binding\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "key",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(lock:instance,0)",
              "docComment": "/**\n * Lock the binding so that it cannot be rebound\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "lock"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "lock"
            },
            {
              "kind": "Property",
              "canonicalReference": "(scope:instance)",
              "docComment": "/**\n * Scope of the binding to control how the value is cached/shared\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "scope"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingScope"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "scope",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(tag:instance,0)",
              "docComment": "/**\n * Tag the binding with names or name/value objects. A tag has a name and an optional value. If not supplied, the tag name is used as the value.\n *\n * @param tags - A list of names or name/value objects. Each parameter can be in one of the following forms: - string: A tag name without value - string[]: An array of tag names - TagMap: A map of tag name/value pairs\n *\n * @example\n * ```ts\n * // Add a named tag `controller`\n * binding.tag('controller');\n *\n * // Add two named tags: `controller` and `rest`\n * binding.tag('controller', 'rest');\n *\n * // Add two tags\n * // - `controller` (name = 'controller')\n * // `{name: 'my-controller'}` (name = 'name', value = 'my-controller')\n * binding.tag('controller', {name: 'my-controller'});\n *\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "tag"
                },
                {
                  "kind": "Content",
                  "text": "(..."
                },
                {
                  "kind": "Reference",
                  "text": "tags"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingTag"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "tags",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 6
                  }
                }
              ],
              "name": "tag"
            },
            {
              "kind": "Property",
              "canonicalReference": "(tagMap:instance)",
              "docComment": "/**\n * Map for tag name/value pairs\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "tagMap"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "TagMap"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "tagMap",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "(tagNames:instance)",
              "docComment": "/**\n * Get an array of tag names\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "tagNames"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "tagNames",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(to:instance,0)",
              "docComment": "/**\n * Bind the key to a constant value. The value must be already available at binding time, it is not allowed to pass a Promise instance.\n *\n * @param value - The bound value.\n *\n * @example\n * ```ts\n * ctx.bind('appName').to('CodeHub');\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "to"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "value"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "value",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "to"
            },
            {
              "kind": "Method",
              "canonicalReference": "(toAlias:instance,0)",
              "docComment": "/**\n * Bind the key to an alias of another binding\n *\n * @param keyWithPath - Target binding key with optional path, such as `servers.RestServer.options#apiExplorer`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "toAlias"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "keyWithPath"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "keyWithPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 8
                  }
                }
              ],
              "name": "toAlias"
            },
            {
              "kind": "Method",
              "canonicalReference": "(toClass:instance,0)",
              "docComment": "/**\n * Bind the key to an instance of the given class.\n *\n * @param ctor - The class constructor to call. Any constructor arguments must be annotated with `@inject` so that we can resolve them from the context.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "toClass"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "ctor"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "ctor",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 8
                  }
                }
              ],
              "name": "toClass"
            },
            {
              "kind": "Method",
              "canonicalReference": "(toDynamicValue:instance,0)",
              "docComment": "/**\n * Bind the key to a computed (dynamic) value.\n *\n * @param factoryFn - The factory function creating the value. Both sync and async functions are supported.\n *\n * @example\n * ```ts\n * // synchronous\n * ctx.bind('now').toDynamicValue(() => Date.now());\n *\n * // asynchronous\n * ctx.bind('something').toDynamicValue(\n *  async () => Promise.delay(10).then(doSomething)\n * );\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "toDynamicValue"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "factoryFn"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "() => "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 11
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "factoryFn",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 9
                  }
                }
              ],
              "name": "toDynamicValue"
            },
            {
              "kind": "Method",
              "canonicalReference": "(toJSON:instance,0)",
              "docComment": "/**\n * Convert to a plain JSON object\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "toJSON"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Reference",
                  "text": "Object"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "toJSON"
            },
            {
              "kind": "Method",
              "canonicalReference": "(toProvider:instance,0)",
              "docComment": "/**\n * Bind the key to a value computed by a Provider.\n *\n * *\n *\n * @param provider - The value provider to use.\n *\n * @example\n * ```ts\n * export class DateProvider implements Provider<Date> {\n *   constructor(@inject('stringDate') private param: String){}\n *   value(): Date {\n *     return new Date(param);\n *   }\n * }\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "toProvider"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "providerClass"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Provider"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 11,
                "endIndex": 12
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "providerClass",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 10
                  }
                }
              ],
              "name": "toProvider"
            },
            {
              "kind": "Property",
              "canonicalReference": "(type:instance)",
              "docComment": "/**\n * Type of the binding value getter\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "type"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingType"
                },
                {
                  "kind": "Content",
                  "text": " | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "type",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(unlock:instance,0)",
              "docComment": "/**\n * Unlock the binding\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "unlock"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "unlock"
            },
            {
              "kind": "Property",
              "canonicalReference": "(valueConstructor:instance)",
              "docComment": "/**\n * For bindings bound via toClass, this property contains the constructor function\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "valueConstructor"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Constructor"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": "> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "valueConstructor",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 7
              },
              "isStatic": false
            }
          ],
          "implementsTokenRanges": []
        },
        {
          "kind": "Interface",
          "canonicalReference": "(BindingComparator:interface)",
          "docComment": "/**\n * Compare function to sort an array of bindings. It is used by `Array.prototype.sort()`.\n *\n * @example\n * ```ts\n * const compareByKey: BindingComparator = (a, b) => a.key.localeCompare(b.key);\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "BindingComparator"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "BindingComparator",
          "members": [
            {
              "kind": "CallSignature",
              "canonicalReference": "(:call,0)",
              "docComment": "/**\n * Compare two bindings\n *\n * @param bindingA - First binding\n *\n * @param bindingB - Second binding\n *\n * @returns A number to determine order of bindingA and bindingB - 0 leaves bindingA and bindingB unchanged - <0 bindingA comes before bindingB - >0 bindingA comes after bindingB\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "bindingA"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>>"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "bindingB"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "number"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 15,
                "endIndex": 16
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "bindingA",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "bindingB",
                  "parameterTypeTokenRange": {
                    "startIndex": 10,
                    "endIndex": 14
                  }
                }
              ]
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Enum",
          "canonicalReference": "(BindingCreationPolicy:enum)",
          "docComment": "/**\n * Policy to control if a binding should be created for the context\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare enum "
            },
            {
              "kind": "Reference",
              "text": "BindingCreationPolicy"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "BindingCreationPolicy",
          "members": [
            {
              "kind": "EnumMember",
              "canonicalReference": "ALWAYS_CREATE",
              "docComment": "/**\n * Always create a binding with the key for the context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "ALWAYS_CREATE"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "\"Always\""
                }
              ],
              "releaseTag": "Public",
              "name": "ALWAYS_CREATE",
              "initializerTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "CREATE_IF_NOT_BOUND",
              "docComment": "/**\n * Create a binding if the key is not bound in the context. Otherwise, return the existing binding.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "CREATE_IF_NOT_BOUND"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "\"IfNotBound\""
                }
              ],
              "releaseTag": "Public",
              "name": "CREATE_IF_NOT_BOUND",
              "initializerTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "NEVER_CREATE",
              "docComment": "/**\n * Never create a binding for the context. If the key is not bound in the context, throw an error.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "NEVER_CREATE"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "\"Never\""
                }
              ],
              "releaseTag": "Public",
              "name": "NEVER_CREATE",
              "initializerTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "(BindingElement:interface)",
          "docComment": "/**\n * Wrapper for bindings tracked by resolution sessions\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "BindingElement"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "BindingElement",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "type",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "type"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "'binding'"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "type",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "value",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "value"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "value",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 6
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "(BindingKey:class)",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class "
            },
            {
              "kind": "Reference",
              "text": "BindingKey"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "ValueType"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "ValueType",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "BindingKey",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "(buildKeyForConfig:static,0)",
              "docComment": "/**\n * Build a binding key for the configuration of the given binding. The format is `<key>:$config`\n *\n * @param key - Key of the target binding to be configured\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static "
                },
                {
                  "kind": "Reference",
                  "text": "buildKeyForConfig"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 8
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "buildKeyForConfig"
            },
            {
              "kind": "Property",
              "canonicalReference": "(CONFIG_NAMESPACE:static)",
              "docComment": "/**\n * Name space for configuration binding keys\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static "
                },
                {
                  "kind": "Reference",
                  "text": "CONFIG_NAMESPACE"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "CONFIG_NAMESPACE",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": true
            },
            {
              "kind": "Method",
              "canonicalReference": "(create:static,0)",
              "docComment": "/**\n * Create a new key for a binding bound to a value of type `ValueType`.\n *\n * @param key - The binding key. When propertyPath is not provided, the key is allowed to contain propertyPath as encoded via `BindingKey#toString()`\n *\n * @param propertyPath - Optional path to a deep property of the bound value.\n *\n * @example\n * ```ts\n * BindingKey.create<string>('application.name');\n * BindingKey.create<number>('config', 'rest.port);\n * BindingKey.create<number>('config#rest.port');\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static "
                },
                {
                  "kind": "Reference",
                  "text": "create"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "propertyPath"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 17
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 8
                  }
                },
                {
                  "parameterName": "propertyPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 11,
                    "endIndex": 12
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "create"
            },
            {
              "kind": "Method",
              "canonicalReference": "(deepProperty:instance,0)",
              "docComment": "/**\n * Get a binding address for retrieving a deep property of the object bound to the current binding key.\n *\n * @param propertyPath - A dot-separated path to a (deep) property, e.g. \"server.port\".\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "deepProperty"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "PropertyValueType"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "propertyPath"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "PropertyValueType"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 12
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "propertyPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "PropertyValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "deepProperty"
            },
            {
              "kind": "Property",
              "canonicalReference": "(key:instance)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "key",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(parseKeyWithPath:static,0)",
              "docComment": "/**\n * Parse a string containing both the binding key and the path to the deeply nested property to retrieve.\n *\n * @param keyWithPath - The key with an optional path, e.g. \"application.instance\" or \"config#rest.port\".\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static "
                },
                {
                  "kind": "Reference",
                  "text": "parseKeyWithPath"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "keyWithPath"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 12,
                "endIndex": 16
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "keyWithPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 11
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "parseKeyWithPath"
            },
            {
              "kind": "Property",
              "canonicalReference": "(PROPERTY_SEPARATOR:static)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static readonly "
                },
                {
                  "kind": "Reference",
                  "text": "PROPERTY_SEPARATOR"
                },
                {
                  "kind": "Content",
                  "text": " = \"#\";"
                }
              ],
              "releaseTag": "Public",
              "name": "PROPERTY_SEPARATOR",
              "propertyTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "isStatic": true
            },
            {
              "kind": "Property",
              "canonicalReference": "(propertyPath:instance)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "propertyPath"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "propertyPath",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(toString:instance,0)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "toString"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "toString"
            },
            {
              "kind": "Method",
              "canonicalReference": "(validate:static,0)",
              "docComment": "/**\n * Validate the binding key format. Please note that `#` is reserved. Returns a string representation of the binding key.\n *\n * @param key - Binding key, such as `a`, `a.b`, `a:b`, or `a/b`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static "
                },
                {
                  "kind": "Reference",
                  "text": "validate"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 12,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 11
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "validate"
            }
          ],
          "implementsTokenRanges": []
        },
        {
          "kind": "Enum",
          "canonicalReference": "(BindingScope:enum)",
          "docComment": "/**\n * Scope for binding values\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare enum "
            },
            {
              "kind": "Reference",
              "text": "BindingScope"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "BindingScope",
          "members": [
            {
              "kind": "EnumMember",
              "canonicalReference": "CONTEXT",
              "docComment": "/**\n * The binding provides a value as a singleton within each local context. The value is calculated only once per context and cached for subsequential uses. Child contexts have their own value and do not share with their ancestors.\n *\n * For example, with the following context hierarchy:\n *\n * - `app` (with a binding `'b1'` that produces sequential values 0, 1, ...) - req1 - req2\n *\n * 1. `0` is the resolved value for `'b1'` within the `app` afterward - app.get('b1') ==> 0 (always)\n *\n * 2. `'b1'` is resolved in `app` but not in `req1`, a new value `1` is calculated and used for `req1` afterward - req1.get('b1') ==> 1 (always)\n *\n * 3. `'b1'` is resolved in `app` but not in `req2`, a new value `2` is calculated and used for `req2` afterward - req2.get('b1') ==> 2 (always)\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "CONTEXT"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "\"Context\""
                }
              ],
              "releaseTag": "Public",
              "name": "CONTEXT",
              "initializerTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "SINGLETON",
              "docComment": "/**\n * The binding provides a value as a singleton within the context hierarchy (the owning context and its descendants). The value is calculated only once for the owning context and cached for subsequential uses. Child contexts share the same value as their ancestors.\n *\n * For example, with the following context hierarchy:\n *\n * - `app` (with a binding `'b1'` that produces sequential values 0, 1, ...) - req1 - req2\n *\n * 1. `0` is the singleton for `app` afterward - app.get('b1') ==> 0 (always)\n *\n * 2. `'b1'` is resolved in `app`, reuse it for `req1` - req1.get('b1') ==> 0 (always)\n *\n * 3. `'b1'` is resolved in `app`, reuse it for `req2` - req2.get('b1') ==> 0 (always)\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "SINGLETON"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "\"Singleton\""
                }
              ],
              "releaseTag": "Public",
              "name": "SINGLETON",
              "initializerTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "TRANSIENT",
              "docComment": "/**\n * The binding provides a value that is calculated each time. This will be the default scope if not set.\n *\n * For example, with the following context hierarchy:\n *\n * - `app` (with a binding `'b1'` that produces sequential values 0, 1, ...) - req1 - req2\n *\n * Now `'b1'` is resolved to a new value each time for `app` and its descendants `req1` and `req2`: - app.get('b1') ==> 0 - req1.get('b1') ==> 1 - req2.get('b1') ==> 2 - req2.get('b1') ==> 3 - app.get('b1') ==> 4\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "TRANSIENT"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "\"Transient\""
                }
              ],
              "releaseTag": "Public",
              "name": "TRANSIENT",
              "initializerTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "(bindingTemplateFor:0)",
          "docComment": "/**\n * Get the binding template for a class with binding metadata\n *\n * @param cls - A class with optional `@bind`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "bindingTemplateFor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": ">("
            },
            {
              "kind": "Reference",
              "text": "cls"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Constructor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "Provider"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingTemplate"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 18,
            "endIndex": 22
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "cls",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 17
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "bindingTemplateFor"
        },
        {
          "kind": "Enum",
          "canonicalReference": "(BindingType:enum)",
          "docComment": "/**\n * Type of the binding source\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare enum "
            },
            {
              "kind": "Reference",
              "text": "BindingType"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "BindingType",
          "members": [
            {
              "kind": "EnumMember",
              "canonicalReference": "ALIAS",
              "docComment": "/**\n * A alias to another binding key with optional path\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "ALIAS"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "\"Alias\""
                }
              ],
              "releaseTag": "Public",
              "name": "ALIAS",
              "initializerTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "CLASS",
              "docComment": "/**\n * A class to be instantiated as the value\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "CLASS"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "\"Class\""
                }
              ],
              "releaseTag": "Public",
              "name": "CLASS",
              "initializerTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "CONSTANT",
              "docComment": "/**\n * A fixed value\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "CONSTANT"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "\"Constant\""
                }
              ],
              "releaseTag": "Public",
              "name": "CONSTANT",
              "initializerTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "DYNAMIC_VALUE",
              "docComment": "/**\n * A function to get the value\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "DYNAMIC_VALUE"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "\"DynamicValue\""
                }
              ],
              "releaseTag": "Public",
              "name": "DYNAMIC_VALUE",
              "initializerTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "EnumMember",
              "canonicalReference": "PROVIDER",
              "docComment": "/**\n * A provider class with `value()` function to get the value\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "PROVIDER"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "\"Provider\""
                }
              ],
              "releaseTag": "Public",
              "name": "PROVIDER",
              "initializerTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "(compareBindingsByTag:0)",
          "docComment": "/**\n * Creates a binding compare function to sort bindings by tagged phase name.\n *\n * @remarks\n *\n * Two bindings are compared as follows:\n *\n * 1. Get values for the given tag as `phase` for bindings, if the tag is not present, default `phase` to `''`. 2. If both bindings have `phase` value in `orderOfPhases`, honor the order specified by `orderOfPhases`. 3. If a binding's `phase` does not exist in `orderOfPhases`, it comes before the one with `phase` exists in `orderOfPhases`. 4. If both bindings have `phase` value outside of `orderOfPhases`, they are ordered by phase names alphabetically and symbol values come before string values.\n *\n * @param phaseTagName - Name of the binding tag for phase\n *\n * @param orderOfPhases - An array of phase names as the predefined order\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "compareBindingsByTag"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "phaseTagName"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "orderOfPhases"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Content",
              "text": "(string | symbol)[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingComparator"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 11,
            "endIndex": 12
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "phaseTagName",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "orderOfPhases",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            }
          ],
          "name": "compareBindingsByTag"
        },
        {
          "kind": "Function",
          "canonicalReference": "(compareByOrder:0)",
          "docComment": "/**\n * Compare two values by the predefined order\n *\n * @remarks\n *\n * The comparison is performed as follows:\n *\n * 1. If both values are included in `order`, they are sorted by their indexes in `order`. 2. The value included in `order` comes after the value not included in `order`. 3. If neither values are included in `order`, they are sorted: - symbol values come before string values - alphabetical order for two symbols or two strings\n *\n * @param a - First value\n *\n * @param b - Second value\n *\n * @param order - An array of values as the predefined order\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "compareByOrder"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "a"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "string | symbol | undefined | null"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "b"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "string | symbol | undefined | null"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "order"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Content",
              "text": "(string | symbol)[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "number"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 15,
            "endIndex": 16
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "a",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "b",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            },
            {
              "parameterName": "order",
              "parameterTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 14
              }
            }
          ],
          "name": "compareByOrder"
        },
        {
          "kind": "Function",
          "canonicalReference": "(config:1)",
          "docComment": "/**\n * Inject a property from `config` of the current binding. If no corresponding config value is present, `undefined` will be injected as the configuration binding is resolved with `optional: true` by default.\n *\n * @param configPath - Optional property path of the config. If is `''` or not present, the `config` object will be returned.\n *\n * @param metadata - Optional metadata to help the injection\n *\n * @example\n * ```ts\n * class Store {\n *   constructor(\n *     @config('x') public optionX: number,\n *     @config('y') public optionY: string,\n *   ) { }\n * }\n *\n * ctx.configure('store1', { x: 1, y: 'a' });\n * ctx.configure('store2', { x: 2, y: 'b' });\n *\n * ctx.bind('store1').toClass(Store);\n * ctx.bind('store2').toClass(Store);\n *\n * const store1 = ctx.getSync('store1');\n * expect(store1.optionX).to.eql(1);\n * expect(store1.optionY).to.eql('a');\n *\n * const store2 = ctx.getSync('store2');\n * expect(store2.optionX).to.eql(2);\n * expect(store2.optionY).to.eql('b');\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "config"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "configPath"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "metadata"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "InjectionMetadata"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "target"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Object"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "member"
            },
            {
              "kind": "Content",
              "text": ": string, "
            },
            {
              "kind": "Reference",
              "text": "methodDescriptorOrParameterIndex"
            },
            {
              "kind": "Content",
              "text": "?: number | "
            },
            {
              "kind": "Reference",
              "text": "TypedPropertyDescriptor"
            },
            {
              "kind": "Content",
              "text": "<any> | undefined) => void"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 11,
            "endIndex": 22
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "configPath",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "metadata",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            }
          ],
          "name": "config"
        },
        {
          "kind": "Namespace",
          "canonicalReference": "(config:namespace)",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace "
            },
            {
              "kind": "Reference",
              "text": "config"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "config",
          "members": [
            {
              "kind": "Variable",
              "canonicalReference": "getter",
              "docComment": "/**\n * `@inject.getter` decorator to inject a config getter function\n *\n * @param configPath - Optional property path of the config object\n *\n * @param metadata - Injection metadata\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getter"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "configPath"
                },
                {
                  "kind": "Content",
                  "text": "?: string | undefined, "
                },
                {
                  "kind": "Reference",
                  "text": "metadata"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "InjectionMetadata"
                },
                {
                  "kind": "Content",
                  "text": " | undefined) => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Object"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "member"
                },
                {
                  "kind": "Content",
                  "text": ": string, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptorOrParameterIndex"
                },
                {
                  "kind": "Content",
                  "text": "?: number | "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => void"
                }
              ],
              "releaseTag": "Public",
              "name": "getter",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 19
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "view",
              "docComment": "/**\n * `@inject.view` decorator to inject a config context view to allow dynamic changes in configuration\n *\n * @param configPath - Optional property path of the config object\n *\n * @param metadata - Injection metadata\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "view"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "configPath"
                },
                {
                  "kind": "Content",
                  "text": "?: string | undefined, "
                },
                {
                  "kind": "Reference",
                  "text": "metadata"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "InjectionMetadata"
                },
                {
                  "kind": "Content",
                  "text": " | undefined) => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Object"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "member"
                },
                {
                  "kind": "Content",
                  "text": ": string, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptorOrParameterIndex"
                },
                {
                  "kind": "Content",
                  "text": "?: number | "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => void"
                }
              ],
              "releaseTag": "Public",
              "name": "view",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 19
              }
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "(configBindingKeyFor:0)",
          "docComment": "/**\n * Create binding key for configuration of the binding\n *\n * @param key - Binding key for the target binding\n *\n * @param configPath - Property path for the configuration\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "configBindingKeyFor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "ConfigValueType"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": ">("
            },
            {
              "kind": "Reference",
              "text": "key"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "BindingAddress"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "configPath"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingKey"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "ConfigValueType"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 15,
            "endIndex": 19
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "key",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            },
            {
              "parameterName": "configPath",
              "parameterTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 14
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "ConfigValueType",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "configBindingKeyFor"
        },
        {
          "kind": "Interface",
          "canonicalReference": "(ConfigurationResolver:interface)",
          "docComment": "/**\n * Resolver for configuration of bindings. It's responsible for finding corresponding configuration for a given binding key.\n *\n * By default, `undefined` is expected if no configuration is provided. The behavior can be overridden by setting `optional` to `false` in resolution options.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "ConfigurationResolver"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "ConfigurationResolver",
          "members": [
            {
              "kind": "MethodSignature",
              "canonicalReference": "(getConfigAsValueOrPromise:0)",
              "docComment": "/**\n * Resolve config for the binding key\n *\n * @param key - Binding key\n *\n * @param configPath - Property path for the option. For example, `x.y` requests for `<config>.x.y`. If not set, the `config` object will be returned.\n *\n * @param resolutionOptions - Options for the resolution. - optional: if not set or set to `true`, `undefined` will be returned if no corresponding value is found. Otherwise, an error will be thrown.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getConfigAsValueOrPromise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ConfigValueType"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "configPath"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "resolutionOptions"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ConfigValueType"
                },
                {
                  "kind": "Content",
                  "text": " | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 17,
                "endIndex": 21
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 8
                  }
                },
                {
                  "parameterName": "configPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 11,
                    "endIndex": 12
                  }
                },
                {
                  "parameterName": "resolutionOptions",
                  "parameterTypeTokenRange": {
                    "startIndex": 15,
                    "endIndex": 16
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ConfigValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getConfigAsValueOrPromise"
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "(Context:class)",
          "docComment": "/**\n * Context provides an implementation of Inversion of Control (IoC) container\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Reference",
              "text": "EventEmitter"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "Context",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "(_mergeWithParent:instance,0)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected "
                },
                {
                  "kind": "Reference",
                  "text": "_mergeWithParent"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "childList"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">>[]"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "parentList"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">>[]"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">>[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 23,
                "endIndex": 29
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "childList",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 13
                  }
                },
                {
                  "parameterName": "parentList",
                  "parameterTypeTokenRange": {
                    "startIndex": 16,
                    "endIndex": 22
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "_mergeWithParent"
            },
            {
              "kind": "Property",
              "canonicalReference": "(_parent:instance)",
              "docComment": "/**\n * Parent context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected "
                },
                {
                  "kind": "Reference",
                  "text": "_parent"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "Context"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "_parent",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "(_parentEventListeners:instance)",
              "docComment": "/**\n * Event listeners for parent context keyed by event names. It keeps track of listeners from this context against its parent so that we can remove these listeners when this context is closed.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected "
                },
                {
                  "kind": "Reference",
                  "text": "_parentEventListeners"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Map"
                },
                {
                  "kind": "Content",
                  "text": "<string, (..."
                },
                {
                  "kind": "Reference",
                  "text": "args"
                },
                {
                  "kind": "Content",
                  "text": ": any[]) => void> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "_parentEventListeners",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 7
              },
              "isStatic": false
            },
            {
              "kind": "Constructor",
              "canonicalReference": "(:constructor,0)",
              "docComment": "/**\n * Create a new context.\n *\n * @param _parent - The optional parent context\n *\n * @param name - Name of the context, if not provided, a `uuid` will be generated as the name\n *\n * @example\n * ```ts\n * // Create a new root context, let the framework to create a unique name\n * const rootCtx = new Context();\n *\n * // Create a new child context inheriting bindings from `rootCtx`\n * const childCtx = new Context(rootCtx);\n *\n * // Create another root context called \"application\"\n * const appCtx = new Context('application');\n *\n * // Create a new child context called \"request\" and inheriting bindings\n * // from `appCtx`\n * const reqCtx = new Context(appCtx, 'request');\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor("
                },
                {
                  "kind": "Reference",
                  "text": "_parent"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "Context"
                },
                {
                  "kind": "Content",
                  "text": " | string"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "name"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "_parent",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "name",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "(add:instance,0)",
              "docComment": "/**\n * Add a binding to the context. If a locked binding already exists with the same key, an error will be thrown.\n *\n * @param binding - The configured binding to be added\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "add"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "binding"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "this"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "binding",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 6
                  }
                }
              ],
              "name": "add"
            },
            {
              "kind": "Method",
              "canonicalReference": "(bind:instance,0)",
              "docComment": "/**\n * Create a binding with the given key in the context. If a locked binding already exists with the same key, an error will be thrown.\n *\n * @param key - Binding key\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "bind"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 17
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 12
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "bind"
            },
            {
              "kind": "Method",
              "canonicalReference": "(close:instance,0)",
              "docComment": "/**\n * Close the context: clear observers, stop notifications, and remove event listeners from its parent context.\n *\n * @remarks\n *\n * This method MUST be called to avoid memory leaks once a context object is no longer needed and should be recycled. An example is the `RequestContext`, which is created per request.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "close"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "close"
            },
            {
              "kind": "Property",
              "canonicalReference": "(configResolver:instance)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected "
                },
                {
                  "kind": "Reference",
                  "text": "configResolver"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "ConfigurationResolver"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "configResolver",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(configure:instance,0)",
              "docComment": "/**\n * Create a corresponding binding for configuration of the target bound by the given key in the context.\n *\n * For example, `ctx.configure('controllers.MyController').to({x: 1})` will create binding `controllers.MyController:$config` with value `{x: 1}`.\n *\n * @param key - The key for the binding to be configured\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "configure"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ConfigValueType"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ConfigValueType"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 14
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ConfigValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "configure"
            },
            {
              "kind": "Method",
              "canonicalReference": "(contains:instance,0)",
              "docComment": "/**\n * Check if a binding exists with the given key in the local context without delegating to the parent context\n *\n * @param key - Binding key\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "contains"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "contains"
            },
            {
              "kind": "Method",
              "canonicalReference": "(createView:instance,0)",
              "docComment": "/**\n * Create a view of the context chain with the given binding filter\n *\n * @param filter - A function to match bindings\n *\n * @param comparator - A function to sort matched bindings\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "createView"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Content",
                  "text": "unknown"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "filter"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingFilter"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "comparator"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingComparator"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ContextView"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 14,
                "endIndex": 18
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "filter",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                },
                {
                  "parameterName": "comparator",
                  "parameterTypeTokenRange": {
                    "startIndex": 12,
                    "endIndex": 13
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "createView"
            },
            {
              "kind": "Method",
              "canonicalReference": "(find:instance,0)",
              "docComment": "/**\n * Find bindings using a key pattern or filter function\n *\n * @param pattern - A filter function, a regexp or a wildcard pattern with optional `*` and `?`. Find returns such bindings where the key matches the provided pattern.\n *\n * For a wildcard: - `*` matches zero or more characters except `.` and `:` - `?` matches exactly one character except `.` and `:`\n *\n * For a filter function: - return `true` to include the binding in the results - return `false` to exclude it.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "find"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "pattern"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string | "
                },
                {
                  "kind": "Reference",
                  "text": "RegExp"
                },
                {
                  "kind": "Content",
                  "text": " | "
                },
                {
                  "kind": "Reference",
                  "text": "BindingFilter"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">>[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 19
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "pattern",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 12
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "find"
            },
            {
              "kind": "Method",
              "canonicalReference": "(findByTag:instance,0)",
              "docComment": "/**\n * Find bindings using the tag filter. If the filter matches one of the binding tags, the binding is included.\n *\n * @param tagFilter - A filter for tags. It can be in one of the following forms: - A regular expression, such as `/controller/` - A wildcard pattern string with optional `*` and `?`, such as `'con*'` For a wildcard: - `*` matches zero or more characters except `.` and `:` - `?` matches exactly one character except `.` and `:` - An object containing tag name/value pairs, such as `{name: 'my-controller'}`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "findByTag"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "tagFilter"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingTag"
                },
                {
                  "kind": "Content",
                  "text": " | "
                },
                {
                  "kind": "Reference",
                  "text": "RegExp"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">>[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 12,
                "endIndex": 18
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "tagFilter",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 11
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "findByTag"
            },
            {
              "kind": "Method",
              "canonicalReference": "(findOrCreateBinding:instance,0)",
              "docComment": "/**\n * Find or create a binding for the given key\n *\n * @param key - Binding address\n *\n * @param policy - Binding creation policy\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "findOrCreateBinding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "policy"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingCreationPolicy"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 15,
                "endIndex": 19
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 10
                  }
                },
                {
                  "parameterName": "policy",
                  "parameterTypeTokenRange": {
                    "startIndex": 13,
                    "endIndex": 14
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "findOrCreateBinding"
            },
            {
              "kind": "Method",
              "canonicalReference": "(get:instance,1)",
              "docComment": "/**\n * Get the value bound to the given key, throw an error when no value is bound for the given key.\n *\n * @param keyWithPath - The binding key, optionally suffixed with a path to the (deeply) nested property to retrieve.\n *\n * @param session - Optional session for resolution (accepted for backward compatibility)\n *\n * @returns A promise of the bound value.\n *\n * @example\n * ```ts\n * // get the value bound to \"application.instance\"\n * const app = await ctx.get<Application>('application.instance');\n *\n * // get \"rest\" property from the value bound to \"config\"\n * const config = await ctx.get<RestComponentConfig>('config#rest');\n *\n * // get \"a\" property of \"numbers\" property from the value bound to \"data\"\n * ctx.bind('data').to({numbers: {a: 1, b: 2}, port: 3000});\n * const a = await ctx.get<number>('data#numbers.a');\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "get"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "keyWithPath"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "session"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 15,
                "endIndex": 19
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "keyWithPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 10
                  }
                },
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 13,
                    "endIndex": 14
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "get"
            },
            {
              "kind": "Method",
              "canonicalReference": "(get:instance,2)",
              "docComment": "/**\n * Get the value bound to the given key, optionally return a (deep) property of the bound value.\n *\n * @param keyWithPath - The binding key, optionally suffixed with a path to the (deeply) nested property to retrieve.\n *\n * @param options - Options for resolution.\n *\n * @returns A promise of the bound value, or a promise of undefined when the optional binding is not found.\n *\n * @example\n * ```ts\n * // get \"rest\" property from the value bound to \"config\"\n * // use `undefined` when no config is provided\n * const config = await ctx.get<RestComponentConfig>('config#rest', {\n *   optional: true\n * });\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "get"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "keyWithPath"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "options"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": " | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 15,
                "endIndex": 19
              },
              "releaseTag": "Public",
              "overloadIndex": 2,
              "parameters": [
                {
                  "parameterName": "keyWithPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 10
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 13,
                    "endIndex": 14
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "get"
            },
            {
              "kind": "Method",
              "canonicalReference": "(getBinding:instance,1)",
              "docComment": "/**\n * Look up a binding by key in the context and its ancestors. If no matching binding is found, an error will be thrown.\n *\n * @param key - Binding key\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getBinding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": " = "
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 17
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 12
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "getBinding"
            },
            {
              "kind": "Method",
              "canonicalReference": "(getBinding:instance,2)",
              "docComment": "/**\n * Look up a binding by key in the context and its ancestors. If no matching binding is found and `options.optional` is not set to true, an error will be thrown.\n *\n * @param key - Binding key\n *\n * @param options - Options to control if the binding is optional. If `options.optional` is set to true, the method will return `undefined` instead of throwing an error if the binding key is not found.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getBinding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "options"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "{\n        "
                },
                {
                  "kind": "Reference",
                  "text": "optional"
                },
                {
                  "kind": "Content",
                  "text": "?: boolean;\n    }"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": "> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 17,
                "endIndex": 21
              },
              "releaseTag": "Public",
              "overloadIndex": 2,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 10
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 13,
                    "endIndex": 16
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getBinding"
            },
            {
              "kind": "Method",
              "canonicalReference": "(getConfig:instance,0)",
              "docComment": "/**\n * Resolve configuration for the binding by key\n *\n * @param key - Binding key\n *\n * @param configPath - Property path for the option. For example, `x.y` requests for `<config>.x.y`. If not set, the `<config>` object will be returned.\n *\n * @param resolutionOptions - Options for the resolution.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getConfig"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ConfigValueType"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "configPath"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "resolutionOptions"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ConfigValueType"
                },
                {
                  "kind": "Content",
                  "text": " | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 16,
                "endIndex": 20
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "configPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 10,
                    "endIndex": 11
                  }
                },
                {
                  "parameterName": "resolutionOptions",
                  "parameterTypeTokenRange": {
                    "startIndex": 14,
                    "endIndex": 15
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ConfigValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getConfig"
            },
            {
              "kind": "Method",
              "canonicalReference": "(getConfigAsValueOrPromise:instance,0)",
              "docComment": "/**\n * Get the value or promise of configuration for a given binding by key\n *\n * @param key - Binding key\n *\n * @param configPath - Property path for the option. For example, `x.y` requests for `<config>.x.y`. If not set, the `<config>` object will be returned.\n *\n * @param resolutionOptions - Options for the resolution. - optional: if not set or set to `true`, `undefined` will be returned if no corresponding value is found. Otherwise, an error will be thrown.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getConfigAsValueOrPromise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ConfigValueType"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "configPath"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "resolutionOptions"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ConfigValueType"
                },
                {
                  "kind": "Content",
                  "text": " | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 16,
                "endIndex": 20
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "configPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 10,
                    "endIndex": 11
                  }
                },
                {
                  "parameterName": "resolutionOptions",
                  "parameterTypeTokenRange": {
                    "startIndex": 14,
                    "endIndex": 15
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ConfigValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getConfigAsValueOrPromise"
            },
            {
              "kind": "Method",
              "canonicalReference": "(getConfigSync:instance,0)",
              "docComment": "/**\n * Resolve configuration synchronously for the binding by key\n *\n * @param key - Binding key\n *\n * @param configPath - Property path for the option. For example, `x.y` requests for `config.x.y`. If not set, the `config` object will be returned.\n *\n * @param resolutionOptions - Options for the resolution.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getConfigSync"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ConfigValueType"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "configPath"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "resolutionOptions"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ConfigValueType"
                },
                {
                  "kind": "Content",
                  "text": " | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 16,
                "endIndex": 18
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 7
                  }
                },
                {
                  "parameterName": "configPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 10,
                    "endIndex": 11
                  }
                },
                {
                  "parameterName": "resolutionOptions",
                  "parameterTypeTokenRange": {
                    "startIndex": 14,
                    "endIndex": 15
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ConfigValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getConfigSync"
            },
            {
              "kind": "Method",
              "canonicalReference": "(getOwnerContext:instance,0)",
              "docComment": "/**\n * Get the owning context for a binding key\n *\n * @param key - Binding key\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getOwnerContext"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Context"
                },
                {
                  "kind": "Content",
                  "text": " | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 8
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "getOwnerContext"
            },
            {
              "kind": "Method",
              "canonicalReference": "(getSync:instance,1)",
              "docComment": "/**\n * Get the synchronous value bound to the given key, optionally return a (deep) property of the bound value.\n *\n * This method throws an error if the bound value requires async computation (returns a promise). You should never rely on sync bindings in production code.\n *\n * @param keyWithPath - The binding key, optionally suffixed with a path to the (deeply) nested property to retrieve.\n *\n * @param session - Session for resolution (accepted for backward compatibility)\n *\n * @returns A promise of the bound value.\n *\n * @example\n * ```ts\n * // get the value bound to \"application.instance\"\n * const app = ctx.getSync<Application>('application.instance');\n *\n * // get \"rest\" property from the value bound to \"config\"\n * const config = await ctx.getSync<RestComponentConfig>('config#rest');\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getSync"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "keyWithPath"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "session"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 15,
                "endIndex": 16
              },
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "keyWithPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 10
                  }
                },
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 13,
                    "endIndex": 14
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getSync"
            },
            {
              "kind": "Method",
              "canonicalReference": "(getSync:instance,2)",
              "docComment": "/**\n * Get the synchronous value bound to the given key, optionally return a (deep) property of the bound value.\n *\n * This method throws an error if the bound value requires async computation (returns a promise). You should never rely on sync bindings in production code.\n *\n * @param keyWithPath - The binding key, optionally suffixed with a path to the (deeply) nested property to retrieve.\n *\n * @param options - Options for resolution.\n *\n * @returns The bound value, or undefined when an optional binding is not found.\n *\n * @example\n * ```ts\n * // get \"rest\" property from the value bound to \"config\"\n * // use \"undefined\" when no config is provided\n * const config = await ctx.getSync<RestComponentConfig>('config#rest', {\n *   optional: true\n * });\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getSync"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "keyWithPath"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "options"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": " | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 15,
                "endIndex": 17
              },
              "releaseTag": "Public",
              "overloadIndex": 2,
              "parameters": [
                {
                  "parameterName": "keyWithPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 10
                  }
                },
                {
                  "parameterName": "options",
                  "parameterTypeTokenRange": {
                    "startIndex": 13,
                    "endIndex": 14
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getSync"
            },
            {
              "kind": "Method",
              "canonicalReference": "(isBound:instance,0)",
              "docComment": "/**\n * Check if a key is bound in the context or its ancestors\n *\n * @param key - Binding key\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "isBound"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "isBound"
            },
            {
              "kind": "Method",
              "canonicalReference": "(isSubscribed:instance,0)",
              "docComment": "/**\n * Check if an observer is subscribed to this context\n *\n * @param observer - Context observer\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "isSubscribed"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "observer"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "ContextObserver"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "observer",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "isSubscribed"
            },
            {
              "kind": "Property",
              "canonicalReference": "(name:instance)",
              "docComment": "/**\n * Name of the context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "name"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "name",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(notifyObservers:instance,0)",
              "docComment": "/**\n * Publish an event to the registered observers. Please note the notification is queued and performed asynchronously so that we allow fluent APIs such as `ctx.bind('key').to(...).tag(...);` and give observers the fully populated binding.\n *\n * @param eventType - Event names: `bind` or `unbind`\n *\n * @param binding - Binding bound or unbound\n *\n * @param context - Owner context\n *\n * @param observers - Current set of context observers\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected "
                },
                {
                  "kind": "Reference",
                  "text": "notifyObservers"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "eventType"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "ContextEventType"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "binding"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>>"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "context"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Context"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "observers"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "Set"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ContextEventObserver"
                },
                {
                  "kind": "Content",
                  "text": "> | undefined"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise"
                },
                {
                  "kind": "Content",
                  "text": "<void>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 25,
                "endIndex": 27
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "eventType",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                },
                {
                  "parameterName": "binding",
                  "parameterTypeTokenRange": {
                    "startIndex": 9,
                    "endIndex": 13
                  }
                },
                {
                  "parameterName": "context",
                  "parameterTypeTokenRange": {
                    "startIndex": 16,
                    "endIndex": 17
                  }
                },
                {
                  "parameterName": "observers",
                  "parameterTypeTokenRange": {
                    "startIndex": 20,
                    "endIndex": 24
                  }
                }
              ],
              "name": "notifyObservers"
            },
            {
              "kind": "Property",
              "canonicalReference": "(observers:instance)",
              "docComment": "/**\n * A list of registered context observers. The Set will be created when the first observer is added.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected "
                },
                {
                  "kind": "Reference",
                  "text": "observers"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Set"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ContextEventObserver"
                },
                {
                  "kind": "Content",
                  "text": "> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "observers",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 7
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "(registry:instance)",
              "docComment": "/**\n * Key to binding map as the internal registry\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected readonly "
                },
                {
                  "kind": "Reference",
                  "text": "registry"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Map"
                },
                {
                  "kind": "Content",
                  "text": "<string, "
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "registry",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 7
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(setupConfigurationResolverIfNeeded:instance,0)",
              "docComment": "/**\n * Set up the configuration resolver if needed\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected "
                },
                {
                  "kind": "Reference",
                  "text": "setupConfigurationResolverIfNeeded"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Reference",
                  "text": "ConfigurationResolver"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "setupConfigurationResolverIfNeeded"
            },
            {
              "kind": "Method",
              "canonicalReference": "(subscribe:instance,0)",
              "docComment": "/**\n * Add a context event observer to the context\n *\n * @param observer - Context observer instance or function\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "subscribe"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "observer"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "ContextEventObserver"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Subscription"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "observer",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "subscribe"
            },
            {
              "kind": "Method",
              "canonicalReference": "(toJSON:instance,0)",
              "docComment": "/**\n * Create a plain JSON object for the context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "toJSON"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Reference",
                  "text": "Object"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "toJSON"
            },
            {
              "kind": "Method",
              "canonicalReference": "(unbind:instance,0)",
              "docComment": "/**\n * Unbind a binding from the context. No parent contexts will be checked.\n *\n * @remarks\n *\n * If you need to unbind a binding owned by a parent context, use the code below:\n * ```ts\n * const ownerCtx = ctx.getOwnerContext(key);\n * return ownerCtx != null && ownerCtx.unbind(key);\n * ```\n *\n * @param key - Binding key\n *\n * @returns true if the binding key is found and removed from this context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "unbind"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "unbind"
            },
            {
              "kind": "Method",
              "canonicalReference": "(unsubscribe:instance,0)",
              "docComment": "/**\n * Remove the context event observer from the context\n *\n * @param observer - Context event observer\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "unsubscribe"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "observer"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "ContextEventObserver"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 7
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "observer",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "unsubscribe"
            },
            {
              "kind": "Method",
              "canonicalReference": "(waitUntilPendingNotificationsDone:instance,0)",
              "docComment": "/**\n * Wait until observers are notified for all of currently pending notification events.\n *\n * This method is for test only to perform assertions after observers are notified for relevant events.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected "
                },
                {
                  "kind": "Reference",
                  "text": "waitUntilPendingNotificationsDone"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "timeout"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "number"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise"
                },
                {
                  "kind": "Content",
                  "text": "<void>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 9
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "timeout",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ],
              "name": "waitUntilPendingNotificationsDone"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 3,
            "endIndex": 5
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Namespace",
          "canonicalReference": "(ContextBindings:namespace)",
          "docComment": "/**\n * Namespace for context bindings\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace "
            },
            {
              "kind": "Reference",
              "text": "ContextBindings"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "ContextBindings",
          "members": [
            {
              "kind": "Variable",
              "canonicalReference": "CONFIGURATION_RESOLVER",
              "docComment": "/**\n * Binding key for ConfigurationResolver\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "CONFIGURATION_RESOLVER"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ConfigurationResolver"
                },
                {
                  "kind": "Content",
                  "text": ">"
                }
              ],
              "releaseTag": "Public",
              "name": "CONFIGURATION_RESOLVER",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 6
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "GLOBAL_INTERCEPTOR_ORDERED_GROUPS",
              "docComment": "/**\n * Binding key for ordered groups of global interceptors\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "GLOBAL_INTERCEPTOR_ORDERED_GROUPS"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingKey"
                },
                {
                  "kind": "Content",
                  "text": "<string[]>"
                }
              ],
              "releaseTag": "Public",
              "name": "GLOBAL_INTERCEPTOR_ORDERED_GROUPS",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 4
              }
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "(ContextObserver:interface)",
          "docComment": "/**\n * Observers of context bind/unbind events\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "ContextObserver"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "ContextObserver",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "filter",
              "docComment": "/**\n * An optional filter function to match bindings. If not present, the listener will be notified of all binding events.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "filter"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingFilter"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "filter",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "observe",
              "docComment": "/**\n * Listen on `bind`, `unbind`, or other events\n *\n * @param eventType - Context event type\n *\n * @param binding - The binding as event source\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "observe"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "ContextObserverFn"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "observe",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Namespace",
          "canonicalReference": "(ContextTags:namespace)",
          "docComment": "/**\n * Namespace for context tags\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace "
            },
            {
              "kind": "Reference",
              "text": "ContextTags"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "ContextTags",
          "members": [
            {
              "kind": "Variable",
              "canonicalReference": "CLASS",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "CLASS"
                },
                {
                  "kind": "Content",
                  "text": " = \"class\""
                }
              ],
              "releaseTag": "Public",
              "name": "CLASS",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "CONFIGURATION_FOR",
              "docComment": "/**\n * Binding tag to associate a configuration binding with the target binding key\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "CONFIGURATION_FOR"
                },
                {
                  "kind": "Content",
                  "text": " = \"configurationFor\""
                }
              ],
              "releaseTag": "Public",
              "name": "CONFIGURATION_FOR",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "GLOBAL_INTERCEPTOR",
              "docComment": "/**\n * Binding tag for global interceptors\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "GLOBAL_INTERCEPTOR"
                },
                {
                  "kind": "Content",
                  "text": " = \"globalInterceptor\""
                }
              ],
              "releaseTag": "Public",
              "name": "GLOBAL_INTERCEPTOR",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "GLOBAL_INTERCEPTOR_GROUP",
              "docComment": "/**\n * Binding tag for group name of global interceptors\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "GLOBAL_INTERCEPTOR_GROUP"
                },
                {
                  "kind": "Content",
                  "text": " = \"globalInterceptorGroup\""
                }
              ],
              "releaseTag": "Public",
              "name": "GLOBAL_INTERCEPTOR_GROUP",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "KEY",
              "docComment": "/**\n * Binding key for the artifact\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "KEY"
                },
                {
                  "kind": "Content",
                  "text": " = \"key\""
                }
              ],
              "releaseTag": "Public",
              "name": "KEY",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "NAME",
              "docComment": "/**\n * Name of the artifact\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "NAME"
                },
                {
                  "kind": "Content",
                  "text": " = \"name\""
                }
              ],
              "releaseTag": "Public",
              "name": "NAME",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "NAMESPACE",
              "docComment": "/**\n * Namespace of the artifact\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "NAMESPACE"
                },
                {
                  "kind": "Content",
                  "text": " = \"namespace\""
                }
              ],
              "releaseTag": "Public",
              "name": "NAMESPACE",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "PROVIDER",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "PROVIDER"
                },
                {
                  "kind": "Content",
                  "text": " = \"provider\""
                }
              ],
              "releaseTag": "Public",
              "name": "PROVIDER",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "TYPE",
              "docComment": "/**\n * Type of the artifact\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "TYPE"
                },
                {
                  "kind": "Content",
                  "text": " = \"type\""
                }
              ],
              "releaseTag": "Public",
              "name": "TYPE",
              "variableTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ]
        },
        {
          "kind": "Class",
          "canonicalReference": "(ContextView:class)",
          "docComment": "/**\n * `ContextView` provides a view for a given context chain to maintain a live list of matching bindings and their resolved values within the context hierarchy.\n *\n * This class is the key utility to implement dynamic extensions for extension points. For example, the RestServer can react to `controller` bindings even they are added/removed/updated after the application starts.\n *\n * `ContextView` is an event emitter that emits the following events: - 'close': when the view is closed (stopped observing context events) - 'refresh': when the view is refreshed as bindings are added/removed - 'resolve': when the cached values are resolved and updated\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class "
            },
            {
              "kind": "Reference",
              "text": "ContextView"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": "> extends "
            },
            {
              "kind": "Reference",
              "text": "EventEmitter"
            },
            {
              "kind": "Content",
              "text": " "
            },
            {
              "kind": "Content",
              "text": "implements "
            },
            {
              "kind": "Reference",
              "text": "ContextObserver"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "ContextView",
          "members": [
            {
              "kind": "Property",
              "canonicalReference": "(_cachedBindings:instance)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected "
                },
                {
                  "kind": "Reference",
                  "text": "_cachedBindings"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">>[] | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "_cachedBindings",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 9
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "(_cachedValues:instance)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected "
                },
                {
                  "kind": "Reference",
                  "text": "_cachedValues"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": "[] | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "_cachedValues",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "isStatic": false
            },
            {
              "kind": "Constructor",
              "canonicalReference": "(:constructor,0)",
              "docComment": "/**\n * Constructs a new instance of the `ContextView` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor("
                },
                {
                  "kind": "Reference",
                  "text": "context"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Context"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "filter"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingFilter"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "comparator"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingComparator"
                },
                {
                  "kind": "Content",
                  "text": " | undefined"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "context",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "filter",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 8
                  }
                },
                {
                  "parameterName": "comparator",
                  "parameterTypeTokenRange": {
                    "startIndex": 11,
                    "endIndex": 13
                  }
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "(asGetter:instance,0)",
              "docComment": "/**\n * As a `Getter` function\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "asGetter"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "session"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Getter"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": "[]>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "asGetter"
            },
            {
              "kind": "Property",
              "canonicalReference": "(bindings:instance)",
              "docComment": "/**\n * Get the list of matched bindings. If they are not cached, it tries to find them from the context.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "bindings"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">>[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "bindings",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 9
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(close:instance,0)",
              "docComment": "/**\n * Stop listening events from the context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "close"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "close"
            },
            {
              "kind": "Property",
              "canonicalReference": "(comparator:instance)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "comparator"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingComparator"
                },
                {
                  "kind": "Content",
                  "text": " | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "comparator",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "(context:instance)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected readonly "
                },
                {
                  "kind": "Reference",
                  "text": "context"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Context"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "context",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "(filter:instance)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "filter"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingFilter"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "filter",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(findBindings:instance,0)",
              "docComment": "/**\n * Find matching bindings and refresh the cache\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected "
                },
                {
                  "kind": "Reference",
                  "text": "findBindings"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">>[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 9
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "findBindings"
            },
            {
              "kind": "Method",
              "canonicalReference": "(observe:instance,0)",
              "docComment": "/**\n * Listen on `bind` or `unbind` and invalidate the cache\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "observe"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "event"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "ContextEventType"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "binding"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>>"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 14
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "event",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "binding",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 12
                  }
                }
              ],
              "name": "observe"
            },
            {
              "kind": "Method",
              "canonicalReference": "(open:instance,0)",
              "docComment": "/**\n * Start listening events from the context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "open"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Reference",
                  "text": "Subscription"
                },
                {
                  "kind": "Content",
                  "text": " | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 4
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "open"
            },
            {
              "kind": "Method",
              "canonicalReference": "(refresh:instance,0)",
              "docComment": "/**\n * Refresh the view by invalidating its cache\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "refresh"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "refresh"
            },
            {
              "kind": "Method",
              "canonicalReference": "(resolve:instance,0)",
              "docComment": "/**\n * Resolve values for the matching bindings\n *\n * @param session - Resolution session\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "resolve"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "session"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": "[]>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "resolve"
            },
            {
              "kind": "Method",
              "canonicalReference": "(singleValue:instance,0)",
              "docComment": "/**\n * Get the single value\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "singleValue"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "session"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": " | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "singleValue"
            },
            {
              "kind": "Method",
              "canonicalReference": "(values:instance,0)",
              "docComment": "/**\n * Get the list of resolved values. If they are not cached, it tries to find and resolve them.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "values"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "session"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Promise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": "[]>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 6,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                }
              ],
              "name": "values"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 7,
            "endIndex": 9
          },
          "implementsTokenRanges": [
            {
              "startIndex": 10,
              "endIndex": 12
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "(createBindingFromClass:0)",
          "docComment": "/**\n * Create a binding from a class with decorated metadata. The class is attached to the binding as follows: - `binding.toClass(cls)`: if `cls` is a plain class such as `MyController` - `binding.toProvider(cls)`: it `cls` is a value provider class with a prototype method `value()`\n *\n * @param cls - A class. It can be either a plain class or a value provider class\n *\n * @param options - Options to customize the binding key\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "createBindingFromClass"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": ">("
            },
            {
              "kind": "Reference",
              "text": "cls"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Constructor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "Provider"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">>"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "options"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "BindingFromClassOptions"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "Binding"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 22,
            "endIndex": 26
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "cls",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 17
              }
            },
            {
              "parameterName": "options",
              "parameterTypeTokenRange": {
                "startIndex": 20,
                "endIndex": 21
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "createBindingFromClass"
        },
        {
          "kind": "Function",
          "canonicalReference": "(createProxyWithInterceptors:0)",
          "docComment": "/**\n * Create a proxy that applies interceptors for method invocations\n *\n * @param target - Target class or object\n *\n * @param context - Context object\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "createProxyWithInterceptors"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Content",
              "text": "object"
            },
            {
              "kind": "Content",
              "text": ">("
            },
            {
              "kind": "Reference",
              "text": "target"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "context"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "AsyncProxy"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 15,
            "endIndex": 19
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            },
            {
              "parameterName": "context",
              "parameterTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 14
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "createProxyWithInterceptors"
        },
        {
          "kind": "Function",
          "canonicalReference": "(createViewGetter:1)",
          "docComment": "/**\n * Create a context view as a getter with the given filter\n *\n * @param ctx - Context object\n *\n * @param bindingFilter - A function to match bindings\n *\n * @param session - Resolution session\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "createViewGetter"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": ">("
            },
            {
              "kind": "Reference",
              "text": "ctx"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "bindingFilter"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "BindingFilter"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "session"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "Getter"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "[]>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 19,
            "endIndex": 23
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "ctx",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            },
            {
              "parameterName": "bindingFilter",
              "parameterTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 14
              }
            },
            {
              "parameterName": "session",
              "parameterTypeTokenRange": {
                "startIndex": 17,
                "endIndex": 18
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "createViewGetter"
        },
        {
          "kind": "Function",
          "canonicalReference": "(createViewGetter:2)",
          "docComment": "/**\n * Create a context view as a getter with the given filter and sort matched bindings by the comparator.\n *\n * @param ctx - Context object\n *\n * @param bindingFilter - A function to match bindings\n *\n * @param bindingComparator - A function to compare two bindings\n *\n * @param session - Resolution session\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "createViewGetter"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": ">("
            },
            {
              "kind": "Reference",
              "text": "ctx"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "bindingFilter"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "BindingFilter"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "bindingComparator"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "BindingComparator"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "session"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "Getter"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "[]>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 23,
            "endIndex": 27
          },
          "releaseTag": "Public",
          "overloadIndex": 2,
          "parameters": [
            {
              "parameterName": "ctx",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            },
            {
              "parameterName": "bindingFilter",
              "parameterTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 14
              }
            },
            {
              "parameterName": "bindingComparator",
              "parameterTypeTokenRange": {
                "startIndex": 17,
                "endIndex": 18
              }
            },
            {
              "parameterName": "session",
              "parameterTypeTokenRange": {
                "startIndex": 21,
                "endIndex": 22
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "createViewGetter"
        },
        {
          "kind": "Class",
          "canonicalReference": "(DefaultConfigurationResolver:class)",
          "docComment": "/**\n * Resolver for configurations of bindings\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class "
            },
            {
              "kind": "Reference",
              "text": "DefaultConfigurationResolver"
            },
            {
              "kind": "Content",
              "text": " implements "
            },
            {
              "kind": "Reference",
              "text": "ConfigurationResolver"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "DefaultConfigurationResolver",
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "(:constructor,0)",
              "docComment": "/**\n * Constructs a new instance of the `DefaultConfigurationResolver` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor("
                },
                {
                  "kind": "Reference",
                  "text": "context"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Context"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "context",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ]
            },
            {
              "kind": "Property",
              "canonicalReference": "(context:instance)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "context"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Context"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "context",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(getConfigAsValueOrPromise:instance,0)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getConfigAsValueOrPromise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ConfigValueType"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "key"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "configPath"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "resolutionOptions"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionOptions"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ConfigValueType"
                },
                {
                  "kind": "Content",
                  "text": " | undefined>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 17,
                "endIndex": 21
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "key",
                  "parameterTypeTokenRange": {
                    "startIndex": 6,
                    "endIndex": 8
                  }
                },
                {
                  "parameterName": "configPath",
                  "parameterTypeTokenRange": {
                    "startIndex": 11,
                    "endIndex": 12
                  }
                },
                {
                  "parameterName": "resolutionOptions",
                  "parameterTypeTokenRange": {
                    "startIndex": 15,
                    "endIndex": 16
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "ConfigValueType",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "getConfigAsValueOrPromise"
            }
          ],
          "implementsTokenRanges": [
            {
              "startIndex": 3,
              "endIndex": 5
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "(describeInjectedArguments:0)",
          "docComment": "/**\n * Return an array of injection objects for parameters\n *\n * @param target - The target class for constructor or static methods, or the prototype for instance methods\n *\n * @param method - Method name, undefined for constructor\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "describeInjectedArguments"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "target"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Object"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "method"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "Readonly"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Injection"
            },
            {
              "kind": "Content",
              "text": ">[]"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 11,
            "endIndex": 15
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "method",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            }
          ],
          "name": "describeInjectedArguments"
        },
        {
          "kind": "Function",
          "canonicalReference": "(describeInjectedProperties:0)",
          "docComment": "/**\n * Return a map of injection objects for properties\n *\n * @param target - The target class for static properties or prototype for instance properties.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "describeInjectedProperties"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "target"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Object"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "MetadataMap"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Readonly"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Injection"
            },
            {
              "kind": "Content",
              "text": ">>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 7,
            "endIndex": 13
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "describeInjectedProperties"
        },
        {
          "kind": "Function",
          "canonicalReference": "(filterByKey:0)",
          "docComment": "/**\n * Create a binding filter from key pattern\n *\n * @param keyPattern - Binding key/wildcard, regexp, or a filter function\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "filterByKey"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "keyPattern"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Content",
              "text": "string | "
            },
            {
              "kind": "Reference",
              "text": "RegExp"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "BindingFilter"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingFilter"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 10,
            "endIndex": 11
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "keyPattern",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 9
              }
            }
          ],
          "name": "filterByKey"
        },
        {
          "kind": "Function",
          "canonicalReference": "(filterByTag:0)",
          "docComment": "/**\n * Create a binding filter for the tag pattern\n *\n * @param tagPattern - Binding tag name, regexp, or object\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "filterByTag"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "tagPattern"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "BindingTag"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "RegExp"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingFilter"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 9,
            "endIndex": 10
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "tagPattern",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 8
              }
            }
          ],
          "name": "filterByTag"
        },
        {
          "kind": "Class",
          "canonicalReference": "(GenericInterceptorChain:class)",
          "docComment": "/**\n * A chain of generic interceptors to be invoked for the given context\n *\n * @typeParam C - `Context` class or a subclass of `Context`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class "
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptorChain"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "C"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": " "
            },
            {
              "kind": "Content",
              "text": "= "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "C",
              "constraintTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              },
              "defaultTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              }
            }
          ],
          "name": "GenericInterceptorChain",
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "(:constructor,1)",
              "docComment": "/**\n * Create an invocation chain with a list of interceptor functions or binding keys\n *\n * @param context - Context object\n *\n * @param interceptors - An array of interceptor functions or binding keys\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor("
                },
                {
                  "kind": "Reference",
                  "text": "context"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "C"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "interceptors"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "GenericInterceptorOrKey"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "C"
                },
                {
                  "kind": "Content",
                  "text": ">[]"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 1,
              "parameters": [
                {
                  "parameterName": "context",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "interceptors",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 11
                  }
                }
              ]
            },
            {
              "kind": "Constructor",
              "canonicalReference": "(:constructor,2)",
              "docComment": "/**\n * Create an invocation interceptor chain with a binding filter and comparator. The interceptors are discovered from the context using the binding filter and sorted by the comparator (if provided).\n *\n * @param context - Context object\n *\n * @param filter - A binding filter function to select interceptors\n *\n * @param comparator - An optional comparator to sort matched interceptor bindings\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor("
                },
                {
                  "kind": "Reference",
                  "text": "context"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "C"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "filter"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingFilter"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "comparator"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingComparator"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 2,
              "parameters": [
                {
                  "parameterName": "context",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "filter",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 8
                  }
                },
                {
                  "parameterName": "comparator",
                  "parameterTypeTokenRange": {
                    "startIndex": 11,
                    "endIndex": 12
                  }
                }
              ]
            },
            {
              "kind": "Property",
              "canonicalReference": "(getInterceptors:instance)",
              "docComment": "/**\n * A getter for an array of interceptor functions or binding keys\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "protected "
                },
                {
                  "kind": "Reference",
                  "text": "getInterceptors"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "() => "
                },
                {
                  "kind": "Reference",
                  "text": "GenericInterceptorOrKey"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "C"
                },
                {
                  "kind": "Content",
                  "text": ">[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "getInterceptors",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 8
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(invokeInterceptors:instance,0)",
              "docComment": "/**\n * Invoke the interceptor chain\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "invokeInterceptors"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "InvocationResult"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "invokeInterceptors"
            }
          ],
          "implementsTokenRanges": []
        },
        {
          "kind": "Function",
          "canonicalReference": "(getBindingMetadata:0)",
          "docComment": "/**\n * Get binding metadata for a class\n *\n * @param target - The target class\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "getBindingMetadata"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "target"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Function"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "BindingMetadata"
            },
            {
              "kind": "Content",
              "text": " | undefined"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 7,
            "endIndex": 9
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "getBindingMetadata"
        },
        {
          "kind": "Function",
          "canonicalReference": "(getDeepProperty:0)",
          "docComment": "/**\n * Get nested properties of an object by path\n *\n * @param value - Value of the source object\n *\n * @param path - Path to the property\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "getDeepProperty"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "OUT"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Reference",
              "text": "BoundValue"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "IN"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Reference",
              "text": "BoundValue"
            },
            {
              "kind": "Content",
              "text": ">("
            },
            {
              "kind": "Reference",
              "text": "value"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "IN"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "path"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "OUT"
            },
            {
              "kind": "Content",
              "text": " | undefined"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 19,
            "endIndex": 21
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "value",
              "parameterTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 14
              }
            },
            {
              "parameterName": "path",
              "parameterTypeTokenRange": {
                "startIndex": 17,
                "endIndex": 18
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "OUT",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "typeParameterName": "IN",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            }
          ],
          "name": "getDeepProperty"
        },
        {
          "kind": "Namespace",
          "canonicalReference": "(Getter:namespace)",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace "
            },
            {
              "kind": "Reference",
              "text": "Getter"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "Getter",
          "members": [
            {
              "kind": "Function",
              "canonicalReference": "(fromValue:0)",
              "docComment": "/**\n * Convert a value into a Getter returning that value.\n *\n * @param  - value\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "function "
                },
                {
                  "kind": "Reference",
                  "text": "fromValue"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">("
                },
                {
                  "kind": "Reference",
                  "text": "value"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "Getter"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 13
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "value",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 8
                  }
                }
              ],
              "typeParameters": [
                {
                  "typeParameterName": "T",
                  "constraintTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  },
                  "defaultTypeTokenRange": {
                    "startIndex": 0,
                    "endIndex": 0
                  }
                }
              ],
              "name": "fromValue"
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "(globalInterceptor:0)",
          "docComment": "/**\n * `@globalInterceptor` decorator to mark the class as a global interceptor\n *\n * @param group - Group for ordering the interceptor\n *\n * @param specs - Extra binding specs\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "globalInterceptor"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "group"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", ..."
            },
            {
              "kind": "Reference",
              "text": "specs"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "BindingSpec"
            },
            {
              "kind": "Content",
              "text": "[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ClassDecorator"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 12,
            "endIndex": 13
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "group",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "specs",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 11
              }
            }
          ],
          "name": "globalInterceptor"
        },
        {
          "kind": "Function",
          "canonicalReference": "(inject:1)",
          "docComment": "/**\n * A decorator to annotate method arguments for automatic injection by LoopBack IoC container.\n *\n * @param bindingSelector - What binding to use in order to resolve the value of the decorated constructor parameter or property.\n *\n * @param metadata - Optional metadata to help the injection\n *\n * @param resolve - Optional function to resolve the injection\n *\n * @example\n *\n * Usage - Typescript:\n * ```ts\n * class InfoController {\n *   @inject('authentication.user') public userName: string;\n *\n *   constructor(@inject('application.name') public appName: string) {\n *   }\n *   // ...\n * }\n * ```\n *\n * Usage - JavaScript:\n *\n * - TODO(bajtos)\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "inject"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "bindingSelector"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "BindingSelector"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "metadata"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "InjectionMetadata"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "resolve"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "ResolverFunction"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "target"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Object"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "member"
            },
            {
              "kind": "Content",
              "text": ": string, "
            },
            {
              "kind": "Reference",
              "text": "methodDescriptorOrParameterIndex"
            },
            {
              "kind": "Content",
              "text": "?: number | "
            },
            {
              "kind": "Reference",
              "text": "TypedPropertyDescriptor"
            },
            {
              "kind": "Content",
              "text": "<any> | undefined) => void"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 15,
            "endIndex": 26
          },
          "releaseTag": "Public",
          "overloadIndex": 1,
          "parameters": [
            {
              "parameterName": "bindingSelector",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "metadata",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            },
            {
              "parameterName": "resolve",
              "parameterTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 14
              }
            }
          ],
          "name": "inject"
        },
        {
          "kind": "Namespace",
          "canonicalReference": "(inject:namespace)",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare namespace "
            },
            {
              "kind": "Reference",
              "text": "inject"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "inject",
          "members": [
            {
              "kind": "Variable",
              "canonicalReference": "binding",
              "docComment": "/**\n * Inject the binding object for the given key. This is useful if a binding needs to be set up beyond just a constant value allowed by `@inject.setter`. The injected binding is found or created based on the `metadata.bindingCreation` option. See `BindingCreationPolicy` for more details.\n *\n * @param bindingKey - Binding key\n *\n * @param metadata - Metadata for the injection\n *\n * @example\n * ```ts\n * class MyAuthAction {\n *   @inject.binding('current-user', {\n *     bindingCreation: BindingCreationPolicy.ALWAYS_CREATE,\n *   })\n *   private userBinding: Binding<UserProfile>;\n *\n *   async authenticate() {\n *     this.userBinding.toDynamicValue(() => {...});\n *   }\n * }\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "binding"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "bindingKey"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>, "
                },
                {
                  "kind": "Reference",
                  "text": "metadata"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "InjectBindingMetadata"
                },
                {
                  "kind": "Content",
                  "text": " | undefined) => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Object"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "member"
                },
                {
                  "kind": "Content",
                  "text": ": string, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptorOrParameterIndex"
                },
                {
                  "kind": "Content",
                  "text": "?: number | "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => void"
                }
              ],
              "releaseTag": "Public",
              "name": "binding",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 21
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "context",
              "docComment": "/**\n * Inject the context object.\n *\n * @example\n * ```ts\n * class MyProvider {\n *  constructor(@inject.context() private ctx: Context) {}\n * }\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "context"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "() => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Object"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "member"
                },
                {
                  "kind": "Content",
                  "text": ": string, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptorOrParameterIndex"
                },
                {
                  "kind": "Content",
                  "text": "?: number | "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => void"
                }
              ],
              "releaseTag": "Public",
              "name": "context",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 13
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "getter",
              "docComment": "/**\n * Inject a function for getting the actual bound value.\n *\n * This is useful when implementing Actions, where the action is instantiated for Sequence constructor, but some of action's dependencies become bound only after other actions have been executed by the sequence.\n *\n * See also `Getter<T>`.\n *\n * @param bindingSelector - The binding key or filter we want to eventually get value(s) from.\n *\n * @param metadata - Optional metadata to help the injection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getter"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "bindingSelector"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingSelector"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>, "
                },
                {
                  "kind": "Reference",
                  "text": "metadata"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "InjectionMetadata"
                },
                {
                  "kind": "Content",
                  "text": " | undefined) => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Object"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "member"
                },
                {
                  "kind": "Content",
                  "text": ": string, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptorOrParameterIndex"
                },
                {
                  "kind": "Content",
                  "text": "?: number | "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => void"
                }
              ],
              "releaseTag": "Public",
              "name": "getter",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 21
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "setter",
              "docComment": "/**\n * Inject a function for setting (binding) the given key to a given value. (Only static/constant values are supported, it's not possible to bind a key to a class or a provider.)\n *\n * This is useful e.g. when implementing Actions that are contributing new Elements.\n *\n * See also `Setter<T>`.\n *\n * @param bindingKey - The key of the value we want to set.\n *\n * @param metadata - Optional metadata to help the injection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "setter"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "bindingKey"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingAddress"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>, "
                },
                {
                  "kind": "Reference",
                  "text": "metadata"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "InjectBindingMetadata"
                },
                {
                  "kind": "Content",
                  "text": " | undefined) => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Object"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "member"
                },
                {
                  "kind": "Content",
                  "text": ": string, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptorOrParameterIndex"
                },
                {
                  "kind": "Content",
                  "text": "?: number | "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => void"
                }
              ],
              "releaseTag": "Public",
              "name": "setter",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 21
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "tag",
              "docComment": "/**\n * Inject an array of values by a tag pattern string or regexp\n *\n * @param bindingTag - Tag name, regex or object\n *\n * @param metadata - Optional metadata to help the injection\n *\n * @example\n * ```ts\n * class AuthenticationManager {\n *   constructor(\n *     @inject.tag('authentication.strategy') public strategies: Strategy[],\n *   ) {}\n * }\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "tag"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "bindingTag"
                },
                {
                  "kind": "Content",
                  "text": ": string | "
                },
                {
                  "kind": "Reference",
                  "text": "RegExp"
                },
                {
                  "kind": "Content",
                  "text": " | import(\"./value-promise\")."
                },
                {
                  "kind": "Reference",
                  "text": "MapObject"
                },
                {
                  "kind": "Content",
                  "text": "<any>, "
                },
                {
                  "kind": "Reference",
                  "text": "metadata"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "InjectionMetadata"
                },
                {
                  "kind": "Content",
                  "text": " | undefined) => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Object"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "member"
                },
                {
                  "kind": "Content",
                  "text": ": string, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptorOrParameterIndex"
                },
                {
                  "kind": "Content",
                  "text": "?: number | "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => void"
                }
              ],
              "releaseTag": "Public",
              "name": "tag",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 23
              }
            },
            {
              "kind": "Variable",
              "canonicalReference": "view",
              "docComment": "/**\n * Inject matching bound values by the filter function\n *\n * @param bindingFilter - A binding filter function\n *\n * @param  - metadata\n *\n * @example\n * ```ts\n * class MyControllerWithView {\n *   @inject.view(filterByTag('foo'))\n *   view: ContextView<string[]>;\n * }\n * ```\n *\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "view"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "bindingFilter"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingFilter"
                },
                {
                  "kind": "Content",
                  "text": "<unknown>, "
                },
                {
                  "kind": "Reference",
                  "text": "metadata"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "InjectionMetadata"
                },
                {
                  "kind": "Content",
                  "text": " | undefined) => ("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Object"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "member"
                },
                {
                  "kind": "Content",
                  "text": ": string, "
                },
                {
                  "kind": "Reference",
                  "text": "methodDescriptorOrParameterIndex"
                },
                {
                  "kind": "Content",
                  "text": "?: number | "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<any> | undefined) => void"
                }
              ],
              "releaseTag": "Public",
              "name": "view",
              "variableTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 21
              }
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "(InjectBindingMetadata:interface)",
          "docComment": "/**\n * Metadata for `@inject.binding`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "InjectBindingMetadata"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Reference",
              "text": "InjectionMetadata"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "InjectBindingMetadata",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "bindingCreation",
              "docComment": "/**\n * Controls how the underlying binding is resolved/created\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "bindingCreation"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingCreationPolicy"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "bindingCreation",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ],
          "extendsTokenRanges": [
            {
              "startIndex": 3,
              "endIndex": 5
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "(Injection:interface)",
          "docComment": "/**\n * Descriptor for an injection point\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "Injection"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "ValueType"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Reference",
              "text": "BoundValue"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "ValueType",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "Injection",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "bindingSelector",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "bindingSelector"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "BindingSelector"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "bindingSelector",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 6
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "member",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "member"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "member",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "metadata",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "metadata"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "InjectionMetadata"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "metadata",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "methodDescriptorOrParameterIndex",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "methodDescriptorOrParameterIndex"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "TypedPropertyDescriptor"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "ValueType"
                },
                {
                  "kind": "Content",
                  "text": "> | number"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "methodDescriptorOrParameterIndex",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 6
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "resolve",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "resolve"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolverFunction"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "resolve",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "target",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Object"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "target",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Interface",
          "canonicalReference": "(InjectionElement:interface)",
          "docComment": "/**\n * Wrapper for injections tracked by resolution sessions\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "InjectionElement"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "InjectionElement",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "type",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "type"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "'injection'"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "type",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "value",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "value"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "value",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 6
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Interface",
          "canonicalReference": "(InjectionMetadata:interface)",
          "docComment": "/**\n * An object to provide metadata for `@inject`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "InjectionMetadata"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Reference",
              "text": "ResolutionOptions"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "InjectionMetadata",
          "members": [
            {
              "kind": "IndexSignature",
              "canonicalReference": "(:index,0)",
              "docComment": "/**\n * Other attributes\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "["
                },
                {
                  "kind": "Reference",
                  "text": "attribute"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": "]: "
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "attribute",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ]
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "bindingComparator",
              "docComment": "/**\n * Optional comparator for matched bindings\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "bindingComparator"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "BindingComparator"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "bindingComparator",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "decorator",
              "docComment": "/**\n * Name of the decorator function, such as `@inject` or `@inject.setter`. It's usually set by the decorator implementation.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "decorator"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "decorator",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ],
          "extendsTokenRanges": [
            {
              "startIndex": 3,
              "endIndex": 5
            }
          ]
        },
        {
          "kind": "Function",
          "canonicalReference": "(inspectTargetType:0)",
          "docComment": "/**\n * Inspect the target type for the injection to find out the corresponding JavaScript type\n *\n * @param injection - Injection information\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "inspectTargetType"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "injection"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Readonly"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Injection"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "Function"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 10,
            "endIndex": 11
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "injection",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 9
              }
            }
          ],
          "name": "inspectTargetType"
        },
        {
          "kind": "Function",
          "canonicalReference": "(instantiateClass:0)",
          "docComment": "/**\n * Create an instance of a class which constructor has arguments decorated with `@inject`.\n *\n * The function returns a class when all dependencies were resolved synchronously, or a Promise otherwise.\n *\n * @param ctor - The class constructor to call.\n *\n * @param ctx - The context containing values for `@inject` resolution\n *\n * @param session - Optional session for binding and dependency resolution\n *\n * @param nonInjectedArgs - Optional array of args for non-injected parameters\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "instantiateClass"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">("
            },
            {
              "kind": "Reference",
              "text": "ctor"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Constructor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "ctx"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "session"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "nonInjectedArgs"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Content",
              "text": "any[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 24,
            "endIndex": 28
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "ctor",
              "parameterTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 11
              }
            },
            {
              "parameterName": "ctx",
              "parameterTypeTokenRange": {
                "startIndex": 14,
                "endIndex": 15
              }
            },
            {
              "parameterName": "session",
              "parameterTypeTokenRange": {
                "startIndex": 18,
                "endIndex": 19
              }
            },
            {
              "parameterName": "nonInjectedArgs",
              "parameterTypeTokenRange": {
                "startIndex": 22,
                "endIndex": 23
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "instantiateClass"
        },
        {
          "kind": "Function",
          "canonicalReference": "(intercept:0)",
          "docComment": "/**\n * Decorator function `@intercept` for classes/methods to apply interceptors. It can be applied on a class and its public methods. Multiple occurrences of `@intercept` are allowed on the same target class or method. The decorator takes a list of `interceptor` functions or binding keys.\n *\n * @param interceptorOrKeys - One or more interceptors or binding keys that are resolved to be interceptors\n *\n * @example\n * ```ts\n * @intercept(log, metrics)\n * class MyController {\n *   @intercept('caching-interceptor')\n *   @intercept('name-validation-interceptor')\n *   greet(name: string) {\n *     return `Hello, ${name}`;\n *   }\n * }\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "intercept"
            },
            {
              "kind": "Content",
              "text": "(..."
            },
            {
              "kind": "Reference",
              "text": "interceptorOrKeys"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "InterceptorOrKey"
            },
            {
              "kind": "Content",
              "text": "[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "target"
            },
            {
              "kind": "Content",
              "text": ": any, "
            },
            {
              "kind": "Reference",
              "text": "method"
            },
            {
              "kind": "Content",
              "text": "?: string | undefined, "
            },
            {
              "kind": "Reference",
              "text": "methodDescriptor"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "TypedPropertyDescriptor"
            },
            {
              "kind": "Content",
              "text": "<any> | undefined) => any"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 8,
            "endIndex": 17
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "interceptorOrKeys",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              }
            }
          ],
          "name": "intercept"
        },
        {
          "kind": "Class",
          "canonicalReference": "(InterceptedInvocationContext:class)",
          "docComment": "/**\n * A specialized InvocationContext for interceptors\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class "
            },
            {
              "kind": "Reference",
              "text": "InterceptedInvocationContext"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Reference",
              "text": "InvocationContext"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "InterceptedInvocationContext",
          "members": [
            {
              "kind": "Method",
              "canonicalReference": "(getGlobalInterceptorBindingKeys:instance,0)",
              "docComment": "/**\n * Discover all binding keys for global interceptors (tagged by ContextTags.GLOBAL_INTERCEPTOR)\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getGlobalInterceptorBindingKeys"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Content",
                  "text": "string[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "getGlobalInterceptorBindingKeys"
            },
            {
              "kind": "Method",
              "canonicalReference": "(loadInterceptors:instance,0)",
              "docComment": "/**\n * Load all interceptors for the given invocation context. It adds interceptors from possibly three sources: 1. method level `@intercept` 2. class level `@intercept` 3. global interceptors discovered in the context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "loadInterceptors"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Reference",
                  "text": "GenericInterceptorOrKey"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "InvocationContext"
                },
                {
                  "kind": "Content",
                  "text": ">[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "loadInterceptors"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 3,
            "endIndex": 5
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "(InterceptionHandler:class)",
          "docComment": "/**\n * A proxy handler that applies interceptors\n *\n * See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Proxy\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class "
            },
            {
              "kind": "Reference",
              "text": "InterceptionHandler"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Content",
              "text": "object"
            },
            {
              "kind": "Content",
              "text": "> implements "
            },
            {
              "kind": "Reference",
              "text": "ProxyHandler"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "InterceptionHandler",
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "(:constructor,0)",
              "docComment": "/**\n * Constructs a new instance of the `InterceptionHandler` class\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor("
                },
                {
                  "kind": "Reference",
                  "text": "context"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "Context"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "context",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                }
              ]
            },
            {
              "kind": "Method",
              "canonicalReference": "(get:instance,0)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "get"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "propertyName"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "PropertyKey"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "receiver"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "unknown"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 14,
                "endIndex": 15
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 5
                  }
                },
                {
                  "parameterName": "propertyName",
                  "parameterTypeTokenRange": {
                    "startIndex": 8,
                    "endIndex": 9
                  }
                },
                {
                  "parameterName": "receiver",
                  "parameterTypeTokenRange": {
                    "startIndex": 12,
                    "endIndex": 13
                  }
                }
              ],
              "name": "get"
            }
          ],
          "implementsTokenRanges": [
            {
              "startIndex": 7,
              "endIndex": 11
            }
          ]
        },
        {
          "kind": "Interface",
          "canonicalReference": "(Interceptor:interface)",
          "docComment": "/**\n * Interceptor function to intercept method invocations\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "Interceptor"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationContext"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "name": "Interceptor",
          "members": [],
          "extendsTokenRanges": [
            {
              "startIndex": 3,
              "endIndex": 7
            }
          ]
        },
        {
          "kind": "Class",
          "canonicalReference": "(InvocationContext:class)",
          "docComment": "/**\n * InvocationContext represents the context to invoke interceptors for a method. The context can be used to access metadata about the invocation as well as other dependencies.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class "
            },
            {
              "kind": "Reference",
              "text": "InvocationContext"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "InvocationContext",
          "members": [
            {
              "kind": "Constructor",
              "canonicalReference": "(:constructor,0)",
              "docComment": "/**\n * Construct a new instance of `InvocationContext`\n *\n * @param parent - Parent context, such as the RequestContext\n *\n * @param target - Target class (for static methods) or prototype/object (for instance methods)\n *\n * @param methodName - Method name\n *\n * @param args - An array of arguments\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "constructor("
                },
                {
                  "kind": "Reference",
                  "text": "parent"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Context"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "object"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "methodName"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "args"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "InvocationArgs"
                },
                {
                  "kind": "Content",
                  "text": ");"
                }
              ],
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "parent",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "target",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 8
                  }
                },
                {
                  "parameterName": "methodName",
                  "parameterTypeTokenRange": {
                    "startIndex": 11,
                    "endIndex": 12
                  }
                },
                {
                  "parameterName": "args",
                  "parameterTypeTokenRange": {
                    "startIndex": 15,
                    "endIndex": 16
                  }
                }
              ]
            },
            {
              "kind": "Property",
              "canonicalReference": "(args:instance)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "args"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "InvocationArgs"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "args",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(assertMethodExists:instance,0)",
              "docComment": "/**\n * Assert the method exists on the target. An error will be thrown if otherwise.\n *\n * @param context - Invocation context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "assertMethodExists"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Reference",
                  "text": "Record"
                },
                {
                  "kind": "Content",
                  "text": "<string, "
                },
                {
                  "kind": "Reference",
                  "text": "Function"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "assertMethodExists"
            },
            {
              "kind": "Property",
              "canonicalReference": "(description:instance)",
              "docComment": "/**\n * Description of the invocation\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "description"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "description",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(invokeTargetMethod:instance,0)",
              "docComment": "/**\n * Invoke the target method with the given context\n *\n * @param context - Invocation context\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "invokeTargetMethod"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "invokeTargetMethod"
            },
            {
              "kind": "Property",
              "canonicalReference": "(methodName:instance)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "methodName"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "methodName",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "(parent:instance)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "parent"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Context"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "parent",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "(target:instance)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "target"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "object"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "target",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "(targetClass:instance)",
              "docComment": "/**\n * The target class, such as `OrderController`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "targetClass"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Function"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "targetClass",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "(targetName:instance)",
              "docComment": "/**\n * The target name, such as `OrderController.prototype.cancelOrder`\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "targetName"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "targetName",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 4
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(toString:instance,0)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "toString"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "toString"
            }
          ],
          "extendsTokenRange": {
            "startIndex": 3,
            "endIndex": 5
          },
          "implementsTokenRanges": []
        },
        {
          "kind": "Function",
          "canonicalReference": "(invokeInterceptors:0)",
          "docComment": "/**\n * Invoke a chain of interceptors with the context\n *\n * @param context - Context object\n *\n * @param interceptors - An array of interceptor functions or binding keys\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "invokeInterceptors"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "C"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": " "
            },
            {
              "kind": "Content",
              "text": "= "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Reference",
              "text": "InvocationResult"
            },
            {
              "kind": "Content",
              "text": ">("
            },
            {
              "kind": "Reference",
              "text": "context"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "C"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "interceptors"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptorOrKey"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "C"
            },
            {
              "kind": "Content",
              "text": ">[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " | undefined>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 25,
            "endIndex": 29
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "context",
              "parameterTypeTokenRange": {
                "startIndex": 16,
                "endIndex": 17
              }
            },
            {
              "parameterName": "interceptors",
              "parameterTypeTokenRange": {
                "startIndex": 20,
                "endIndex": 24
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "C",
              "constraintTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              },
              "defaultTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              }
            },
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 12,
                "endIndex": 13
              }
            }
          ],
          "name": "invokeInterceptors"
        },
        {
          "kind": "Function",
          "canonicalReference": "(invokeMethod:0)",
          "docComment": "/**\n * Invoke a method using dependency injection. Interceptors are invoked as part of the invocation.\n *\n * @param target - Target of the method, it will be the class for a static method, and instance or class prototype for a prototype method\n *\n * @param method - Name of the method\n *\n * @param ctx - Context object\n *\n * @param nonInjectedArgs - Optional array of args for non-injected parameters\n *\n * @param options - Options for the invocation\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "invokeMethod"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "target"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "object"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "method"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "ctx"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "nonInjectedArgs"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "InvocationArgs"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "options"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "InvocationOptions"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationResult"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 23,
            "endIndex": 27
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "method",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            },
            {
              "parameterName": "ctx",
              "parameterTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 14
              }
            },
            {
              "parameterName": "nonInjectedArgs",
              "parameterTypeTokenRange": {
                "startIndex": 17,
                "endIndex": 18
              }
            },
            {
              "parameterName": "options",
              "parameterTypeTokenRange": {
                "startIndex": 21,
                "endIndex": 22
              }
            }
          ],
          "name": "invokeMethod"
        },
        {
          "kind": "Function",
          "canonicalReference": "(invokeMethodWithInterceptors:0)",
          "docComment": "/**\n * Invoke a method with the given context\n *\n * @param context - Context object\n *\n * @param target - Target class (for static methods) or object (for instance methods)\n *\n * @param methodName - Method name\n *\n * @param args - An array of argument values\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "invokeMethodWithInterceptors"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "context"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "target"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "object"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "methodName"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "args"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "InvocationArgs"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationResult"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 19,
            "endIndex": 23
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "context",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            },
            {
              "parameterName": "methodName",
              "parameterTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 14
              }
            },
            {
              "parameterName": "args",
              "parameterTypeTokenRange": {
                "startIndex": 17,
                "endIndex": 18
              }
            }
          ],
          "name": "invokeMethodWithInterceptors"
        },
        {
          "kind": "Function",
          "canonicalReference": "(isBindingAddress:0)",
          "docComment": "/**\n * Type guard for binding address\n *\n * @param  - bindingSelector\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "isBindingAddress"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "bindingSelector"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "BindingSelector"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "bindingSelector"
            },
            {
              "kind": "Content",
              "text": " is "
            },
            {
              "kind": "Reference",
              "text": "BindingAddress"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 7,
            "endIndex": 10
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "bindingSelector",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "name": "isBindingAddress"
        },
        {
          "kind": "Function",
          "canonicalReference": "(isPromiseLike:0)",
          "docComment": "/**\n * Check whether a value is a Promise-like instance. Recognizes both native promises and third-party promise libraries.\n *\n * @param value - The value to check.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "isPromiseLike"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">("
            },
            {
              "kind": "Reference",
              "text": "value"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "PromiseLike"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "> | undefined"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "value"
            },
            {
              "kind": "Content",
              "text": " is "
            },
            {
              "kind": "Reference",
              "text": "PromiseLike"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 14,
            "endIndex": 20
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "value",
              "parameterTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 13
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "isPromiseLike"
        },
        {
          "kind": "Function",
          "canonicalReference": "(isProviderClass:0)",
          "docComment": "/**\n * Check if a class implements `Provider` interface\n *\n * @param cls - A class\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "isProviderClass"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "cls"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Constructor"
            },
            {
              "kind": "Content",
              "text": "<unknown>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "cls"
            },
            {
              "kind": "Content",
              "text": " is "
            },
            {
              "kind": "Reference",
              "text": "Constructor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Provider"
            },
            {
              "kind": "Content",
              "text": "<unknown>>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 8,
            "endIndex": 14
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "cls",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              }
            }
          ],
          "name": "isProviderClass"
        },
        {
          "kind": "Function",
          "canonicalReference": "(mergeInterceptors:0)",
          "docComment": "/**\n * Adding interceptors from the spec to the front of existing ones. Duplicate entries are eliminated from the spec side.\n *\n * For example:\n *\n * - [log] + [cache, log] => [cache, log] - [log] + [log, cache] => [log, cache] - [] + [cache, log] => [cache, log] - [cache, log] + [] => [cache, log] - [log] + [cache] => [log, cache]\n *\n * @param interceptorsFromSpec - Interceptors from `@intercept`\n *\n * @param existingInterceptors - Interceptors already applied for the method\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "mergeInterceptors"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "interceptorsFromSpec"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "InterceptorOrKey"
            },
            {
              "kind": "Content",
              "text": "[]"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "existingInterceptors"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "InterceptorOrKey"
            },
            {
              "kind": "Content",
              "text": "[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptorOrKey"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationContext"
            },
            {
              "kind": "Content",
              "text": ">[]"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 13,
            "endIndex": 17
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "interceptorsFromSpec",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              }
            },
            {
              "parameterName": "existingInterceptors",
              "parameterTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 12
              }
            }
          ],
          "name": "mergeInterceptors"
        },
        {
          "kind": "Interface",
          "canonicalReference": "(Provider:interface)",
          "docComment": "/**\n * Providers allow developers to compute injected values dynamically, with any dependencies required by the value getter injected automatically from the Context.\n *\n * @example\n * ```ts\n * export class DateProvider implements Provider<Date> {\n *   constructor(@inject('stringDate') private param: String){}\n *   value(): Date {\n *     return new Date(param);\n *   }\n * }\n *\n * ctx.bind('stringDate').to('2017-01-01')\n * ctx.bind('provider_key').toProvider(DateProvider);\n *\n * const value = ctx.getAsync('provider_key');\n * // value is a Date instance\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "Provider"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "> "
            }
          ],
          "releaseTag": "Public",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "Provider",
          "members": [
            {
              "kind": "MethodSignature",
              "canonicalReference": "(value:0)",
              "docComment": "/**\n * @returns The value to inject to dependents. This method can return a promise too, in which case the IoC framework will resolve this promise to obtain the value to inject.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "value"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "T"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "value"
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Function",
          "canonicalReference": "(removeNameAndKeyTags:0)",
          "docComment": "/**\n * A binding template function to delete `name` and `key` tags\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "removeNameAndKeyTags"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "binding"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Binding"
            },
            {
              "kind": "Content",
              "text": "<unknown>"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Content",
              "text": "void"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 8,
            "endIndex": 9
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "binding",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              }
            }
          ],
          "name": "removeNameAndKeyTags"
        },
        {
          "kind": "Interface",
          "canonicalReference": "(ResolutionOptions:interface)",
          "docComment": "/**\n * Options for binding/dependency resolution\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "ResolutionOptions"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "ResolutionOptions",
          "members": [
            {
              "kind": "PropertySignature",
              "canonicalReference": "asProxyWithInterceptors",
              "docComment": "/**\n * A boolean flag to control if a proxy should be created to apply interceptors for the resolved value. It's only honored for bindings backed by a class.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "asProxyWithInterceptors"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "asProxyWithInterceptors",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "optional",
              "docComment": "/**\n * A boolean flag to indicate if the dependency is optional. If it's set to `true` and the binding is not bound in a context, the resolution will return `undefined` instead of throwing an error.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "optional"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "optional",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "session",
              "docComment": "/**\n * A session to track bindings and injections\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "session"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "session",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Class",
          "canonicalReference": "(ResolutionSession:class)",
          "docComment": "/**\n * Object to keep states for a session to resolve bindings and their dependencies within a context\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare class "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "ResolutionSession",
          "members": [
            {
              "kind": "Property",
              "canonicalReference": "(bindingStack:instance)",
              "docComment": "/**\n * Getter for bindings on the stack\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "bindingStack"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": ">[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "bindingStack",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 7
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "(currentBinding:instance)",
              "docComment": "/**\n * Getter for the current binding\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "currentBinding"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": "> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "currentBinding",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 7
              },
              "isStatic": false
            },
            {
              "kind": "Property",
              "canonicalReference": "(currentInjection:instance)",
              "docComment": "/**\n * Getter for the current injection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "currentInjection"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection"
                },
                {
                  "kind": "Content",
                  "text": "> | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "currentInjection",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 7
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(describeInjection:static,0)",
              "docComment": "/**\n * Describe the injection for debugging purpose\n *\n * @param injection - Injection object\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static "
                },
                {
                  "kind": "Reference",
                  "text": "describeInjection"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "injection"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "{\n        "
                },
                {
                  "kind": "Reference",
                  "text": "targetName"
                },
                {
                  "kind": "Content",
                  "text": "?: undefined;\n        "
                },
                {
                  "kind": "Reference",
                  "text": "bindingSelector"
                },
                {
                  "kind": "Content",
                  "text": "?: undefined;\n        "
                },
                {
                  "kind": "Reference",
                  "text": "metadata"
                },
                {
                  "kind": "Content",
                  "text": "?: undefined;\n    } | {\n        "
                },
                {
                  "kind": "Reference",
                  "text": "targetName"
                },
                {
                  "kind": "Content",
                  "text": ": string;\n        "
                },
                {
                  "kind": "Reference",
                  "text": "bindingSelector"
                },
                {
                  "kind": "Content",
                  "text": ": import(\"./binding-filter\")."
                },
                {
                  "kind": "Reference",
                  "text": "BindingSelector"
                },
                {
                  "kind": "Content",
                  "text": "<any>;\n        "
                },
                {
                  "kind": "Reference",
                  "text": "metadata"
                },
                {
                  "kind": "Content",
                  "text": ": object;\n    }"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 10,
                "endIndex": 25
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "injection",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 9
                  }
                }
              ],
              "name": "describeInjection"
            },
            {
              "kind": "Method",
              "canonicalReference": "(fork:static,0)",
              "docComment": "/**\n * Fork the current session so that a new one with the same stack can be used in parallel or future resolutions, such as multiple method arguments, multiple properties, or a getter function\n *\n * @param session - The current session\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static "
                },
                {
                  "kind": "Reference",
                  "text": "fork"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "session"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession"
                },
                {
                  "kind": "Content",
                  "text": " | undefined"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 9
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                }
              ],
              "name": "fork"
            },
            {
              "kind": "Method",
              "canonicalReference": "(getBindingPath:instance,0)",
              "docComment": "/**\n * Get the binding path as `bindingA --> bindingB --> bindingC`.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getBindingPath"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "getBindingPath"
            },
            {
              "kind": "Method",
              "canonicalReference": "(getInjectionPath:instance,0)",
              "docComment": "/**\n * Get the injection path as `injectionA --> injectionB --> injectionC`.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getInjectionPath"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "getInjectionPath"
            },
            {
              "kind": "Method",
              "canonicalReference": "(getResolutionPath:instance,0)",
              "docComment": "/**\n * Get the resolution path including bindings and injections, for example: `bindingA --> @ClassA[0] --> bindingB --> @ClassB.prototype.prop1 --> bindingC`.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "getResolutionPath"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Content",
                  "text": "string"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "getResolutionPath"
            },
            {
              "kind": "Property",
              "canonicalReference": "(injectionStack:instance)",
              "docComment": "/**\n * Getter for injections on the stack\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "injectionStack"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection"
                },
                {
                  "kind": "Content",
                  "text": ">[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "injectionStack",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 7
              },
              "isStatic": false
            },
            {
              "kind": "Method",
              "canonicalReference": "(popBinding:instance,0)",
              "docComment": "/**\n * Exit the resolution of a binding\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "popBinding"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "popBinding"
            },
            {
              "kind": "Method",
              "canonicalReference": "(popInjection:instance,0)",
              "docComment": "/**\n * Pop the last injection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "popInjection"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection"
                },
                {
                  "kind": "Content",
                  "text": "<any>>"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 6
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "popInjection"
            },
            {
              "kind": "Method",
              "canonicalReference": "(pushBinding:instance,0)",
              "docComment": "/**\n * Enter the resolution of the given binding. If\n *\n * @param binding - Binding\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "pushBinding"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "binding"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "binding",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 8
                  }
                }
              ],
              "name": "pushBinding"
            },
            {
              "kind": "Method",
              "canonicalReference": "(pushInjection:instance,0)",
              "docComment": "/**\n * Push the injection onto the session\n *\n * @param injection - Injection The current injection\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "pushInjection"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "injection"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": false,
              "returnTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "injection",
                  "parameterTypeTokenRange": {
                    "startIndex": 4,
                    "endIndex": 8
                  }
                }
              ],
              "name": "pushInjection"
            },
            {
              "kind": "Method",
              "canonicalReference": "(runWithBinding:static,0)",
              "docComment": "/**\n * Run the given action with the given binding and session\n *\n * @param action - A function to do some work with the resolution session\n *\n * @param binding - The current binding\n *\n * @param session - The current resolution session\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static "
                },
                {
                  "kind": "Reference",
                  "text": "runWithBinding"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "action"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionAction"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "binding"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Binding"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "session"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 18,
                "endIndex": 19
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "action",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                },
                {
                  "parameterName": "binding",
                  "parameterTypeTokenRange": {
                    "startIndex": 9,
                    "endIndex": 13
                  }
                },
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 16,
                    "endIndex": 17
                  }
                }
              ],
              "name": "runWithBinding"
            },
            {
              "kind": "Method",
              "canonicalReference": "(runWithInjection:static,0)",
              "docComment": "/**\n * Run the given action with the given injection and session\n *\n * @param action - A function to do some work with the resolution session\n *\n * @param binding - The current injection\n *\n * @param session - The current resolution session\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "static "
                },
                {
                  "kind": "Reference",
                  "text": "runWithInjection"
                },
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "action"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionAction"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "injection"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "session"
                },
                {
                  "kind": "Content",
                  "text": "?: "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Content",
                  "text": "any"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "isStatic": true,
              "returnTypeTokenRange": {
                "startIndex": 18,
                "endIndex": 19
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "action",
                  "parameterTypeTokenRange": {
                    "startIndex": 5,
                    "endIndex": 6
                  }
                },
                {
                  "parameterName": "injection",
                  "parameterTypeTokenRange": {
                    "startIndex": 9,
                    "endIndex": 13
                  }
                },
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 16,
                    "endIndex": 17
                  }
                }
              ],
              "name": "runWithInjection"
            },
            {
              "kind": "Property",
              "canonicalReference": "(stack:instance)",
              "docComment": "/**\n * A stack of bindings for the current resolution session. It's used to track the path of dependency resolution and detect circular dependencies.\n */\n",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "readonly "
                },
                {
                  "kind": "Reference",
                  "text": "stack"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionElement"
                },
                {
                  "kind": "Content",
                  "text": "[]"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "stack",
              "propertyTypeTokenRange": {
                "startIndex": 3,
                "endIndex": 5
              },
              "isStatic": false
            }
          ],
          "implementsTokenRanges": []
        },
        {
          "kind": "Function",
          "canonicalReference": "(resolveInjectedArguments:0)",
          "docComment": "/**\n * Given a function with arguments decorated with `@inject`, return the list of arguments resolved using the values bound in `ctx`.\n *\n * The function returns an argument array when all dependencies were resolved synchronously, or a Promise otherwise.\n *\n * @param target - The class for constructor injection or prototype for method injection\n *\n * @param method - The method name. If set to '', the constructor will be used.\n *\n * @param ctx - The context containing values for `@inject` resolution\n *\n * @param session - Optional session for binding and dependency resolution\n *\n * @param nonInjectedArgs - Optional array of args for non-injected parameters\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "resolveInjectedArguments"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "target"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "object"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "method"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "ctx"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "session"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "nonInjectedArgs"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Content",
              "text": "any[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "BoundValue"
            },
            {
              "kind": "Content",
              "text": "[]>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 23,
            "endIndex": 27
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "target",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "method",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            },
            {
              "parameterName": "ctx",
              "parameterTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 14
              }
            },
            {
              "parameterName": "session",
              "parameterTypeTokenRange": {
                "startIndex": 17,
                "endIndex": 18
              }
            },
            {
              "parameterName": "nonInjectedArgs",
              "parameterTypeTokenRange": {
                "startIndex": 21,
                "endIndex": 22
              }
            }
          ],
          "name": "resolveInjectedArguments"
        },
        {
          "kind": "Function",
          "canonicalReference": "(resolveInjectedProperties:0)",
          "docComment": "/**\n * Given a class with properties decorated with `@inject`, return the map of properties resolved using the values bound in `ctx`.\n *\n * The function returns an argument array when all dependencies were resolved synchronously, or a Promise otherwise.\n *\n * @param constructor - The class for which properties should be resolved.\n *\n * @param ctx - The context containing values for `@inject` resolution\n *\n * @param session - Optional session for binding and dependency resolution\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "resolveInjectedProperties"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "constructor"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Function"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "ctx"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "session"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "MapObject"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "BoundValue"
            },
            {
              "kind": "Content",
              "text": ">>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 15,
            "endIndex": 21
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "constructor",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            },
            {
              "parameterName": "ctx",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 10
              }
            },
            {
              "parameterName": "session",
              "parameterTypeTokenRange": {
                "startIndex": 13,
                "endIndex": 14
              }
            }
          ],
          "name": "resolveInjectedProperties"
        },
        {
          "kind": "Function",
          "canonicalReference": "(resolveList:0)",
          "docComment": "/**\n * Resolve entries of an array into a new array with the same indexes. If one or more entries of the source array are resolved to a promise by the `resolver` function, this method returns a promise which will be resolved to the new array with fully resolved entries.\n *\n * @param list - The original array containing the source entries\n *\n * @param resolver - A function resolves an entry to a value or promise. It will be invoked with the property value, the property index, and the source array.\n *\n * @example\n *\n * - Example 1: resolve all entries synchronously\n * ```ts\n * const result = resolveList(['a', 'b'], v => v.toUpperCase());\n * ```\n *\n * The `result` will be `['A', 'B']`.\n *\n * - Example 2: resolve one or more entries asynchronously\n * ```ts\n * const result = resolveList(['a', 'b'], v =>\n *   Promise.resolve(v.toUpperCase()),\n * );\n * ```\n *\n * The `result` will be a promise of `['A', 'B']`.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "resolveList"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "V"
            },
            {
              "kind": "Content",
              "text": ">("
            },
            {
              "kind": "Reference",
              "text": "list"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "[]"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "resolver"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "val"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "index"
            },
            {
              "kind": "Content",
              "text": ": number, "
            },
            {
              "kind": "Reference",
              "text": "list"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "[]) => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "V"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "V"
            },
            {
              "kind": "Content",
              "text": "[]>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 30,
            "endIndex": 34
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "list",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 11
              }
            },
            {
              "parameterName": "resolver",
              "parameterTypeTokenRange": {
                "startIndex": 14,
                "endIndex": 29
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "typeParameterName": "V",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "resolveList"
        },
        {
          "kind": "Function",
          "canonicalReference": "(resolveMap:0)",
          "docComment": "/**\n * Resolve entries of an object into a new object with the same keys. If one or more entries of the source object are resolved to a promise by the `resolver` function, this method returns a promise which will be resolved to the new object with fully resolved entries.\n *\n * @param map - The original object containing the source entries\n *\n * @param resolver - A function resolves an entry to a value or promise. It will be invoked with the property value, the property name, and the source object.\n *\n * @example\n *\n * - Example 1: resolve all entries synchronously\n * ```ts\n * const result = resolveMap({a: 'x', b: 'y'}, v => v.toUpperCase());\n * ```\n *\n * The `result` will be `{a: 'X', b: 'Y'}`.\n *\n * - Example 2: resolve one or more entries asynchronously\n * ```ts\n * const result = resolveMap({a: 'x', b: 'y'}, v =>\n *   Promise.resolve(v.toUpperCase()),\n * );\n * ```\n *\n * The `result` will be a promise of `{a: 'X', b: 'Y'}`.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "resolveMap"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "V"
            },
            {
              "kind": "Content",
              "text": ">("
            },
            {
              "kind": "Reference",
              "text": "map"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "MapObject"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "resolver"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "val"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "key"
            },
            {
              "kind": "Content",
              "text": ": string, "
            },
            {
              "kind": "Reference",
              "text": "map"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "MapObject"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">) => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "V"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "MapObject"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "V"
            },
            {
              "kind": "Content",
              "text": ">>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 34,
            "endIndex": 40
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "map",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 13
              }
            },
            {
              "parameterName": "resolver",
              "parameterTypeTokenRange": {
                "startIndex": 16,
                "endIndex": 33
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "typeParameterName": "V",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "resolveMap"
        },
        {
          "kind": "Interface",
          "canonicalReference": "(ResolverFunction:interface)",
          "docComment": "/**\n * A function to provide resolution of injected values\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "ResolverFunction"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "ResolverFunction",
          "members": [
            {
              "kind": "CallSignature",
              "canonicalReference": "(:call,0)",
              "docComment": "",
              "excerptTokens": [
                {
                  "kind": "Content",
                  "text": "("
                },
                {
                  "kind": "Reference",
                  "text": "ctx"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Context"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "injection"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "Readonly"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "Injection"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ", "
                },
                {
                  "kind": "Reference",
                  "text": "session"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Reference",
                  "text": "ResolutionSession"
                },
                {
                  "kind": "Content",
                  "text": "): "
                },
                {
                  "kind": "Reference",
                  "text": "ValueOrPromise"
                },
                {
                  "kind": "Content",
                  "text": "<"
                },
                {
                  "kind": "Reference",
                  "text": "BoundValue"
                },
                {
                  "kind": "Content",
                  "text": ">"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 16,
                "endIndex": 20
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [
                {
                  "parameterName": "ctx",
                  "parameterTypeTokenRange": {
                    "startIndex": 3,
                    "endIndex": 4
                  }
                },
                {
                  "parameterName": "injection",
                  "parameterTypeTokenRange": {
                    "startIndex": 7,
                    "endIndex": 11
                  }
                },
                {
                  "parameterName": "session",
                  "parameterTypeTokenRange": {
                    "startIndex": 14,
                    "endIndex": 15
                  }
                }
              ]
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Function",
          "canonicalReference": "(resolveUntil:0)",
          "docComment": "/**\n * Resolve an iterator of source values into a result until the evaluator returns `true`\n *\n * @param source - The iterator of source values\n *\n * @param resolver - The resolve function that maps the source value to a result\n *\n * @param evaluator - The evaluate function that decides when to stop\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "resolveUntil"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "V"
            },
            {
              "kind": "Content",
              "text": ">("
            },
            {
              "kind": "Reference",
              "text": "source"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Iterator"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "resolver"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "sourceVal"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ") => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "V"
            },
            {
              "kind": "Content",
              "text": " | undefined>"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "evaluator"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "sourceVal"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "targetVal"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "V"
            },
            {
              "kind": "Content",
              "text": " | undefined) => boolean"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "V"
            },
            {
              "kind": "Content",
              "text": " | undefined>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 38,
            "endIndex": 42
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "source",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 13
              }
            },
            {
              "parameterName": "resolver",
              "parameterTypeTokenRange": {
                "startIndex": 16,
                "endIndex": 25
              }
            },
            {
              "parameterName": "evaluator",
              "parameterTypeTokenRange": {
                "startIndex": 28,
                "endIndex": 37
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "typeParameterName": "V",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "resolveUntil"
        },
        {
          "kind": "Function",
          "canonicalReference": "(sortBindingsByPhase:0)",
          "docComment": "/**\n * Sort bindings by phase names denoted by a tag and the predefined order\n *\n * @param bindings - An array of bindings\n *\n * @param phaseTagName - Tag name for phase, for example, we can use the value `'a'` of tag `order` as the phase name for `binding.tag({order: 'a'})`.\n *\n * @param orderOfPhases - An array of phase names as the predefined order\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "sortBindingsByPhase"
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "bindings"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Readonly"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Binding"
            },
            {
              "kind": "Content",
              "text": "<unknown>>[]"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "phaseTagName"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Content",
              "text": "string"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "orderOfPhases"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Content",
              "text": "(string | symbol)[]"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "Readonly"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Binding"
            },
            {
              "kind": "Content",
              "text": "<unknown>>[]"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 18,
            "endIndex": 22
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "bindings",
              "parameterTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 9
              }
            },
            {
              "parameterName": "phaseTagName",
              "parameterTypeTokenRange": {
                "startIndex": 12,
                "endIndex": 13
              }
            },
            {
              "parameterName": "orderOfPhases",
              "parameterTypeTokenRange": {
                "startIndex": 16,
                "endIndex": 17
              }
            }
          ],
          "name": "sortBindingsByPhase"
        },
        {
          "kind": "Interface",
          "canonicalReference": "(Subscription:interface)",
          "docComment": "/**\n * Subscription of context events. It's modeled after https://github.com/tc39/proposal-observable.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export interface "
            },
            {
              "kind": "Reference",
              "text": "Subscription"
            },
            {
              "kind": "Content",
              "text": " "
            }
          ],
          "releaseTag": "Public",
          "name": "Subscription",
          "members": [
            {
              "kind": "MethodSignature",
              "canonicalReference": "(unsubscribe:0)",
              "docComment": "/**\n * unsubscribe\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "unsubscribe"
                },
                {
                  "kind": "Content",
                  "text": "(): "
                },
                {
                  "kind": "Content",
                  "text": "void"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "returnTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              },
              "releaseTag": "Public",
              "overloadIndex": 0,
              "parameters": [],
              "name": "unsubscribe"
            },
            {
              "kind": "PropertySignature",
              "canonicalReference": "closed",
              "docComment": "/**\n * Is the subscription closed?\n */\n",
              "excerptTokens": [
                {
                  "kind": "Reference",
                  "text": "closed"
                },
                {
                  "kind": "Content",
                  "text": ": "
                },
                {
                  "kind": "Content",
                  "text": "boolean"
                },
                {
                  "kind": "Content",
                  "text": ";"
                }
              ],
              "releaseTag": "Public",
              "name": "closed",
              "propertyTypeTokenRange": {
                "startIndex": 2,
                "endIndex": 3
              }
            }
          ],
          "extendsTokenRanges": []
        },
        {
          "kind": "Function",
          "canonicalReference": "(transformValueOrPromise:0)",
          "docComment": "/**\n * Transform a value or promise with a function that produces a new value or promise\n *\n * @param valueOrPromise - The value or promise\n *\n * @param transformer - A function that maps the source value to a value or promise\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "transformValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "V"
            },
            {
              "kind": "Content",
              "text": ">("
            },
            {
              "kind": "Reference",
              "text": "valueOrPromise"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "transformer"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "val"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ") => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "V"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "V"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 26,
            "endIndex": 30
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "valueOrPromise",
              "parameterTypeTokenRange": {
                "startIndex": 9,
                "endIndex": 13
              }
            },
            {
              "parameterName": "transformer",
              "parameterTypeTokenRange": {
                "startIndex": 16,
                "endIndex": 25
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            },
            {
              "typeParameterName": "V",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "transformValueOrPromise"
        },
        {
          "kind": "Function",
          "canonicalReference": "(tryWithFinally:0)",
          "docComment": "/**\n * Try to run an action that returns a promise or a value\n *\n * @param action - A function that returns a promise or a value\n *\n * @param finalAction - A function to be called once the action is fulfilled or rejected (synchronously or asynchronously)\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare function "
            },
            {
              "kind": "Reference",
              "text": "tryWithFinally"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">("
            },
            {
              "kind": "Reference",
              "text": "action"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "() => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "finalAction"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Content",
              "text": "() => void"
            },
            {
              "kind": "Content",
              "text": "): "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "returnTypeTokenRange": {
            "startIndex": 17,
            "endIndex": 21
          },
          "releaseTag": "Public",
          "overloadIndex": 0,
          "parameters": [
            {
              "parameterName": "action",
              "parameterTypeTokenRange": {
                "startIndex": 7,
                "endIndex": 12
              }
            },
            {
              "parameterName": "finalAction",
              "parameterTypeTokenRange": {
                "startIndex": 15,
                "endIndex": 16
              }
            }
          ],
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "name": "tryWithFinally"
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "AsInterceptedFunction",
          "docComment": "/**\n * The intercepted variant of a function to return `ValueOrPromise<T>`. If `T` is not a function, the type is `T`.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "AsInterceptedFunction"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " extends (..."
            },
            {
              "kind": "Reference",
              "text": "args"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "InvocationArgs"
            },
            {
              "kind": "Content",
              "text": ") => infer "
            },
            {
              "kind": "Reference",
              "text": "R"
            },
            {
              "kind": "Content",
              "text": " ? (..."
            },
            {
              "kind": "Reference",
              "text": "args"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "InvocationArgs"
            },
            {
              "kind": "Content",
              "text": ") => "
            },
            {
              "kind": "Reference",
              "text": "AsValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "R"
            },
            {
              "kind": "Content",
              "text": "> : "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "AsInterceptedFunction",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 5,
            "endIndex": 22
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "AsValueOrPromise",
          "docComment": "/**\n * Create the Promise type for `T`. If `T` extends `Promise`, the type is `T`, otherwise the type is `ValueOrPromise<T>`.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "AsValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Reference",
              "text": "Promise"
            },
            {
              "kind": "Content",
              "text": "<unknown> ? "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " : "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "AsValueOrPromise",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 5,
            "endIndex": 15
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "AsyncProxy",
          "docComment": "/**\n * The proxy type for `T`. The return type for any method of `T` with original return type `R` becomes `ValueOrPromise<R>` if `R` does not extend `Promise`. Property types stay untouched.\n *\n * @example\n * ```ts\n * class MyController {\n *   name: string;\n *\n *   greet(name: string): string {\n *     return `Hello, ${name}`;\n *   }\n *\n *   async hello(name: string) {\n *     return `Hello, ${name}`;\n *   }\n * }\n * ```\n *\n * `AsyncProxy<MyController>` will be:\n * ```ts\n * {\n *   name: string; // the same as MyController\n *   greet(name: string): ValueOrPromise<string>; // the return type becomes `ValueOrPromise<string>`\n *   hello(name: string): Promise<string>; // the same as MyController\n * }\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "AsyncProxy"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Content",
              "text": "{\n    ["
            },
            {
              "kind": "Reference",
              "text": "P"
            },
            {
              "kind": "Content",
              "text": " in keyof "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "]: "
            },
            {
              "kind": "Reference",
              "text": "AsInterceptedFunction"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "["
            },
            {
              "kind": "Reference",
              "text": "P"
            },
            {
              "kind": "Content",
              "text": "]>;\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "AsyncProxy",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 5,
            "endIndex": 16
          }
        },
        {
          "kind": "Variable",
          "canonicalReference": "BINDING_METADATA_KEY",
          "docComment": "/**\n * Metadata key for binding metadata\n */\n",
          "excerptTokens": [
            {
              "kind": "Reference",
              "text": "BINDING_METADATA_KEY"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "MetadataAccessor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "BindingMetadata"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "ClassDecorator"
            },
            {
              "kind": "Content",
              "text": ">"
            }
          ],
          "releaseTag": "Public",
          "name": "BINDING_METADATA_KEY",
          "variableTypeTokenRange": {
            "startIndex": 2,
            "endIndex": 8
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "BindingAddress",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "BindingAddress"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Content",
              "text": "string | "
            },
            {
              "kind": "Reference",
              "text": "BindingKey"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingAddress",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 7,
            "endIndex": 12
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "BindingFilter",
          "docComment": "/**\n * A function that filters bindings. It returns `true` to select a given binding.\n *\n * @remarks\n *\n * TODO(semver-major): We might change this type in the future to either remove the `<ValueType>` or make it as type guard by asserting the matched binding to be typed with `<ValueType>`.\n *\n * **NOTE**: Originally, we allow filters to be tied with a single value type. This actually does not make much sense - the filter function is typically invoked on all bindings to find those ones matching the given criteria. Filters must be prepared to handle bindings of any value type. We learned about this problem after enabling TypeScript's `strictFunctionTypes` check, but decided to preserve `ValueType` argument for backwards compatibility. The `<ValueType>` represents the value type for matched bindings but it's not used for checking.\n *\n * Ideally, `BindingFilter` should be declared as a type guard as follows:\n * ```ts\n * export type BindingFilterGuard<ValueType = unknown> = (\n *   binding: Readonly<Binding<unknown>>,\n * ) => binding is Readonly<Binding<ValueType>>;\n * ```\n *\n * But TypeScript treats the following types as incompatible and does not accept type 1 for type 2.\n *\n * 1. `(binding: Readonly<Binding<unknown>>) => boolean` 2. `(binding: Readonly<Binding<unknown>>) => binding is Readonly<Binding<ValueType>>`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "BindingFilter"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "ValueType"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "binding"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Readonly"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Binding"
            },
            {
              "kind": "Content",
              "text": "<unknown>>) => boolean"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingFilter",
          "typeParameters": [
            {
              "typeParameterName": "ValueType",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 7,
            "endIndex": 14
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "BindingFromClassOptions",
          "docComment": "/**\n * Options to customize the binding created from a class\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "BindingFromClassOptions"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "{\n    "
            },
            {
              "kind": "Reference",
              "text": "key"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "BindingAddress"
            },
            {
              "kind": "Content",
              "text": ";\n    "
            },
            {
              "kind": "Reference",
              "text": "type"
            },
            {
              "kind": "Content",
              "text": "?: string;\n    "
            },
            {
              "kind": "Reference",
              "text": "name"
            },
            {
              "kind": "Content",
              "text": "?: string;\n    "
            },
            {
              "kind": "Reference",
              "text": "namespace"
            },
            {
              "kind": "Content",
              "text": "?: string;\n    "
            },
            {
              "kind": "Reference",
              "text": "typeNamespaceMapping"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "TypeNamespaceMapping"
            },
            {
              "kind": "Content",
              "text": ";\n    "
            },
            {
              "kind": "Reference",
              "text": "defaultScope"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "BindingScope"
            },
            {
              "kind": "Content",
              "text": ";\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingFromClassOptions",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 22
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "BindingMetadata",
          "docComment": "/**\n * Binding metadata from `@bind`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "BindingMetadata"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "{\n    "
            },
            {
              "kind": "Reference",
              "text": "templates"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "BindingTemplate"
            },
            {
              "kind": "Content",
              "text": "[];\n    "
            },
            {
              "kind": "Reference",
              "text": "target"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Constructor"
            },
            {
              "kind": "Content",
              "text": "<unknown>;\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingMetadata",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 12
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "BindingScopeAndTags",
          "docComment": "/**\n * An object to configure binding scope and tags\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "BindingScopeAndTags"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "{\n    "
            },
            {
              "kind": "Reference",
              "text": "scope"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "BindingScope"
            },
            {
              "kind": "Content",
              "text": ";\n    "
            },
            {
              "kind": "Reference",
              "text": "tags"
            },
            {
              "kind": "Content",
              "text": "?: "
            },
            {
              "kind": "Reference",
              "text": "BindingTag"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "BindingTag"
            },
            {
              "kind": "Content",
              "text": "[];\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingScopeAndTags",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 14
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "BindingSelector",
          "docComment": "/**\n * Select binding(s) by key or a filter function\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "BindingSelector"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "ValueType"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Reference",
              "text": "BindingAddress"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "ValueType"
            },
            {
              "kind": "Content",
              "text": "> | "
            },
            {
              "kind": "Reference",
              "text": "BindingFilter"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "ValueType"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingSelector",
          "typeParameters": [
            {
              "typeParameterName": "ValueType",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 7,
            "endIndex": 15
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "BindingSpec",
          "docComment": "/**\n * Specification of parameters for `@bind()`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "BindingSpec"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Reference",
              "text": "BindingTemplate"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "BindingScopeAndTags"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingSpec",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 6
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "BindingTag",
          "docComment": "/**\n * Binding tag can be a simple name or name/value pairs\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "BindingTag"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Reference",
              "text": "TagMap"
            },
            {
              "kind": "Content",
              "text": " | string"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingTag",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 5
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "BindingTemplate",
          "docComment": "/**\n * A function as the template to configure bindings\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "BindingTemplate"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "unknown"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "binding"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Binding"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">) => void"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BindingTemplate",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 5,
                "endIndex": 6
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 7,
            "endIndex": 14
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "BoundValue",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "BoundValue"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "any"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "BoundValue",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 4
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "Constructor",
          "docComment": "/**\n * A class constructor accepting arbitrary arguments.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "Constructor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Content",
              "text": "new (..."
            },
            {
              "kind": "Reference",
              "text": "args"
            },
            {
              "kind": "Content",
              "text": ": any[]) => "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "Constructor",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 5,
            "endIndex": 9
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "ContextEventObserver",
          "docComment": "/**\n * Context event observer type - An instance of `ContextObserver` or a function\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "ContextEventObserver"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Reference",
              "text": "ContextObserver"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "ContextObserverFn"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ContextEventObserver",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 6
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "ContextEventType",
          "docComment": "/**\n * Context event types. We support `bind` and `unbind` for now but keep it open for new types\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "ContextEventType"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "'bind' | 'unbind' | string"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ContextEventType",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 4
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "ContextObserverFn",
          "docComment": "/**\n * Listen on `bind`, `unbind`, or other events\n *\n * @param eventType - Context event type\n *\n * @param binding - The binding as event source\n *\n * @param context - Context object for the binding event\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "ContextObserverFn"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "eventType"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "ContextEventType"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "binding"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Readonly"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Binding"
            },
            {
              "kind": "Content",
              "text": "<unknown>>, "
            },
            {
              "kind": "Reference",
              "text": "context"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": ") => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<void>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ContextObserverFn",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 20
          }
        },
        {
          "kind": "Variable",
          "canonicalReference": "DEFAULT_TYPE_NAMESPACES",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Reference",
              "text": "DEFAULT_TYPE_NAMESPACES"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "TypeNamespaceMapping"
            }
          ],
          "releaseTag": "Public",
          "name": "DEFAULT_TYPE_NAMESPACES",
          "variableTypeTokenRange": {
            "startIndex": 2,
            "endIndex": 3
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "GenericInterceptor",
          "docComment": "/**\n * An interceptor function to be invoked in a chain for the given context. It serves as the base interface for various types of interceptors, such as method invocation interceptor or request/response processing interceptor.\n *\n * @param context - Context object\n *\n * @param next - A function to proceed with downstream interceptors or the target operation\n *\n * @typeParam C - `Context` class or a subclass of `Context`\n *\n * @returns The invocation result as a value (sync) or promise (async)\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "C"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": " "
            },
            {
              "kind": "Content",
              "text": "= "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "context"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "C"
            },
            {
              "kind": "Content",
              "text": ", "
            },
            {
              "kind": "Reference",
              "text": "next"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Next"
            },
            {
              "kind": "Content",
              "text": ") => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationResult"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "GenericInterceptor",
          "typeParameters": [
            {
              "typeParameterName": "C",
              "constraintTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              },
              "defaultTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 10,
            "endIndex": 23
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "GenericInterceptorOrKey",
          "docComment": "/**\n * Interceptor function or a binding key that resolves a generic interceptor function\n *\n * @typeParam C - `Context` class or a subclass of `Context`\n *\n * @typeParam T - Return type of `next()`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptorOrKey"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "C"
            },
            {
              "kind": "Content",
              "text": " extends "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": " "
            },
            {
              "kind": "Content",
              "text": "= "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Reference",
              "text": "BindingAddress"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "C"
            },
            {
              "kind": "Content",
              "text": ">> | "
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "C"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "GenericInterceptorOrKey",
          "typeParameters": [
            {
              "typeParameterName": "C",
              "constraintTokenRange": {
                "startIndex": 5,
                "endIndex": 7
              },
              "defaultTypeTokenRange": {
                "startIndex": 8,
                "endIndex": 9
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 10,
            "endIndex": 20
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "Getter",
          "docComment": "/**\n * The function injected by `@inject.getter(bindingSelector)`. It can be used to fetch bound value(s) from the underlying binding(s). The return value will be an array if the `bindingSelector` is a `BindingFilter` function.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "Getter"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Content",
              "text": "() => "
            },
            {
              "kind": "Reference",
              "text": "Promise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "Getter",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 5,
            "endIndex": 10
          }
        },
        {
          "kind": "Variable",
          "canonicalReference": "GLOBAL_INTERCEPTOR_NAMESPACE",
          "docComment": "/**\n * Default namespace for global interceptors\n */\n",
          "excerptTokens": [
            {
              "kind": "Reference",
              "text": "GLOBAL_INTERCEPTOR_NAMESPACE"
            },
            {
              "kind": "Content",
              "text": " = \"globalInterceptors\""
            }
          ],
          "releaseTag": "Public",
          "name": "GLOBAL_INTERCEPTOR_NAMESPACE",
          "variableTypeTokenRange": {
            "startIndex": 0,
            "endIndex": 0
          }
        },
        {
          "kind": "Variable",
          "canonicalReference": "INTERCEPT_CLASS_KEY",
          "docComment": "/**\n * Metadata key for method-level interceptors\n */\n",
          "excerptTokens": [
            {
              "kind": "Reference",
              "text": "INTERCEPT_CLASS_KEY"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "MetadataAccessor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptorOrKey"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationContext"
            },
            {
              "kind": "Content",
              "text": ">[], "
            },
            {
              "kind": "Reference",
              "text": "ClassDecorator"
            },
            {
              "kind": "Content",
              "text": ">"
            }
          ],
          "releaseTag": "Public",
          "name": "INTERCEPT_CLASS_KEY",
          "variableTypeTokenRange": {
            "startIndex": 2,
            "endIndex": 10
          }
        },
        {
          "kind": "Variable",
          "canonicalReference": "INTERCEPT_METHOD_KEY",
          "docComment": "/**\n * Metadata key for method-level interceptors\n */\n",
          "excerptTokens": [
            {
              "kind": "Reference",
              "text": "INTERCEPT_METHOD_KEY"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "MetadataAccessor"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptorOrKey"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationContext"
            },
            {
              "kind": "Content",
              "text": ">[], "
            },
            {
              "kind": "Reference",
              "text": "MethodDecorator"
            },
            {
              "kind": "Content",
              "text": ">"
            }
          ],
          "releaseTag": "Public",
          "name": "INTERCEPT_METHOD_KEY",
          "variableTypeTokenRange": {
            "startIndex": 2,
            "endIndex": 10
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "InterceptorOrKey",
          "docComment": "/**\n * Interceptor function or binding key that can be used as parameters for `@intercept()`\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "InterceptorOrKey"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Reference",
              "text": "GenericInterceptorOrKey"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationContext"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "InterceptorOrKey",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 7
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "InvocationArgs",
          "docComment": "/**\n * Array of arguments for a method invocation\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "InvocationArgs"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "any[]"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "InvocationArgs",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 4
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "InvocationOptions",
          "docComment": "/**\n * Options to control invocations\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "InvocationOptions"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "{\n    "
            },
            {
              "kind": "Reference",
              "text": "skipParameterInjection"
            },
            {
              "kind": "Content",
              "text": "?: boolean;\n    "
            },
            {
              "kind": "Reference",
              "text": "skipInterceptors"
            },
            {
              "kind": "Content",
              "text": "?: boolean;\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "InvocationOptions",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 8
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "InvocationResult",
          "docComment": "/**\n * Return value for a method invocation\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "InvocationResult"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "any"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "InvocationResult",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 4
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "MapObject",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "MapObject"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Content",
              "text": "{\n    ["
            },
            {
              "kind": "Reference",
              "text": "name"
            },
            {
              "kind": "Content",
              "text": ": string]: "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ";\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "MapObject",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 5,
            "endIndex": 10
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "Next",
          "docComment": "/**\n * The `next` function that can be used to invoke next generic interceptor in the chain\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "Next"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "() => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "InvocationResult"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "Next",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 8
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "Notification",
          "docComment": "/**\n * Event data for observer notifications\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "Notification"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "{\n    "
            },
            {
              "kind": "Reference",
              "text": "eventType"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "ContextEventType"
            },
            {
              "kind": "Content",
              "text": ";\n    "
            },
            {
              "kind": "Reference",
              "text": "binding"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Readonly"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "Binding"
            },
            {
              "kind": "Content",
              "text": "<unknown>>;\n    "
            },
            {
              "kind": "Reference",
              "text": "context"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Context"
            },
            {
              "kind": "Content",
              "text": ";\n    "
            },
            {
              "kind": "Reference",
              "text": "observers"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "Set"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "ContextEventObserver"
            },
            {
              "kind": "Content",
              "text": ">;\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "Notification",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 24
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "ResolutionAction",
          "docComment": "/**\n * A function to be executed with the resolution session\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "ResolutionAction"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "session"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession"
            },
            {
              "kind": "Content",
              "text": ") => "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "BoundValue"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ResolutionAction",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 12
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "ResolutionElement",
          "docComment": "/**\n * Binding or injection elements tracked by resolution sessions\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "ResolutionElement"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Reference",
              "text": "BindingElement"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "InjectionElement"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ResolutionElement",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 6
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "ResolutionOptionsOrSession",
          "docComment": "/**\n * Resolution options or session\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "ResolutionOptionsOrSession"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Reference",
              "text": "ResolutionOptions"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "ResolutionSession"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ResolutionOptionsOrSession",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 6
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "Setter",
          "docComment": "/**\n * The function injected by `@inject.setter(bindingKey)`. It sets the underlying binding to a constant value using `binding.to(value)`.\n *\n * @param value - The value for the underlying binding\n *\n * @example\n * ```ts\n * setterFn('my-value');\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "Setter"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Content",
              "text": "("
            },
            {
              "kind": "Reference",
              "text": "value"
            },
            {
              "kind": "Content",
              "text": ": "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ") => void"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "Setter",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 5,
            "endIndex": 10
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "TagMap",
          "docComment": "",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "TagMap"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Reference",
              "text": "MapObject"
            },
            {
              "kind": "Content",
              "text": "<any>"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "TagMap",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 5
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "TypeNamespaceMapping",
          "docComment": "/**\n * Mapping artifact types to binding key namespaces (prefixes).\n *\n * @example\n * ```ts\n * {\n *   repository: 'repositories'\n * }\n * ```\n *\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "TypeNamespaceMapping"
            },
            {
              "kind": "Content",
              "text": " = "
            },
            {
              "kind": "Content",
              "text": "{\n    ["
            },
            {
              "kind": "Reference",
              "text": "name"
            },
            {
              "kind": "Content",
              "text": ": string]: string;\n}"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "TypeNamespaceMapping",
          "typeTokenRange": {
            "startIndex": 3,
            "endIndex": 6
          }
        },
        {
          "kind": "TypeAlias",
          "canonicalReference": "ValueOrPromise",
          "docComment": "/**\n * Representing a value or promise. This type is used to represent results of synchronous/asynchronous resolution of values.\n *\n * Note that we are using PromiseLike instead of native Promise to describe the asynchronous variant. This allows producers of async values to use any Promise implementation (e.g. Bluebird) instead of native Promises provided by JavaScript runtime.\n */\n",
          "excerptTokens": [
            {
              "kind": "Content",
              "text": "export declare type "
            },
            {
              "kind": "Reference",
              "text": "ValueOrPromise"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": "> = "
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": " | "
            },
            {
              "kind": "Reference",
              "text": "PromiseLike"
            },
            {
              "kind": "Content",
              "text": "<"
            },
            {
              "kind": "Reference",
              "text": "T"
            },
            {
              "kind": "Content",
              "text": ">"
            },
            {
              "kind": "Content",
              "text": ";"
            }
          ],
          "releaseTag": "Public",
          "name": "ValueOrPromise",
          "typeParameters": [
            {
              "typeParameterName": "T",
              "constraintTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              },
              "defaultTypeTokenRange": {
                "startIndex": 0,
                "endIndex": 0
              }
            }
          ],
          "typeTokenRange": {
            "startIndex": 5,
            "endIndex": 11
          }
        }
      ]
    }
  ]
}
