{
  "type": "File",
  "start": 0,
  "end": 1438,
  "loc": {
    "start": {
      "line": 1,
      "column": 0
    },
    "end": {
      "line": 63,
      "column": 0
    }
  },
  "program": {
    "type": "Program",
    "start": 0,
    "end": 1438,
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 63,
        "column": 0
      }
    },
    "sourceType": "module",
    "body": [
      {
        "type": "ImportDeclaration",
        "start": 81,
        "end": 139,
        "loc": {
          "start": {
            "line": 4,
            "column": 0
          },
          "end": {
            "line": 4,
            "column": 58
          }
        },
        "specifiers": [
          {
            "type": "ImportDefaultSpecifier",
            "start": 88,
            "end": 108,
            "loc": {
              "start": {
                "line": 4,
                "column": 7
              },
              "end": {
                "line": 4,
                "column": 27
              }
            },
            "local": {
              "type": "Identifier",
              "start": 88,
              "end": 108,
              "loc": {
                "start": {
                  "line": 4,
                  "column": 7
                },
                "end": {
                  "line": 4,
                  "column": 27
                },
                "identifierName": "ConfigurableInstance"
              },
              "name": "ConfigurableInstance",
              "leadingComments": null
            },
            "leadingComments": null
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 114,
          "end": 138,
          "loc": {
            "start": {
              "line": 4,
              "column": 33
            },
            "end": {
              "line": 4,
              "column": 57
            }
          },
          "extra": {
            "rawValue": "./ConfigurableInstance",
            "raw": "'./ConfigurableInstance'"
          },
          "value": "./ConfigurableInstance"
        },
        "leadingComments": [
          {
            "type": "CommentBlock",
            "value": "*\n * Declare an available dependency with various types of requirements.\n * ",
            "start": 0,
            "end": 80,
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 3,
                "column": 5
              }
            }
          }
        ]
      },
      {
        "type": "ExportDefaultDeclaration",
        "start": 141,
        "end": 1437,
        "loc": {
          "start": {
            "line": 6,
            "column": 0
          },
          "end": {
            "line": 62,
            "column": 1
          }
        },
        "declaration": {
          "type": "ClassDeclaration",
          "start": 156,
          "end": 1437,
          "loc": {
            "start": {
              "line": 6,
              "column": 15
            },
            "end": {
              "line": 62,
              "column": 1
            }
          },
          "id": {
            "type": "Identifier",
            "start": 162,
            "end": 183,
            "loc": {
              "start": {
                "line": 6,
                "column": 21
              },
              "end": {
                "line": 6,
                "column": 42
              },
              "identifierName": "DependencyDeclaration"
            },
            "name": "DependencyDeclaration"
          },
          "superClass": {
            "type": "Identifier",
            "start": 192,
            "end": 212,
            "loc": {
              "start": {
                "line": 6,
                "column": 51
              },
              "end": {
                "line": 6,
                "column": 71
              },
              "identifierName": "ConfigurableInstance"
            },
            "name": "ConfigurableInstance"
          },
          "body": {
            "type": "ClassBody",
            "start": 213,
            "end": 1437,
            "loc": {
              "start": {
                "line": 6,
                "column": 72
              },
              "end": {
                "line": 62,
                "column": 1
              }
            },
            "body": [
              {
                "type": "ClassProperty",
                "start": 296,
                "end": 309,
                "loc": {
                  "start": {
                    "line": 11,
                    "column": 2
                  },
                  "end": {
                    "line": 11,
                    "column": 15
                  }
                },
                "static": false,
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 296,
                  "end": 308,
                  "loc": {
                    "start": {
                      "line": 11,
                      "column": 2
                    },
                    "end": {
                      "line": 11,
                      "column": 14
                    },
                    "identifierName": "dependencies"
                  },
                  "name": "dependencies",
                  "leadingComments": null
                },
                "value": null,
                "leadingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * A map of named dependencies.\n   * @type {Object.<string|*>}\n   * ",
                    "start": 217,
                    "end": 293,
                    "loc": {
                      "start": {
                        "line": 7,
                        "column": 2
                      },
                      "end": {
                        "line": 10,
                        "column": 7
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * A map of named getters.\n   * @type {Object.<string|Function>}\n   * ",
                    "start": 313,
                    "end": 391,
                    "loc": {
                      "start": {
                        "line": 13,
                        "column": 2
                      },
                      "end": {
                        "line": 16,
                        "column": 7
                      }
                    }
                  }
                ]
              },
              {
                "type": "ClassProperty",
                "start": 394,
                "end": 402,
                "loc": {
                  "start": {
                    "line": 17,
                    "column": 2
                  },
                  "end": {
                    "line": 17,
                    "column": 10
                  }
                },
                "static": false,
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 394,
                  "end": 401,
                  "loc": {
                    "start": {
                      "line": 17,
                      "column": 2
                    },
                    "end": {
                      "line": 17,
                      "column": 9
                    },
                    "identifierName": "getters"
                  },
                  "name": "getters",
                  "leadingComments": null
                },
                "value": null,
                "leadingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * A map of named getters.\n   * @type {Object.<string|Function>}\n   * ",
                    "start": 313,
                    "end": 391,
                    "loc": {
                      "start": {
                        "line": 13,
                        "column": 2
                      },
                      "end": {
                        "line": 16,
                        "column": 7
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * A map of named setters.\n   * @type {Object.<string|Function>}\n   * ",
                    "start": 406,
                    "end": 484,
                    "loc": {
                      "start": {
                        "line": 19,
                        "column": 2
                      },
                      "end": {
                        "line": 22,
                        "column": 7
                      }
                    }
                  }
                ]
              },
              {
                "type": "ClassProperty",
                "start": 487,
                "end": 495,
                "loc": {
                  "start": {
                    "line": 23,
                    "column": 2
                  },
                  "end": {
                    "line": 23,
                    "column": 10
                  }
                },
                "static": false,
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 487,
                  "end": 494,
                  "loc": {
                    "start": {
                      "line": 23,
                      "column": 2
                    },
                    "end": {
                      "line": 23,
                      "column": 9
                    },
                    "identifierName": "setters"
                  },
                  "name": "setters",
                  "leadingComments": null
                },
                "value": null,
                "leadingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * A map of named setters.\n   * @type {Object.<string|Function>}\n   * ",
                    "start": 406,
                    "end": 484,
                    "loc": {
                      "start": {
                        "line": 19,
                        "column": 2
                      },
                      "end": {
                        "line": 22,
                        "column": 7
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * A map of named invalidators.\n   * @type {Object.<string|Function>}\n   * ",
                    "start": 499,
                    "end": 582,
                    "loc": {
                      "start": {
                        "line": 25,
                        "column": 2
                      },
                      "end": {
                        "line": 28,
                        "column": 7
                      }
                    }
                  }
                ]
              },
              {
                "type": "ClassProperty",
                "start": 585,
                "end": 598,
                "loc": {
                  "start": {
                    "line": 29,
                    "column": 2
                  },
                  "end": {
                    "line": 29,
                    "column": 15
                  }
                },
                "static": false,
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 585,
                  "end": 597,
                  "loc": {
                    "start": {
                      "line": 29,
                      "column": 2
                    },
                    "end": {
                      "line": 29,
                      "column": 14
                    },
                    "identifierName": "invalidators"
                  },
                  "name": "invalidators",
                  "leadingComments": null
                },
                "value": null,
                "leadingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * A map of named invalidators.\n   * @type {Object.<string|Function>}\n   * ",
                    "start": 499,
                    "end": 582,
                    "loc": {
                      "start": {
                        "line": 25,
                        "column": 2
                      },
                      "end": {
                        "line": 28,
                        "column": 7
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * A map of named change handler receivers.\n   * @type {Object.<string|Function>}\n   * ",
                    "start": 602,
                    "end": 697,
                    "loc": {
                      "start": {
                        "line": 31,
                        "column": 2
                      },
                      "end": {
                        "line": 34,
                        "column": 7
                      }
                    }
                  }
                ]
              },
              {
                "type": "ClassProperty",
                "start": 700,
                "end": 710,
                "loc": {
                  "start": {
                    "line": 35,
                    "column": 2
                  },
                  "end": {
                    "line": 35,
                    "column": 12
                  }
                },
                "static": false,
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 700,
                  "end": 709,
                  "loc": {
                    "start": {
                      "line": 35,
                      "column": 2
                    },
                    "end": {
                      "line": 35,
                      "column": 11
                    },
                    "identifierName": "listeners"
                  },
                  "name": "listeners",
                  "leadingComments": null
                },
                "value": null,
                "leadingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * A map of named change handler receivers.\n   * @type {Object.<string|Function>}\n   * ",
                    "start": 602,
                    "end": 697,
                    "loc": {
                      "start": {
                        "line": 31,
                        "column": 2
                      },
                      "end": {
                        "line": 34,
                        "column": 7
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * The factory function used to create the value of the dependency.\n   * @type {Function}\n   * @param {DependencyDeclaration} dependencyValues A `DependencyDeclaration` with resolved values rather than paths.\n   * @returns {*|Promise} The value of the dependency.\n   * ",
                    "start": 714,
                    "end": 991,
                    "loc": {
                      "start": {
                        "line": 37,
                        "column": 2
                      },
                      "end": {
                        "line": 42,
                        "column": 7
                      }
                    }
                  }
                ]
              },
              {
                "type": "ClassProperty",
                "start": 994,
                "end": 1002,
                "loc": {
                  "start": {
                    "line": 43,
                    "column": 2
                  },
                  "end": {
                    "line": 43,
                    "column": 10
                  }
                },
                "static": false,
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 994,
                  "end": 1001,
                  "loc": {
                    "start": {
                      "line": 43,
                      "column": 2
                    },
                    "end": {
                      "line": 43,
                      "column": 9
                    },
                    "identifierName": "factory"
                  },
                  "name": "factory",
                  "leadingComments": null
                },
                "value": null,
                "leadingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * The factory function used to create the value of the dependency.\n   * @type {Function}\n   * @param {DependencyDeclaration} dependencyValues A `DependencyDeclaration` with resolved values rather than paths.\n   * @returns {*|Promise} The value of the dependency.\n   * ",
                    "start": 714,
                    "end": 991,
                    "loc": {
                      "start": {
                        "line": 37,
                        "column": 2
                      },
                      "end": {
                        "line": 42,
                        "column": 7
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * If `true`, the `factory` is NOT called until **none** of the `dependencies` are `undefined`.\n   * @type {boolean}\n   * ",
                    "start": 1006,
                    "end": 1136,
                    "loc": {
                      "start": {
                        "line": 45,
                        "column": 2
                      },
                      "end": {
                        "line": 48,
                        "column": 7
                      }
                    }
                  }
                ]
              },
              {
                "type": "ClassProperty",
                "start": 1139,
                "end": 1146,
                "loc": {
                  "start": {
                    "line": 49,
                    "column": 2
                  },
                  "end": {
                    "line": 49,
                    "column": 9
                  }
                },
                "static": false,
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 1139,
                  "end": 1145,
                  "loc": {
                    "start": {
                      "line": 49,
                      "column": 2
                    },
                    "end": {
                      "line": 49,
                      "column": 8
                    },
                    "identifierName": "strict"
                  },
                  "name": "strict",
                  "leadingComments": null
                },
                "value": null,
                "leadingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * If `true`, the `factory` is NOT called until **none** of the `dependencies` are `undefined`.\n   * @type {boolean}\n   * ",
                    "start": 1006,
                    "end": 1136,
                    "loc": {
                      "start": {
                        "line": 45,
                        "column": 2
                      },
                      "end": {
                        "line": 48,
                        "column": 7
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * Always call the `factory` when calling `getPath`, even if there is an existing value.\n   * @type {boolean}\n   * ",
                    "start": 1150,
                    "end": 1273,
                    "loc": {
                      "start": {
                        "line": 51,
                        "column": 2
                      },
                      "end": {
                        "line": 54,
                        "column": 7
                      }
                    }
                  }
                ]
              },
              {
                "type": "ClassProperty",
                "start": 1276,
                "end": 1284,
                "loc": {
                  "start": {
                    "line": 55,
                    "column": 2
                  },
                  "end": {
                    "line": 55,
                    "column": 10
                  }
                },
                "static": false,
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 1276,
                  "end": 1283,
                  "loc": {
                    "start": {
                      "line": 55,
                      "column": 2
                    },
                    "end": {
                      "line": 55,
                      "column": 9
                    },
                    "identifierName": "noCache"
                  },
                  "name": "noCache",
                  "leadingComments": null
                },
                "value": null,
                "leadingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * Always call the `factory` when calling `getPath`, even if there is an existing value.\n   * @type {boolean}\n   * ",
                    "start": 1150,
                    "end": 1273,
                    "loc": {
                      "start": {
                        "line": 51,
                        "column": 2
                      },
                      "end": {
                        "line": 54,
                        "column": 7
                      }
                    }
                  }
                ],
                "trailingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * Merge all dependency types into one `Object` when being passed to the `factory`. Default: `true`\n   * @type {boolean}\n   * ",
                    "start": 1288,
                    "end": 1422,
                    "loc": {
                      "start": {
                        "line": 57,
                        "column": 2
                      },
                      "end": {
                        "line": 60,
                        "column": 7
                      }
                    }
                  }
                ]
              },
              {
                "type": "ClassProperty",
                "start": 1425,
                "end": 1435,
                "loc": {
                  "start": {
                    "line": 61,
                    "column": 2
                  },
                  "end": {
                    "line": 61,
                    "column": 12
                  }
                },
                "static": false,
                "computed": false,
                "key": {
                  "type": "Identifier",
                  "start": 1425,
                  "end": 1434,
                  "loc": {
                    "start": {
                      "line": 61,
                      "column": 2
                    },
                    "end": {
                      "line": 61,
                      "column": 11
                    },
                    "identifierName": "mergeDeps"
                  },
                  "name": "mergeDeps",
                  "leadingComments": null
                },
                "value": null,
                "leadingComments": [
                  {
                    "type": "CommentBlock",
                    "value": "*\n   * Merge all dependency types into one `Object` when being passed to the `factory`. Default: `true`\n   * @type {boolean}\n   * ",
                    "start": 1288,
                    "end": 1422,
                    "loc": {
                      "start": {
                        "line": 57,
                        "column": 2
                      },
                      "end": {
                        "line": 60,
                        "column": 7
                      }
                    }
                  }
                ]
              }
            ]
          },
          "leadingComments": [],
          "trailingComments": []
        }
      }
    ],
    "directives": []
  },
  "comments": [
    {
      "type": "CommentBlock",
      "value": "*\n * Declare an available dependency with various types of requirements.\n * ",
      "start": 0,
      "end": 80,
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 3,
          "column": 5
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * A map of named dependencies.\n   * @type {Object.<string|*>}\n   * ",
      "start": 217,
      "end": 293,
      "loc": {
        "start": {
          "line": 7,
          "column": 2
        },
        "end": {
          "line": 10,
          "column": 7
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * A map of named getters.\n   * @type {Object.<string|Function>}\n   * ",
      "start": 313,
      "end": 391,
      "loc": {
        "start": {
          "line": 13,
          "column": 2
        },
        "end": {
          "line": 16,
          "column": 7
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * A map of named setters.\n   * @type {Object.<string|Function>}\n   * ",
      "start": 406,
      "end": 484,
      "loc": {
        "start": {
          "line": 19,
          "column": 2
        },
        "end": {
          "line": 22,
          "column": 7
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * A map of named invalidators.\n   * @type {Object.<string|Function>}\n   * ",
      "start": 499,
      "end": 582,
      "loc": {
        "start": {
          "line": 25,
          "column": 2
        },
        "end": {
          "line": 28,
          "column": 7
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * A map of named change handler receivers.\n   * @type {Object.<string|Function>}\n   * ",
      "start": 602,
      "end": 697,
      "loc": {
        "start": {
          "line": 31,
          "column": 2
        },
        "end": {
          "line": 34,
          "column": 7
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * The factory function used to create the value of the dependency.\n   * @type {Function}\n   * @param {DependencyDeclaration} dependencyValues A `DependencyDeclaration` with resolved values rather than paths.\n   * @returns {*|Promise} The value of the dependency.\n   * ",
      "start": 714,
      "end": 991,
      "loc": {
        "start": {
          "line": 37,
          "column": 2
        },
        "end": {
          "line": 42,
          "column": 7
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * If `true`, the `factory` is NOT called until **none** of the `dependencies` are `undefined`.\n   * @type {boolean}\n   * ",
      "start": 1006,
      "end": 1136,
      "loc": {
        "start": {
          "line": 45,
          "column": 2
        },
        "end": {
          "line": 48,
          "column": 7
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * Always call the `factory` when calling `getPath`, even if there is an existing value.\n   * @type {boolean}\n   * ",
      "start": 1150,
      "end": 1273,
      "loc": {
        "start": {
          "line": 51,
          "column": 2
        },
        "end": {
          "line": 54,
          "column": 7
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * Merge all dependency types into one `Object` when being passed to the `factory`. Default: `true`\n   * @type {boolean}\n   * ",
      "start": 1288,
      "end": 1422,
      "loc": {
        "start": {
          "line": 57,
          "column": 2
        },
        "end": {
          "line": 60,
          "column": 7
        }
      }
    }
  ],
  "tokens": [
    {
      "type": "CommentBlock",
      "value": "*\n * Declare an available dependency with various types of requirements.\n * ",
      "start": 0,
      "end": 80,
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 3,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 81,
      "end": 87,
      "loc": {
        "start": {
          "line": 4,
          "column": 0
        },
        "end": {
          "line": 4,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "ConfigurableInstance",
      "start": 88,
      "end": 108,
      "loc": {
        "start": {
          "line": 4,
          "column": 7
        },
        "end": {
          "line": 4,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 109,
      "end": 113,
      "loc": {
        "start": {
          "line": 4,
          "column": 28
        },
        "end": {
          "line": 4,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "./ConfigurableInstance",
      "start": 114,
      "end": 138,
      "loc": {
        "start": {
          "line": 4,
          "column": 33
        },
        "end": {
          "line": 4,
          "column": 57
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 138,
      "end": 139,
      "loc": {
        "start": {
          "line": 4,
          "column": 57
        },
        "end": {
          "line": 4,
          "column": 58
        }
      }
    },
    {
      "type": {
        "label": "export",
        "keyword": "export",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "export",
      "start": 141,
      "end": 147,
      "loc": {
        "start": {
          "line": 6,
          "column": 0
        },
        "end": {
          "line": 6,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "default",
        "keyword": "default",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "default",
      "start": 148,
      "end": 155,
      "loc": {
        "start": {
          "line": 6,
          "column": 7
        },
        "end": {
          "line": 6,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "class",
        "keyword": "class",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "class",
      "start": 156,
      "end": 161,
      "loc": {
        "start": {
          "line": 6,
          "column": 15
        },
        "end": {
          "line": 6,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "DependencyDeclaration",
      "start": 162,
      "end": 183,
      "loc": {
        "start": {
          "line": 6,
          "column": 21
        },
        "end": {
          "line": 6,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "extends",
        "keyword": "extends",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "extends",
      "start": 184,
      "end": 191,
      "loc": {
        "start": {
          "line": 6,
          "column": 43
        },
        "end": {
          "line": 6,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "ConfigurableInstance",
      "start": 192,
      "end": 212,
      "loc": {
        "start": {
          "line": 6,
          "column": 51
        },
        "end": {
          "line": 6,
          "column": 71
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 213,
      "end": 214,
      "loc": {
        "start": {
          "line": 6,
          "column": 72
        },
        "end": {
          "line": 6,
          "column": 73
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * A map of named dependencies.\n   * @type {Object.<string|*>}\n   * ",
      "start": 217,
      "end": 293,
      "loc": {
        "start": {
          "line": 7,
          "column": 2
        },
        "end": {
          "line": 10,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "dependencies",
      "start": 296,
      "end": 308,
      "loc": {
        "start": {
          "line": 11,
          "column": 2
        },
        "end": {
          "line": 11,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 308,
      "end": 309,
      "loc": {
        "start": {
          "line": 11,
          "column": 14
        },
        "end": {
          "line": 11,
          "column": 15
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * A map of named getters.\n   * @type {Object.<string|Function>}\n   * ",
      "start": 313,
      "end": 391,
      "loc": {
        "start": {
          "line": 13,
          "column": 2
        },
        "end": {
          "line": 16,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "getters",
      "start": 394,
      "end": 401,
      "loc": {
        "start": {
          "line": 17,
          "column": 2
        },
        "end": {
          "line": 17,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 401,
      "end": 402,
      "loc": {
        "start": {
          "line": 17,
          "column": 9
        },
        "end": {
          "line": 17,
          "column": 10
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * A map of named setters.\n   * @type {Object.<string|Function>}\n   * ",
      "start": 406,
      "end": 484,
      "loc": {
        "start": {
          "line": 19,
          "column": 2
        },
        "end": {
          "line": 22,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "setters",
      "start": 487,
      "end": 494,
      "loc": {
        "start": {
          "line": 23,
          "column": 2
        },
        "end": {
          "line": 23,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 494,
      "end": 495,
      "loc": {
        "start": {
          "line": 23,
          "column": 9
        },
        "end": {
          "line": 23,
          "column": 10
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * A map of named invalidators.\n   * @type {Object.<string|Function>}\n   * ",
      "start": 499,
      "end": 582,
      "loc": {
        "start": {
          "line": 25,
          "column": 2
        },
        "end": {
          "line": 28,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "invalidators",
      "start": 585,
      "end": 597,
      "loc": {
        "start": {
          "line": 29,
          "column": 2
        },
        "end": {
          "line": 29,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 597,
      "end": 598,
      "loc": {
        "start": {
          "line": 29,
          "column": 14
        },
        "end": {
          "line": 29,
          "column": 15
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * A map of named change handler receivers.\n   * @type {Object.<string|Function>}\n   * ",
      "start": 602,
      "end": 697,
      "loc": {
        "start": {
          "line": 31,
          "column": 2
        },
        "end": {
          "line": 34,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "listeners",
      "start": 700,
      "end": 709,
      "loc": {
        "start": {
          "line": 35,
          "column": 2
        },
        "end": {
          "line": 35,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 709,
      "end": 710,
      "loc": {
        "start": {
          "line": 35,
          "column": 11
        },
        "end": {
          "line": 35,
          "column": 12
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * The factory function used to create the value of the dependency.\n   * @type {Function}\n   * @param {DependencyDeclaration} dependencyValues A `DependencyDeclaration` with resolved values rather than paths.\n   * @returns {*|Promise} The value of the dependency.\n   * ",
      "start": 714,
      "end": 991,
      "loc": {
        "start": {
          "line": 37,
          "column": 2
        },
        "end": {
          "line": 42,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "factory",
      "start": 994,
      "end": 1001,
      "loc": {
        "start": {
          "line": 43,
          "column": 2
        },
        "end": {
          "line": 43,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1001,
      "end": 1002,
      "loc": {
        "start": {
          "line": 43,
          "column": 9
        },
        "end": {
          "line": 43,
          "column": 10
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * If `true`, the `factory` is NOT called until **none** of the `dependencies` are `undefined`.\n   * @type {boolean}\n   * ",
      "start": 1006,
      "end": 1136,
      "loc": {
        "start": {
          "line": 45,
          "column": 2
        },
        "end": {
          "line": 48,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "strict",
      "start": 1139,
      "end": 1145,
      "loc": {
        "start": {
          "line": 49,
          "column": 2
        },
        "end": {
          "line": 49,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1145,
      "end": 1146,
      "loc": {
        "start": {
          "line": 49,
          "column": 8
        },
        "end": {
          "line": 49,
          "column": 9
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * Always call the `factory` when calling `getPath`, even if there is an existing value.\n   * @type {boolean}\n   * ",
      "start": 1150,
      "end": 1273,
      "loc": {
        "start": {
          "line": 51,
          "column": 2
        },
        "end": {
          "line": 54,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "noCache",
      "start": 1276,
      "end": 1283,
      "loc": {
        "start": {
          "line": 55,
          "column": 2
        },
        "end": {
          "line": 55,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1283,
      "end": 1284,
      "loc": {
        "start": {
          "line": 55,
          "column": 9
        },
        "end": {
          "line": 55,
          "column": 10
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n   * Merge all dependency types into one `Object` when being passed to the `factory`. Default: `true`\n   * @type {boolean}\n   * ",
      "start": 1288,
      "end": 1422,
      "loc": {
        "start": {
          "line": 57,
          "column": 2
        },
        "end": {
          "line": 60,
          "column": 7
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "mergeDeps",
      "start": 1425,
      "end": 1434,
      "loc": {
        "start": {
          "line": 61,
          "column": 2
        },
        "end": {
          "line": 61,
          "column": 11
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1434,
      "end": 1435,
      "loc": {
        "start": {
          "line": 61,
          "column": 11
        },
        "end": {
          "line": 61,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1436,
      "end": 1437,
      "loc": {
        "start": {
          "line": 62,
          "column": 0
        },
        "end": {
          "line": 62,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "eof",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1438,
      "end": 1438,
      "loc": {
        "start": {
          "line": 63,
          "column": 0
        },
        "end": {
          "line": 63,
          "column": 0
        }
      }
    }
  ]
}