Full Code of krzysztof-jusiak/di for AI

cpp14 472482b654ec cached
765 files
7.0 MB
1.9M tokens
11331 symbols
1 requests
Download .txt
Showing preview only (7,508K chars total). Download the full file or copy to clipboard to get everything.
Repository: krzysztof-jusiak/di
Branch: cpp14
Commit: 472482b654ec
Files: 765
Total size: 7.0 MB

Directory structure:
gitextract_euz3n4tr/

├── .appveyor.yml
├── .clang-format
├── .clang-tidy
├── .gitattributes
├── .travis.yml
├── .user-config.jam
├── CMakeLists.txt
├── Makefile
├── README.md
├── benchmark/
│   ├── Makefile
│   ├── bind_error/
│   │   ├── dagger2.java
│   │   ├── di.cpp
│   │   ├── dicpp.cpp
│   │   ├── fruit.cpp
│   │   ├── guice.java
│   │   └── ninject.cs
│   ├── bind_interface/
│   │   ├── dagger2.java
│   │   ├── di.cpp
│   │   ├── dicpp.cpp
│   │   ├── fruit.cpp
│   │   ├── guice.java
│   │   └── ninject.cs
│   ├── bind_value/
│   │   ├── dagger2.java
│   │   ├── di.cpp
│   │   ├── dicpp.cpp
│   │   ├── fruit.cpp
│   │   ├── guice.java
│   │   └── ninject.cs
│   ├── create_complex/
│   │   ├── dagger2.java
│   │   ├── di.cpp
│   │   ├── dicpp.cpp
│   │   ├── fruit.cpp
│   │   ├── guice.java
│   │   └── ninject.cs
│   ├── create_simple/
│   │   ├── dagger2.java
│   │   ├── di.cpp
│   │   ├── dicpp.cpp
│   │   ├── fruit.cpp
│   │   ├── guice.java
│   │   └── ninject.cs
│   ├── generate_test.py
│   └── performance/
│       ├── Makefile
│       ├── di.cpp
│       ├── di.sh
│       └── header.cpp
├── doc/
│   ├── CHANGELOG.md
│   ├── FAQ.md
│   ├── benchmarks.md
│   ├── concepts-driven-design-with-di/
│   │   ├── .gitignore
│   │   ├── .travis.yml
│   │   ├── CONTRIBUTING.md
│   │   ├── Gruntfile.js
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── bower.json
│   │   ├── css/
│   │   │   ├── print/
│   │   │   │   ├── paper.css
│   │   │   │   └── pdf.css
│   │   │   ├── reveal.css
│   │   │   ├── reveal.scss
│   │   │   └── theme/
│   │   │       ├── README.md
│   │   │       ├── beige.css
│   │   │       ├── black.css
│   │   │       ├── blood.css
│   │   │       ├── league.css
│   │   │       ├── moon.css
│   │   │       ├── night.css
│   │   │       ├── serif.css
│   │   │       ├── simple.css
│   │   │       ├── sky.css
│   │   │       ├── solarized.css
│   │   │       ├── source/
│   │   │       │   ├── beige.scss
│   │   │       │   ├── black.scss
│   │   │       │   ├── blood.scss
│   │   │       │   ├── league.scss
│   │   │       │   ├── moon.scss
│   │   │       │   ├── night.scss
│   │   │       │   ├── serif.scss
│   │   │       │   ├── simple.scss
│   │   │       │   ├── sky.scss
│   │   │       │   ├── solarized.scss
│   │   │       │   └── white.scss
│   │   │       ├── template/
│   │   │       │   ├── mixins.scss
│   │   │       │   ├── settings.scss
│   │   │       │   └── theme.scss
│   │   │       └── white.css
│   │   ├── example/
│   │   │   ├── god_object.cpp
│   │   │   ├── static_polymorphism.cpp
│   │   │   └── type_erasure.cpp
│   │   ├── index.html
│   │   ├── js/
│   │   │   └── reveal.js
│   │   ├── lib/
│   │   │   ├── css/
│   │   │   │   └── zenburn.css
│   │   │   ├── font/
│   │   │   │   ├── league-gothic/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   └── league-gothic.css
│   │   │   │   └── source-sans-pro/
│   │   │   │       ├── LICENSE
│   │   │   │       └── source-sans-pro.css
│   │   │   └── js/
│   │   │       ├── classList.js
│   │   │       └── html5shiv.js
│   │   ├── package.json
│   │   ├── plugin/
│   │   │   ├── highlight/
│   │   │   │   └── highlight.js
│   │   │   ├── markdown/
│   │   │   │   ├── example.html
│   │   │   │   ├── example.md
│   │   │   │   ├── markdown.js
│   │   │   │   └── marked.js
│   │   │   ├── math/
│   │   │   │   └── math.js
│   │   │   ├── multiplex/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── master.js
│   │   │   ├── notes/
│   │   │   │   ├── notes.html
│   │   │   │   └── notes.js
│   │   │   ├── notes-server/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── notes.html
│   │   │   ├── print-pdf/
│   │   │   │   └── print-pdf.js
│   │   │   ├── search/
│   │   │   │   └── search.js
│   │   │   └── zoom-js/
│   │   │       └── zoom.js
│   │   ├── test/
│   │   │   ├── examples/
│   │   │   │   ├── barebones.html
│   │   │   │   ├── embedded-media.html
│   │   │   │   ├── math.html
│   │   │   │   ├── slide-backgrounds.html
│   │   │   │   └── slide-transitions.html
│   │   │   ├── qunit-1.12.0.css
│   │   │   ├── qunit-1.12.0.js
│   │   │   ├── test-markdown-element-attributes.html
│   │   │   ├── test-markdown-element-attributes.js
│   │   │   ├── test-markdown-slide-attributes.html
│   │   │   ├── test-markdown-slide-attributes.js
│   │   │   ├── test-markdown.html
│   │   │   ├── test-markdown.js
│   │   │   ├── test-pdf.html
│   │   │   ├── test-pdf.js
│   │   │   ├── test.html
│   │   │   └── test.js
│   │   └── uml/
│   │       ├── app0.uml
│   │       ├── app1.uml
│   │       ├── app2.uml
│   │       ├── app3.uml
│   │       ├── app4.uml
│   │       └── guideline.uml
│   ├── cpp-london-2017/
│   │   ├── .gitignore
│   │   ├── .travis.yml
│   │   ├── CONTRIBUTING.md
│   │   ├── Gruntfile.js
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── bower.json
│   │   ├── css/
│   │   │   ├── print/
│   │   │   │   ├── paper.css
│   │   │   │   └── pdf.css
│   │   │   ├── reveal.css
│   │   │   ├── reveal.scss
│   │   │   └── theme/
│   │   │       ├── README.md
│   │   │       ├── beige.css
│   │   │       ├── black.css
│   │   │       ├── blood.css
│   │   │       ├── league.css
│   │   │       ├── moon.css
│   │   │       ├── night.css
│   │   │       ├── serif.css
│   │   │       ├── simple.css
│   │   │       ├── sky.css
│   │   │       ├── solarized.css
│   │   │       ├── source/
│   │   │       │   ├── beige.scss
│   │   │       │   ├── black.scss
│   │   │       │   ├── blood.scss
│   │   │       │   ├── league.scss
│   │   │       │   ├── moon.scss
│   │   │       │   ├── night.scss
│   │   │       │   ├── serif.scss
│   │   │       │   ├── simple.scss
│   │   │       │   ├── sky.scss
│   │   │       │   ├── solarized.scss
│   │   │       │   └── white.scss
│   │   │       ├── template/
│   │   │       │   ├── mixins.scss
│   │   │       │   ├── settings.scss
│   │   │       │   └── theme.scss
│   │   │       └── white.css
│   │   ├── example/
│   │   │   ├── god_object.cpp
│   │   │   ├── static_polymorphism.cpp
│   │   │   └── type_erasure.cpp
│   │   ├── index.html
│   │   ├── js/
│   │   │   └── reveal.js
│   │   ├── lib/
│   │   │   ├── css/
│   │   │   │   └── zenburn.css
│   │   │   ├── font/
│   │   │   │   ├── league-gothic/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   └── league-gothic.css
│   │   │   │   └── source-sans-pro/
│   │   │   │       ├── LICENSE
│   │   │   │       └── source-sans-pro.css
│   │   │   └── js/
│   │   │       ├── classList.js
│   │   │       └── html5shiv.js
│   │   ├── package.json
│   │   ├── plugin/
│   │   │   ├── highlight/
│   │   │   │   └── highlight.js
│   │   │   ├── markdown/
│   │   │   │   ├── example.html
│   │   │   │   ├── example.md
│   │   │   │   ├── markdown.js
│   │   │   │   └── marked.js
│   │   │   ├── math/
│   │   │   │   └── math.js
│   │   │   ├── multiplex/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── master.js
│   │   │   ├── notes/
│   │   │   │   ├── notes.html
│   │   │   │   └── notes.js
│   │   │   ├── notes-server/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── notes.html
│   │   │   ├── print-pdf/
│   │   │   │   └── print-pdf.js
│   │   │   ├── search/
│   │   │   │   └── search.js
│   │   │   └── zoom-js/
│   │   │       └── zoom.js
│   │   ├── test/
│   │   │   ├── examples/
│   │   │   │   ├── barebones.html
│   │   │   │   ├── embedded-media.html
│   │   │   │   ├── math.html
│   │   │   │   ├── slide-backgrounds.html
│   │   │   │   └── slide-transitions.html
│   │   │   ├── qunit-1.12.0.css
│   │   │   ├── qunit-1.12.0.js
│   │   │   ├── test-markdown-element-attributes.html
│   │   │   ├── test-markdown-element-attributes.js
│   │   │   ├── test-markdown-slide-attributes.html
│   │   │   ├── test-markdown-slide-attributes.js
│   │   │   ├── test-markdown.html
│   │   │   ├── test-markdown.js
│   │   │   ├── test-pdf.html
│   │   │   ├── test-pdf.js
│   │   │   ├── test.html
│   │   │   └── test.js
│   │   └── uml/
│   │       ├── app0.uml
│   │       ├── app1.uml
│   │       ├── app2.uml
│   │       ├── app3.uml
│   │       └── app4.uml
│   ├── cppnow-2016/
│   │   ├── .gitignore
│   │   ├── .travis.yml
│   │   ├── CONTRIBUTING.md
│   │   ├── Gruntfile.js
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── bower.json
│   │   ├── css/
│   │   │   ├── print/
│   │   │   │   ├── paper.css
│   │   │   │   └── pdf.css
│   │   │   ├── reveal.css
│   │   │   ├── reveal.scss
│   │   │   └── theme/
│   │   │       ├── README.md
│   │   │       ├── beige.css
│   │   │       ├── black.css
│   │   │       ├── blood.css
│   │   │       ├── league.css
│   │   │       ├── moon.css
│   │   │       ├── night.css
│   │   │       ├── serif.css
│   │   │       ├── simple.css
│   │   │       ├── sky.css
│   │   │       ├── solarized.css
│   │   │       ├── source/
│   │   │       │   ├── beige.scss
│   │   │       │   ├── black.scss
│   │   │       │   ├── blood.scss
│   │   │       │   ├── league.scss
│   │   │       │   ├── moon.scss
│   │   │       │   ├── night.scss
│   │   │       │   ├── serif.scss
│   │   │       │   ├── simple.scss
│   │   │       │   ├── sky.scss
│   │   │       │   ├── solarized.scss
│   │   │       │   └── white.scss
│   │   │       ├── template/
│   │   │       │   ├── mixins.scss
│   │   │       │   ├── settings.scss
│   │   │       │   └── theme.scss
│   │   │       └── white.css
│   │   ├── example/
│   │   │   ├── ctor1.cpp
│   │   │   ├── ctor2.cpp
│   │   │   ├── ctor3.cpp
│   │   │   ├── ctor4.cpp
│   │   │   ├── resolve.cpp
│   │   │   └── typename_erasure.cpp
│   │   ├── index.html
│   │   ├── js/
│   │   │   └── reveal.js
│   │   ├── lib/
│   │   │   ├── css/
│   │   │   │   └── zenburn.css
│   │   │   ├── font/
│   │   │   │   ├── league-gothic/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   └── league-gothic.css
│   │   │   │   └── source-sans-pro/
│   │   │   │       ├── LICENSE
│   │   │   │       └── source-sans-pro.css
│   │   │   └── js/
│   │   │       ├── classList.js
│   │   │       └── html5shiv.js
│   │   ├── package.json
│   │   ├── plugin/
│   │   │   ├── highlight/
│   │   │   │   └── highlight.js
│   │   │   ├── markdown/
│   │   │   │   ├── example.html
│   │   │   │   ├── example.md
│   │   │   │   ├── markdown.js
│   │   │   │   └── marked.js
│   │   │   ├── math/
│   │   │   │   └── math.js
│   │   │   ├── multiplex/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── master.js
│   │   │   ├── notes/
│   │   │   │   ├── notes.html
│   │   │   │   └── notes.js
│   │   │   ├── notes-server/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── notes.html
│   │   │   ├── print-pdf/
│   │   │   │   └── print-pdf.js
│   │   │   ├── search/
│   │   │   │   └── search.js
│   │   │   └── zoom-js/
│   │   │       └── zoom.js
│   │   └── test/
│   │       ├── examples/
│   │       │   ├── barebones.html
│   │       │   ├── embedded-media.html
│   │       │   ├── math.html
│   │       │   ├── slide-backgrounds.html
│   │       │   └── slide-transitions.html
│   │       ├── qunit-1.12.0.css
│   │       ├── qunit-1.12.0.js
│   │       ├── test-markdown-element-attributes.html
│   │       ├── test-markdown-element-attributes.js
│   │       ├── test-markdown-slide-attributes.html
│   │       ├── test-markdown-slide-attributes.js
│   │       ├── test-markdown.html
│   │       ├── test-markdown.js
│   │       ├── test-pdf.html
│   │       ├── test-pdf.js
│   │       ├── test.html
│   │       └── test.js
│   ├── cppnow-2017/
│   │   ├── .gitignore
│   │   ├── .travis.yml
│   │   ├── CONTRIBUTING.md
│   │   ├── Gruntfile.js
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── bower.json
│   │   ├── css/
│   │   │   ├── print/
│   │   │   │   ├── paper.css
│   │   │   │   └── pdf.css
│   │   │   ├── reveal.css
│   │   │   ├── reveal.scss
│   │   │   └── theme/
│   │   │       ├── README.md
│   │   │       ├── beige.css
│   │   │       ├── black.css
│   │   │       ├── blood.css
│   │   │       ├── league.css
│   │   │       ├── moon.css
│   │   │       ├── night.css
│   │   │       ├── serif.css
│   │   │       ├── simple.css
│   │   │       ├── sky.css
│   │   │       ├── solarized.css
│   │   │       ├── source/
│   │   │       │   ├── beige.scss
│   │   │       │   ├── black.scss
│   │   │       │   ├── blood.scss
│   │   │       │   ├── league.scss
│   │   │       │   ├── moon.scss
│   │   │       │   ├── night.scss
│   │   │       │   ├── serif.scss
│   │   │       │   ├── simple.scss
│   │   │       │   ├── sky.scss
│   │   │       │   ├── solarized.scss
│   │   │       │   └── white.scss
│   │   │       ├── template/
│   │   │       │   ├── mixins.scss
│   │   │       │   ├── settings.scss
│   │   │       │   └── theme.scss
│   │   │       └── white.css
│   │   ├── example/
│   │   │   ├── god_object.cpp
│   │   │   ├── static_polymorphism.cpp
│   │   │   └── type_erasure.cpp
│   │   ├── index.html
│   │   ├── js/
│   │   │   └── reveal.js
│   │   ├── lib/
│   │   │   ├── css/
│   │   │   │   └── zenburn.css
│   │   │   ├── font/
│   │   │   │   ├── league-gothic/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   └── league-gothic.css
│   │   │   │   └── source-sans-pro/
│   │   │   │       ├── LICENSE
│   │   │   │       └── source-sans-pro.css
│   │   │   └── js/
│   │   │       ├── classList.js
│   │   │       └── html5shiv.js
│   │   ├── package.json
│   │   ├── plugin/
│   │   │   ├── highlight/
│   │   │   │   └── highlight.js
│   │   │   ├── markdown/
│   │   │   │   ├── example.html
│   │   │   │   ├── example.md
│   │   │   │   ├── markdown.js
│   │   │   │   └── marked.js
│   │   │   ├── math/
│   │   │   │   └── math.js
│   │   │   ├── multiplex/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── master.js
│   │   │   ├── notes/
│   │   │   │   ├── notes.html
│   │   │   │   └── notes.js
│   │   │   ├── notes-server/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── notes.html
│   │   │   ├── print-pdf/
│   │   │   │   └── print-pdf.js
│   │   │   ├── search/
│   │   │   │   └── search.js
│   │   │   └── zoom-js/
│   │   │       └── zoom.js
│   │   ├── test/
│   │   │   ├── examples/
│   │   │   │   ├── barebones.html
│   │   │   │   ├── embedded-media.html
│   │   │   │   ├── math.html
│   │   │   │   ├── slide-backgrounds.html
│   │   │   │   └── slide-transitions.html
│   │   │   ├── qunit-1.12.0.css
│   │   │   ├── qunit-1.12.0.js
│   │   │   ├── test-markdown-element-attributes.html
│   │   │   ├── test-markdown-element-attributes.js
│   │   │   ├── test-markdown-slide-attributes.html
│   │   │   ├── test-markdown-slide-attributes.js
│   │   │   ├── test-markdown.html
│   │   │   ├── test-markdown.js
│   │   │   ├── test-pdf.html
│   │   │   ├── test-pdf.js
│   │   │   ├── test.html
│   │   │   └── test.js
│   │   └── uml/
│   │       ├── app0.uml
│   │       ├── app1.uml
│   │       ├── app2.uml
│   │       ├── app3.uml
│   │       ├── app4.uml
│   │       └── guideline.uml
│   ├── examples.md
│   ├── extensions.md
│   ├── index.md
│   ├── meetingcpp-2016/
│   │   ├── .gitignore
│   │   ├── .travis.yml
│   │   ├── CONTRIBUTING.md
│   │   ├── Gruntfile.js
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── bower.json
│   │   ├── css/
│   │   │   ├── print/
│   │   │   │   ├── paper.css
│   │   │   │   └── pdf.css
│   │   │   ├── reveal.css
│   │   │   ├── reveal.scss
│   │   │   └── theme/
│   │   │       ├── README.md
│   │   │       ├── beige.css
│   │   │       ├── black.css
│   │   │       ├── blood.css
│   │   │       ├── league.css
│   │   │       ├── moon.css
│   │   │       ├── night.css
│   │   │       ├── serif.css
│   │   │       ├── simple.css
│   │   │       ├── sky.css
│   │   │       ├── solarized.css
│   │   │       ├── source/
│   │   │       │   ├── beige.scss
│   │   │       │   ├── black.scss
│   │   │       │   ├── blood.scss
│   │   │       │   ├── league.scss
│   │   │       │   ├── moon.scss
│   │   │       │   ├── night.scss
│   │   │       │   ├── serif.scss
│   │   │       │   ├── simple.scss
│   │   │       │   ├── sky.scss
│   │   │       │   ├── solarized.scss
│   │   │       │   └── white.scss
│   │   │       ├── template/
│   │   │       │   ├── mixins.scss
│   │   │       │   ├── settings.scss
│   │   │       │   └── theme.scss
│   │   │       └── white.css
│   │   ├── index.html
│   │   ├── js/
│   │   │   └── reveal.js
│   │   ├── lib/
│   │   │   ├── css/
│   │   │   │   └── zenburn.css
│   │   │   ├── font/
│   │   │   │   ├── league-gothic/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   └── league-gothic.css
│   │   │   │   └── source-sans-pro/
│   │   │   │       ├── LICENSE
│   │   │   │       └── source-sans-pro.css
│   │   │   └── js/
│   │   │       ├── classList.js
│   │   │       └── html5shiv.js
│   │   ├── package.json
│   │   ├── plugin/
│   │   │   ├── highlight/
│   │   │   │   └── highlight.js
│   │   │   ├── markdown/
│   │   │   │   ├── example.html
│   │   │   │   ├── example.md
│   │   │   │   ├── markdown.js
│   │   │   │   └── marked.js
│   │   │   ├── math/
│   │   │   │   └── math.js
│   │   │   ├── multiplex/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── master.js
│   │   │   ├── notes/
│   │   │   │   ├── notes.html
│   │   │   │   └── notes.js
│   │   │   ├── notes-server/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── notes.html
│   │   │   ├── print-pdf/
│   │   │   │   └── print-pdf.js
│   │   │   ├── search/
│   │   │   │   └── search.js
│   │   │   └── zoom-js/
│   │   │       └── zoom.js
│   │   ├── test/
│   │   │   ├── examples/
│   │   │   │   ├── barebones.html
│   │   │   │   ├── embedded-media.html
│   │   │   │   ├── math.html
│   │   │   │   ├── slide-backgrounds.html
│   │   │   │   └── slide-transitions.html
│   │   │   ├── qunit-1.12.0.css
│   │   │   ├── qunit-1.12.0.js
│   │   │   ├── test-markdown-element-attributes.html
│   │   │   ├── test-markdown-element-attributes.js
│   │   │   ├── test-markdown-slide-attributes.html
│   │   │   ├── test-markdown-slide-attributes.js
│   │   │   ├── test-markdown.html
│   │   │   ├── test-markdown.js
│   │   │   ├── test-pdf.html
│   │   │   ├── test-pdf.js
│   │   │   ├── test.html
│   │   │   └── test.js
│   │   └── uml/
│   │       └── game.uml
│   ├── mkdocs.yml
│   ├── overview.md
│   ├── scripts/
│   │   └── update_readme_toc.py
│   ├── themes/
│   │   ├── boost-classic/
│   │   │   ├── README.md
│   │   │   ├── base.html
│   │   │   ├── css/
│   │   │   │   ├── boostbook.css
│   │   │   │   └── github.css
│   │   │   ├── js/
│   │   │   │   └── highlight.pack.js
│   │   │   ├── nav.html
│   │   │   ├── scripts/
│   │   │   │   └── update_markdown.py
│   │   │   └── toc.html
│   │   └── boost-experimental/
│   │       ├── base.html
│   │       ├── breadcrumbs.html
│   │       ├── css/
│   │       │   ├── codemirror.css
│   │       │   ├── highlight.css
│   │       │   ├── mdn-like.css
│   │       │   ├── theme.css
│   │       │   └── theme_extra.css
│   │       ├── footer.html
│   │       ├── js/
│   │       │   ├── codemirror/
│   │       │   │   ├── active-line.js
│   │       │   │   ├── clike.js
│   │       │   │   └── codemirror.js
│   │       │   ├── cpp.js
│   │       │   ├── gitter.js
│   │       │   ├── highlight.pack.js
│   │       │   ├── theme.js
│   │       │   └── utility.js
│   │       ├── license/
│   │       │   └── highlight.js/
│   │       │       └── LICENSE
│   │       ├── search.html
│   │       ├── searchbox.html
│   │       ├── toc.html
│   │       └── versions.html
│   ├── try_it.md
│   ├── tutorial.md
│   ├── uml/
│   │   ├── coffee_maker.uml
│   │   └── di.uml
│   └── user_guide.md
├── example/
│   ├── CMakeLists.txt
│   ├── Jamfile.v2
│   ├── annotations.cpp
│   ├── automatic_injection.cpp
│   ├── bind_non_owning_ptr.cpp
│   ├── bindings.cpp
│   ├── configuration.cpp
│   ├── constructor_injection.cpp
│   ├── constructor_signature.cpp
│   ├── custom_policy.cpp
│   ├── custom_provider.cpp
│   ├── custom_scope.cpp
│   ├── deduce_scope.cpp
│   ├── dynamic_bindings.cpp
│   ├── eager_singletons.cpp
│   ├── errors/
│   │   ├── boundable_type_has_disallowed_qualifiers.cpp
│   │   ├── boundable_type_is_abstract.cpp
│   │   ├── boundable_type_is_bound_more_than_once.cpp
│   │   ├── boundable_type_is_neither_a_dependency_nor_an_injector.cpp
│   │   ├── boundable_type_is_not_related_to.cpp
│   │   ├── callable_requires_call_operator.cpp
│   │   ├── configurable_requires_callable_and_providable.cpp
│   │   ├── constructible_must_be_bound.cpp
│   │   ├── creatable_abstract_type_is_not_bound.cpp
│   │   ├── creatable_expose_abstract_type_is_not_bound.cpp
│   │   ├── creatable_instance_is_not_convertible_to.cpp
│   │   ├── creatable_scoped_is_not_convertible_to.cpp
│   │   ├── creatable_type_has_ambiguous_number_of_constructor_parameters.cpp
│   │   ├── creatable_type_has_to_many_constructor_parameters.cpp
│   │   ├── providable_requires_get.cpp
│   │   └── scopable_requires_create.cpp
│   ├── example.cpp
│   ├── fwd_bindings.cpp
│   ├── modules/
│   │   ├── common.hpp
│   │   ├── config.hpp
│   │   ├── controller.cpp
│   │   ├── controller.hpp
│   │   ├── main.cpp
│   │   ├── model.cpp
│   │   ├── model.hpp
│   │   ├── module_model.cpp
│   │   ├── module_model.hpp
│   │   ├── module_view.cpp
│   │   ├── module_view.hpp
│   │   ├── view.cpp
│   │   └── view.hpp
│   ├── modules.cpp
│   ├── motivation.cpp
│   ├── multiple_bindings.cpp
│   ├── multiple_interfaces.cpp
│   ├── performance/
│   │   ├── create_bound_interface.cpp
│   │   ├── create_bound_interface_via_exposed_module.cpp
│   │   ├── create_bound_interface_via_module.cpp
│   │   ├── create_named_type.cpp
│   │   ├── create_type_with_bound_instance.cpp
│   │   └── create_type_without_bindings.cpp
│   ├── pool_provider.cpp
│   ├── scopes.cpp
│   ├── try_it.cpp
│   ├── tutorial/
│   │   ├── basic_annotations_to_the_rescue.cpp
│   │   ├── basic_create_objects_tree.cpp
│   │   ├── basic_decide_the_life_times.cpp
│   │   ├── basic_first_steps_with_bindings.cpp
│   │   ├── basic_first_steps_with_bindings_override.cpp
│   │   ├── basic_first_steps_with_dynamic_bindings.cpp
│   │   ├── basic_first_steps_with_multiple_bindings.cpp
│   │   ├── basic_first_steps_with_template_bindings.cpp
│   │   ├── basic_split_your_configuration.cpp
│   │   └── basic_split_your_configuration_expose.cpp
│   └── user_guide/
│       ├── annotated_constructor_injection.cpp
│       ├── annotated_constructor_injection_with_constructor_definition.cpp
│       ├── annotated_constructor_injection_with_ctor_traits.cpp
│       ├── annotated_constructor_injection_with_the_same_names.cpp
│       ├── bind_cross_platform.cpp
│       ├── bind_deduce_type_to_value.cpp
│       ├── bind_dynamic_bindings.cpp
│       ├── bind_interface_to_implementation.cpp
│       ├── bind_multiple_bindings.cpp
│       ├── bind_multiple_bindings_initializer_list.cpp
│       ├── bind_multiple_interfaces.cpp
│       ├── bind_type_override.cpp
│       ├── bind_type_to_compile_time_value.cpp
│       ├── bind_type_to_value.cpp
│       ├── constructor_injection_aggregate.cpp
│       ├── constructor_injection_ambiguous_constructors_via_BOOST_DI_INJECT.cpp
│       ├── constructor_injection_ambiguous_constructors_via_BOOST_DI_INJECT_TRAITS.cpp
│       ├── constructor_injection_ambiguous_constructors_via_ctor_traits.cpp
│       ├── constructor_injection_ambiguous_constructors_via_inject.cpp
│       ├── constructor_injection_ambiguous_constructors_via_vaargs.cpp
│       ├── constructor_injection_default_values.cpp
│       ├── constructor_injection_direct.cpp
│       ├── constructor_injection_long_parameter_list.cpp
│       ├── constructor_injection_multiple_constructors.cpp
│       ├── injector_empty.cpp
│       ├── module.cpp
│       ├── module_exposed_annotated_type.cpp
│       ├── module_exposed_complex_types.cpp
│       ├── module_exposed_many_types.cpp
│       ├── module_exposed_type.cpp
│       ├── policies_constructible_global.cpp
│       ├── policies_constructible_local.cpp
│       ├── policies_print_type_extended.cpp
│       ├── policies_print_types.cpp
│       ├── providers_heap.cpp
│       ├── providers_heap_no_throw.cpp
│       ├── providers_stack_over_heap.cpp
│       ├── scopes_custom.cpp
│       ├── scopes_deduce_default.cpp
│       ├── scopes_instance.cpp
│       ├── scopes_singleton.cpp
│       └── scopes_unique.cpp
├── extension/
│   ├── CMakeLists.txt
│   ├── Jamfile.v2
│   ├── bindings/
│   │   ├── constructor_bindings.cpp
│   │   └── contextual_bindings.cpp
│   ├── injections/
│   │   ├── assisted_injection.cpp
│   │   ├── concepts.cpp
│   │   ├── factory.cpp
│   │   ├── generics.cpp
│   │   ├── lazy.cpp
│   │   ├── named_parameters.cpp
│   │   └── xml_injection.cpp
│   ├── policies/
│   │   ├── serialize.cpp
│   │   ├── types_dumper.cpp
│   │   └── uml_dumper.cpp
│   ├── providers/
│   │   └── mocks_provider.cpp
│   └── scopes/
│       ├── scoped_scope.cpp
│       ├── session_scope.cpp
│       └── shared_scope.cpp
├── include/
│   └── boost/
│       ├── di/
│       │   ├── aux_/
│       │   │   ├── compiler.hpp
│       │   │   ├── preprocessor.hpp
│       │   │   ├── type_traits.hpp
│       │   │   └── utility.hpp
│       │   ├── bindings.hpp
│       │   ├── concepts/
│       │   │   ├── boundable.hpp
│       │   │   ├── callable.hpp
│       │   │   ├── configurable.hpp
│       │   │   ├── creatable.hpp
│       │   │   ├── providable.hpp
│       │   │   └── scopable.hpp
│       │   ├── config.hpp
│       │   ├── core/
│       │   │   ├── any_type.hpp
│       │   │   ├── array.hpp
│       │   │   ├── binder.hpp
│       │   │   ├── bindings.hpp
│       │   │   ├── dependency.hpp
│       │   │   ├── injector.hpp
│       │   │   ├── policy.hpp
│       │   │   ├── pool.hpp
│       │   │   ├── provider.hpp
│       │   │   └── wrapper.hpp
│       │   ├── fwd.hpp
│       │   ├── fwd_ext.hpp
│       │   ├── inject.hpp
│       │   ├── injector.hpp
│       │   ├── make_injector.hpp
│       │   ├── policies/
│       │   │   └── constructible.hpp
│       │   ├── providers/
│       │   │   ├── heap.hpp
│       │   │   └── stack_over_heap.hpp
│       │   ├── scopes/
│       │   │   ├── deduce.hpp
│       │   │   ├── instance.hpp
│       │   │   ├── singleton.hpp
│       │   │   └── unique.hpp
│       │   ├── type_traits/
│       │   │   ├── ctor_traits.hpp
│       │   │   ├── memory_traits.hpp
│       │   │   ├── named_traits.hpp
│       │   │   ├── rebind_traits.hpp
│       │   │   └── scope_traits.hpp
│       │   └── wrappers/
│       │       ├── shared.hpp
│       │       └── unique.hpp
│       └── di.hpp
├── meta/
│   └── libraries.json
├── test/
│   ├── CMakeLists.txt
│   ├── Jamfile.v2
│   ├── common/
│   │   ├── common.hpp
│   │   ├── fakes/
│   │   │   ├── fake_config.hpp
│   │   │   ├── fake_dependency.hpp
│   │   │   ├── fake_injector.hpp
│   │   │   ├── fake_policy.hpp
│   │   │   ├── fake_pool.hpp
│   │   │   ├── fake_provider.hpp
│   │   │   ├── fake_scope.hpp
│   │   │   └── fake_wrapper.hpp
│   │   ├── test.hpp
│   │   └── utils.hpp
│   ├── ft/
│   │   ├── di_bind.cpp
│   │   ├── di_config.cpp
│   │   ├── di_config_global_policies.cpp
│   │   ├── di_config_global_provider.cpp
│   │   ├── di_errors.cpp
│   │   ├── di_inject.cpp
│   │   ├── di_injector.cpp
│   │   ├── di_injector_except.cpp
│   │   ├── di_module_1.cpp
│   │   ├── di_module_2.cpp
│   │   ├── di_module_3.cpp
│   │   ├── di_no_memory_inc.cpp
│   │   └── di_no_std_inc.cpp
│   ├── pt/
│   │   ├── di_compile_time.cpp
│   │   └── di_run_time.cpp
│   └── ut/
│       ├── aux_/
│       │   ├── preprocessor.cpp
│       │   ├── type_traits.cpp
│       │   └── utility.cpp
│       ├── bindings.cpp
│       ├── concepts/
│       │   ├── boundable.cpp
│       │   ├── callable.cpp
│       │   ├── configurable.cpp
│       │   ├── creatable.cpp
│       │   ├── providable.cpp
│       │   └── scopable.cpp
│       ├── config.cpp
│       ├── core/
│       │   ├── any_type.cpp
│       │   ├── array.cpp
│       │   ├── binder.cpp
│       │   ├── bindings.cpp
│       │   ├── dependency.cpp
│       │   ├── injector.cpp
│       │   ├── policy.cpp
│       │   ├── pool.cpp
│       │   ├── provider.cpp
│       │   └── wrapper.cpp
│       ├── inject.cpp
│       ├── injector.cpp
│       ├── make_injector.cpp
│       ├── policies/
│       │   └── constructible.cpp
│       ├── providers/
│       │   ├── heap.cpp
│       │   └── stack_over_heap.cpp
│       ├── scopes/
│       │   ├── deduce.cpp
│       │   ├── instance.cpp
│       │   ├── singleton.cpp
│       │   └── unique.cpp
│       ├── type_traits/
│       │   ├── ctor_traits.cpp
│       │   ├── memory_traits.cpp
│       │   ├── named_traits.cpp
│       │   ├── rebind_traits.cpp
│       │   └── scope_traits.cpp
│       └── wrappers/
│           ├── shared.cpp
│           └── unique.cpp
└── tools/
    └── pph.sh

================================================
FILE CONTENTS
================================================

================================================
FILE: .appveyor.yml
================================================
#
# Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#
version: 1.0.{build}
clone_folder: c:\di
shallow_clone: true

branches:
  except:
  - benchmarks
  - gh-pages

cache:
  - C:\cmake-3.7.2-win32-x86

environment:
  fast_finish: true

  matrix:
  - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
    VSPATH: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
    BS: cmake
    CMAKE_GENERATOR: Visual Studio 14 2015
    MEMCHECK: DRMEMORY
    PLATFORM: amd64

  - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
    VSPATH: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build
    BS: cmake
    CMAKE_GENERATOR: Visual Studio 15 2017
    MEMCHECK: DRMEMORY
    PLATFORM: amd64

matrix:
  fast_finish: true

install:
  - ps: |
      if (![IO.File]::Exists("C:\cmake-3.7.2-win32-x86\bin\cmake.exe")) {
        pushd c:\
        Start-FileDownload 'https://cmake.org/files/v3.7/cmake-3.7.2-win32-x86.zip'
        7z x -y cmake-3.7.2-win32-x86.zip
        popd
      }
  - cinst -y drmemory
  - appveyor DownloadFile http://downloads.sourceforge.net/mingw-w64/x86_64-5.2.0-release-posix-seh-rt_v4-rev1.7z
  - 7z x x86_64-5.2.0-release-posix-seh-rt_v4-rev1.7z > nul
  - call "%VSPATH%"\vcvarsall %PLATFORM%
  - set PATH=C:\cmake-3.7.2-win32-x86\bin;mingw64\bin;%PATH%;

build_script:
  - mingw32-make all


================================================
FILE: .clang-format
================================================
---
Language:               Cpp
Standard:               Cpp11
BasedOnStyle:           Google
ColumnLimit:            128
---


================================================
FILE: .clang-tidy
================================================
---
Checks:          'clang-diagnostic-*,clang-analyzer-*,-clang-analyzer-alpha*,*,-llvm-namespace-comment,-llvm-include-order,-readability-named-parameter,-google-readability-namespace-comments,-google-build-using-namespace,-google-readability-namespace-comments'
HeaderFilterRegex: boost/di
AnalyzeTemporaryDtors: false
CheckOptions:
  - key:             google-readability-braces-around-statements.ShortStatementLines
    value:           '1'
  - key:             google-readability-function-size.BranchThreshold
    value:           '4294967295'
  - key:             google-readability-function-size.LineThreshold
    value:           '4294967295'
  - key:             google-readability-function-size.StatementThreshold
    value:           '800'
  - key:             google-readability-namespace-comments.ShortNamespaceLines
    value:           '10'
  - key:             google-readability-namespace-comments.SpacesBeforeComments
    value:           '2'
  - key:             misc-assert-side-effect.AssertMacros
    value:           assert
  - key:             misc-assert-side-effect.CheckFunctionCalls
    value:           '0'
  - key:             readability-braces-around-statements.ShortStatementLines
    value:           '0'
  - key:             readability-function-size.BranchThreshold
    value:           '4294967295'
  - key:             readability-function-size.LineThreshold
    value:           '4294967295'
  - key:             readability-function-size.StatementThreshold
    value:           '800'
  - key:             readability-simplify-boolean-expr.ChainedConditionalAssignment
    value:           '0'
  - key:             readability-simplify-boolean-expr.ChainedConditionalReturn
    value:           '0'
...



================================================
FILE: .gitattributes
================================================
* text=auto


================================================
FILE: .travis.yml
================================================
#
# Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#
env:
  global:
  - secure: "eWDDsd5M1F8/LMYKdeDDSyfIB9kR1MoRPEg1Cml2PbN3c7T1cHczHH/DKeOrsWD0Ti6tjltczfW4VRYgv+pDSt9TsEsXMQmI5GY2a/lR3QcI/IIuQyQJ05VcmwNRIwZgHtUGukj7uHUzrNlQkATpfmGII7HG5ZXDoG9lfXzxITA=" # GH_TOKEN

git:
  depth: 1

sudo: false

branches:
  except:
    - gh-pages
    - benchmarks

matrix:
  fast_finish: true
  include:

#
# Documentation
#
  - os: linux
    env: DOCUMENTATION=ON
#
# Style
#
  - os: linux
    dist: precise
    env: CHECK=ON CLANG_FORMAT=clang-format-4.0 CLANG_TIDY=clang-tidy-4.0
    addons: { apt: { packages: ["clang-format-4.0", "clang-tidy-4.0"], sources: ["ubuntu-toolchain-r-test", "llvm-toolchain-trusty-4.0"] } }

#
# CMake
#
  - os: linux
    dist: precise
    env: BS=cmake CXX=clang++-3.6
    addons: { apt: { packages: ["clang-3.6", "libstdc++-5-dev", "gdb"], sources: ["ubuntu-toolchain-r-test", "llvm-toolchain-precise-3.6"] } }
    dist: precise

  - os: linux
    env: BS=cmake CXX=clang++-3.7
    addons: { apt: { packages: ["clang-3.7", "libstdc++-5-dev", "gdb"], sources: ["ubuntu-toolchain-r-test", "llvm-toolchain-precise-3.7"] } }

  - os: linux
    dist: precise
    env: BS=cmake CXX=clang++-3.8
    addons: { apt: { packages: ["clang-3.8", "libstdc++-6-dev", "gdb"], sources: ["ubuntu-toolchain-r-test", "llvm-toolchain-precise-3.8"] } }

  - os: linux
    dist: precise
    env: BS=cmake  CXX=clang++-3.9
    addons: { apt: { packages: ["clang-3.9", "libstdc++-6-dev", "gdb"], sources: ["ubuntu-toolchain-r-test", "llvm-toolchain-precise-3.9"] } }

  - os: linux
    dist: precise
    env: BS=cmake CXX=clang++-4.0
    addons: { apt: { packages: ["clang-4.0", "libstdc++-6-dev", "gdb"], sources: ["ubuntu-toolchain-r-test", "llvm-toolchain-trusty-4.0"] } }

  - os: linux
    dist: precise
    env: BS=cmake CXX=clang++-4.0 LIBCXX=ON
    addons: { apt: { packages: ["clang-4.0", "libstdc++-6-dev", "gdb"], sources: ["ubuntu-toolchain-r-test", "llvm-toolchain-trusty-4.0"] } }

  - os: linux
    dist: precise
    env: BS=cmake CXX=g++-5
    addons: { apt: { packages: ["g++-5", "libstdc++-5-dev", "gdb"], sources: ["ubuntu-toolchain-r-test"] } }

  - os: linux
    dist: precise
    env: BS=cmake CXX=g++-6
    addons: { apt: { packages: ["g++-6", "libstdc++-6-dev", "gdb"], sources: ["ubuntu-toolchain-r-test"] } }

  - os: linux
    dist: trusty
    env: BS=cmake CXX=g++-7
    addons: { apt: { packages: ["g++-7", "libstdc++-7-dev", "gdb"], sources: ["ubuntu-toolchain-r-test"] } }

  - os: osx
    osx_image: xcode7.3
    env: BS=cmake CXX=clang++

  - os: osx
    osx_image: xcode8.3
    env: BS=cmake CXX=clang++

  - os: osx
    osx_image: xcode9.1
    env: BS=cmake CXX=clang++

#
# Bjam
#
  - os: linux
    dist: precise
    env: BS=bjam TOOLSET=clang CXX=clang++-4.0
    addons: { apt: { packages: ["clang-4.0", "libstdc++-6-dev", "gdb"], sources: ["ubuntu-toolchain-r-test", "llvm-toolchain-trusty-4.0"] } }

  - os: linux
    dist: trusty
    env: BS=bjam TOOLSET=gcc CXX=g++-7
    addons: { apt: { packages: ["g++-7", "libstdc++-7-dev", "gdb"], sources: ["ubuntu-toolchain-r-test"] } }

  - os: osx
    osx_image: xcode9.1
    env: BS=bjam TOOLSET=clang CXX=clang++

#
# Static analysis
#
  - os: linux
    dist: precise
    env: BS=cmake VARIANT=analyze CXX=clang++-4.0 LIBCXX=ON
    addons: { apt: { packages: ["clang-4.0", "libstdc++-6-dev", "gdb"], sources: ["ubuntu-toolchain-r-test", "llvm-toolchain-trusty-4.0"] } }

  - os: linux
    dist: trusty
    env: BS=cmake VARIANT=analyze CXX=g++-7
    addons: { apt: { packages: ["g++-7", "libstdc++-7-dev", "gdb"], sources: ["ubuntu-toolchain-r-test"] } }

  - os: osx
    osx_image: xcode9.1
    env: BS=cmake VARIANT=analyze CXX=clang++

#
# Dynamic analysis
#
  - os: linux
    dist: precise
    env: BS=cmake MEMCHECK=valgrind CXX=clang++-4.0 LIBCXX=ON
    addons: { apt: { packages: ["clang-4.0", "libstdc++-6-dev", "valgrind", "gdb"], sources: ["ubuntu-toolchain-r-test", "llvm-toolchain-trusty-4.0"] } }

  - os: linux
    dist: trusty
    env: BS=cmake MEMCHECK=valgrind CXX=g++-7
    addons: { apt: { packages: ["g++-7", "libstdc++-7-dev", "valgrind", "gdb"], sources: ["ubuntu-toolchain-r-test"] } }

  - os: osx
    osx_image: xcode9.1
    env: BS=cmake MEMCHECK=valgrind CXX=clang++

#
# Coverage
#
  - os: linux
    dist: trusty
    env: BS=bjam TOOLSET=gcc GCOV=gcov-7 VARIANT=coverage CXX=g++-7
    addons: { apt: { packages: ["g++-7", "libstdc++-7-dev", "gdb"], sources: ["ubuntu-toolchain-r-test"] } }

#
# Benchmarks
#
  #- os: linux
    #dist: precise
    #env: BS=cmake BENCHMARK=QUICK CXX=clang++-4.0 LIBCXX=ON
    #addons: { apt: { packages: ["clang-4.0", "libstdc++-6-dev"], sources: ["ubuntu-toolchain-r-test", "llvm-toolchain-trusty-4.0"] } }

  #- os: linux
    #dist: trusty
    #env: BS=cmake BENCHMARK=QUICK CXX=g++-7
    #addons: { apt: { packages: ["g++-7", "libstdc++-7-dev"], sources: ["ubuntu-toolchain-r-test"] } }

  #- os: osx
    #osx_image: xcode9.1
    #env: BS=cmake BENCHMARK=QUICK CXX=clang++

before_install:
  - git config --global user.name "Continuous Integration"
  - git config --global user.email "kris@jusiak.net"
  - git config --global push.default simple

install:
  - if [ "${BS}" == "bjam" ]; then (wget https://github.com/boostorg/build/archive/boost-1.65.1.tar.gz
    && tar zxf boost-1.65.1.tar.gz && cd build-boost-1.65.1 && ./bootstrap.sh)
    && touch Jamroot && export BOOST_ROOT="$PWD/build-boost-1.65.1" && export PATH="$PATH:$BOOST_ROOT"; fi
  - if [ "${LIBCXX}" != "" ]; then (svn --quiet co http://llvm.org/svn/llvm-project/libcxx/trunk libcxx && cmake -Bbuild -H. && cmake --build build)
    && export CXXFLAGS="-stdlib=libc++ -I${TRAVIS_BUILD_DIR}/libcxx/include"
    && export LDFLAGS="-L${TRAVIS_BUILD_DIR}/libcxx/build/lib -lc++"
    && export LD_LIBRARY_PATH="${TRAVIS_BUILD_DIR}/libcxx/build/lib:$LD_LIBRARY_PATH"; fi

script:
  - if [ "${CXX}" != "" ]; then (travis_wait make all); fi
  - if [ "${CHECK}" != "" ]; then (travis_wait make check); fi
  - if [ "${TRAVIS_BRANCH}" == "cpp14" ] && [ "${DOCUMENTATION}" != "" ]; then (
    pip install https://github.com/mkdocs/mkdocs/archive/b30f38fe299738e8ce614e53c3342cc8bef02b5b.zip -U --user
    && git clone https://github.com/boost-experimental/di && cd di && rm -rf *
    && git checkout -b gh-pages -t origin/gh-pages && git reset --hard && cd ..
    && MKDOCS_THEME=boost-experimental MKDOCS_SITE=../di make doc
    && MKDOCS_THEME=boost-classic MKDOCS_SITE=../di/boost make doc readme
    && cd di && git add -A . && git commit -am "doc update"
    && git push --force --quiet "https://${GH_TOKEN}@github.com/boost-experimental/di"); fi

after_success:
  - if [ "${BENCHMARK}" != "" ]; then (
      git clone https://github.com/boost-experimental/di benchmarks
      && cd benchmarks && git checkout -b benchmarks -t origin/benchmarks
      && find ../build/test ../test -iname "*.json" | xargs -I% cp % . && git add -A . && git commit -am "update"
      && git push --force --quiet "https://${GH_TOKEN}@github.com/boost-experimental/di"); fi
  - if [ "${VARIANT}" == "coverage" ]; then (bash <(curl -s https://codecov.io/bash)); fi

notifications:
  webhooks:
    urls:
    - https://webhooks.gitter.im/e/743f46341bea58bbe3ca
  on_success: change
  on_failure: always
  on_start: false


================================================
FILE: .user-config.jam
================================================
#
# Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#
import os ;

using gcc : : [ os.environ CXX ] ;
using clang : : [ os.environ CXX ] ;
using darwin : : [ os.environ CXX ] ;



================================================
FILE: CMakeLists.txt
================================================
#
# Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#
cmake_minimum_required(VERSION 2.8)
project(Boost.DI CXX)
set(CXX_STANDARD "c++14")
enable_testing()
include_directories(include)

if(${CMAKE_CXX_COMPILER_ID} STREQUAL GNU)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y -fno-exceptions -pedantic -pedantic-errors -Wall -Wextra -Werror")
elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y -fno-exceptions -pedantic -pedantic-errors -Wall -Wextra -Werror")
elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /EHsc")
else()
    message(WARNING "Unsupported compiler!")
endif()

add_subdirectory(example)
add_subdirectory(extension)
add_subdirectory(test)



================================================
FILE: Makefile
================================================
#
# Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#
VALGRIND:=--memcheck="valgrind --leak-check=full --error-exitcode=1"
DRMEMORY:=--memcheck="drmemory -light -batch -exit_code_if_errors 1"
BS?=cmake
CMAKE?=cmake
CMAKE_GENERATOR?=Unix Makefiles
TOOLSET?=clang
CLANG_FORMAT?=clang-format
CLANG_TIDY?=clang-tidy
PYTHON?=python
MKDOCS?=mkdocs
MKDOCS_THEME?=boost-experimental
MKDOCS_SITE?=site

.PHONY: all clean doc

all: all_$(BS)

all_bjam:
	@cd test && bjam -j2 -q --toolset=$(TOOLSET) --user-config=../.user-config.jam debug-symbols=off $(VARIANT) $($(MEMCHECK)) cxxflags=" $(CXXFLAGS)" linkflags=" $(LDFLAGS)"
	@cd example && bjam -j2 -q --toolset=$(TOOLSET) --user-config=../.user-config.jam debug-symbols=off $($(MEMCHECK)) cxxflags=" $(CXXFLAGS)" linkflags=" $(LDFLAGS)"
	@cd extension && bjam -j2 -q --toolset=$(TOOLSET) --user-config=../.user-config.jam debug-symbols=off $($(MEMCHECK)) cxxflags=" $(CXXFLAGS)" linkflags=" $(LDFLAGS)"

all_cmake:
	@-mkdir build
	cd build && $(CMAKE) -G "$(CMAKE_GENERATOR)" -DCMAKE_VERBOSE_MAKEFILE=ON .. && $(CMAKE) --build . && ctest --output-on-failure

clean: clean_$(BS)

clean_bjam:
	@bjam --clean

clean_cmake:
	@rm -rf build

pph:
	@tools/pph.sh

check: check_pph check_style

check_pph: pph
	@git diff include/boost/di.hpp
	@git diff --quiet include/boost/di.hpp

check_style:
	@find include example extension test -iname "*.hpp" -or -iname "*.cpp" | xargs $(CLANG_FORMAT) -i
	@git diff include example extension test
	@exit `git ls-files -m include example extension test | wc -l`

check_static_analysis:
	@$(CLANG_TIDY) -header-filter='boost/di' `find example extension test -type f -iname "*.cpp"` -- -std=c++1y -I include -I test -include common/test.hpp

doc: readme doc_$(MKDOCS_THEME)

doc_%:
	cd doc && $(MKDOCS) build --clean --theme-dir themes/$* --site-dir $(MKDOCS_SITE)

doc_boost-classic:
	cd doc && $(PYTHON) themes/boost-classic/scripts/update_markdown.py . https://raw.githubusercontent.com/boost-experimental/di/cpp14
	cd doc && $(MKDOCS) build --clean --theme-dir themes/boost-classic --site-dir $(MKDOCS_SITE)

readme:
	cd doc && $(PYTHON) scripts/update_readme_toc.py mkdocs.yml ../README.md http://boost-experimental.github.io/di

release: all check



================================================
FILE: README.md
================================================
<a href="http://www.boost.org/LICENSE_1_0.txt" target="_blank">![Boost Licence](http://img.shields.io/badge/license-boost-blue.svg)</a>
<a href="https://github.com/boost-experimental/di/releases" target="_blank">![Version](https://badge.fury.io/gh/boost-experimental%2Fdi.svg)</a>
<a href="https://travis-ci.org/boost-experimental/di" target="_blank">![Build Status](https://img.shields.io/travis/boost-experimental/di/cpp14.svg?label=linux/osx)</a>
<a href="https://ci.appveyor.com/project/krzysztof-jusiak/di" target="_blank">![Build Status](https://img.shields.io/appveyor/ci/krzysztof-jusiak/di/cpp14.svg?label=windows)</a>
<a href="https://codecov.io/gh/boost-experimental/di" target="_blank">![Coveralls](https://codecov.io/gh/boost-experimental/di/branch/cpp14/graph/badge.svg)</a>
<a href="http://github.com/boost-experimental/di/issues" target="_blank">![Github Issues](https://img.shields.io/github/issues/boost-experimental/di.svg)</a>

---------------------------------------

# [Boost].DI

Your C++14 header only Dependency Injection library with no dependencies ([__Try it online!__](http://boost-experimental.github.io/di/try_it/index.html))

### Quick start

#### Download
[Boost].DI requires only one file. Get the latest header [here!](https://raw.githubusercontent.com/boost-experimental/di/cpp14/include/boost/di.hpp)

#### Include
```cpp
#include <boost/di.hpp>
namespace di = boost::di;
```

#### Compile

```sh
gcc/clang$ $CXX -std=c++14 -O2 -fno-exceptions -fno-rtti -Wall -Werror -pedantic-errors file.cpp
msvc$      cl /std:c++14 /Ox /W3 file.cpp
```

#### Quick guide - Create object graph

```cpp
class ctor {
public:
  explicit ctor(int i) : i(i) {}
  int i;
};

struct aggregate {
  double d;
};

class example {
  example(aggregate a, const ctor& c) {
    assert(87.0 == a.d);
    assert(42 == c.i);
  };
};

int main() {
  const auto injector = di::make_injector(
    di::bind<int>.to(42),
    di::bind<double>.to(87.0)
  );

  injector.create<example>();
}
```

<p align="center">
<table>
  <tr>
    <th></th>
    <th>Clang-3.8</th>
    <th>GCC-6</th>
    <th>MSVC-2015</th>
  </tr>

  <tr>
    <td>Compilation Time</td>
    <td>0.102s</td>
    <td>0.118s</td>
    <td>0.296s</td>
  </tr>

  <tr>
    <td>Binary size (stripped)</td>
    <td>6.2kb</td>
    <td>6.2kb</td>
    <td>105kb</td>
  </tr>

  <tr>
    <td>ASM x86-64</td>
    <td colspan="3">
      <pre><code>
xor eax, eax
retq
      </code></pre>
    </td>
  </tr>
</table>
</p>

#### Quick guide - Bind interfaces

```cpp
struct interface {
  virtual ~iworld() noexcept = default;
  virtual int get() const = 0;
};

class implementation : public interface {
public:
  int get() const override { return 42; }
};

struct example {
  example(std::shared_ptr<interface> i) {
    assert(42 == i->get());
  }
};

int main() {
  const auto injector = di::make_injector(
    di::bind<interface>.to<implementation>()
  );

  injector.create<std::unique_ptr<example>>();
}
```

<p align="center">
<table>
  <tr>
    <th></th>
    <th>Clang-3.8</th>
    <th>GCC-6</th>
    <th>MSVC-2015</th>
  </tr>

  <tr>
    <td>Compilation Time</td>
    <td>0.102s</td>
    <td>0.118s</td>
    <td>0.296s</td>
  </tr>

  <tr>
    <td>Binary size (stripped)</td>
    <td>6.2kb</td>
    <td>6.2kb</td>
    <td>105kb</td>
  </tr>

  <tr>
    <td>ASM x86-64 (same as `make_unique<example>`)</td>
    <td colspan="3">
      <pre><code>
push   %rbx
mov    %rdi,%rbx
mov    $0x8,%edi
callq  0x4008e0 <_Znwm@plt>
movq   $0x400c78,(%rax)
mov    %rax,(%rbx)
mov    %rbx,%rax
pop    %rbx
retq
      </code></pre>
    </td>
  </tr>
</table>
</p>

#### Quick guide - Bind templates

```cpp
template<class TPolicy = class TErrorPolicy>
class simple_updater : TPolicy {
  void update() {
    TPolicy::on("update");
  }
};

template<class T = class TUpdater>
class example {
public:
  explicit example(const TUpdater& updater)
    : updater(updater)
  { }

  void update() {
    updater.update();
  }

private:
  const TUpdater& updater;
};

int main() {
  struct throw_policy {
    void on(std::string_view str) {
      throw std::runtime_error(str);
    }
  };
  const auto injector = di::make_injector(
    di::bind<class TErrorPolicy>.to<throw_policy>(),
    di::bind<class TUpdater>.to<simple_updater>()
  );

  injector.create<example>().update();
}
```

<p align="center">
<table>
  <tr>
    <th></th>
    <th>Clang-3.8</th>
    <th>GCC-6</th>
    <th>MSVC-2015</th>
  </tr>

  <tr>
    <td>Compilation Time</td>
    <td>0.102s</td>
    <td>0.118s</td>
    <td>0.296s</td>
  </tr>

  <tr>
    <td>Binary size (stripped)</td>
    <td>6.2kb</td>
    <td>6.2kb</td>
    <td>105kb</td>
  </tr>

  <tr>
    <td>ASM x86-64</td>
    <td colspan="3">
      <pre><code>
xor eax, eax
retq
      </code></pre>
    </td>
  </tr>
</table>
</p>

#### Quick guide - Bind concepts

```cpp
struct Stremable {
 template<class T>
 auto requires(T&& t) -> decltype(
   int( t.read() ),
   t.write(int)
 );
};

template<class Exchange = Streamable(class ExchangeStream)
         class Engine   = Streamable(class EngineStream)>
class example {
  example(Exchange exchange, Engine engine)
    : exchange(exchange), engine(engine)
  { }
};

int main() {
  const auto injector = di::make_injector(
    di::bind<Stremable(class ExchangeStream)>.to<exchange>(),
    di::bind<Stremable(class EngineStream)>.to<engine>()
  );

  injector.create<example>();
}
```

<p align="center">
<table>
  <tr>
    <th></th>
    <th>Clang-3.8</th>
    <th>GCC-6</th>
    <th>MSVC-2015</th>
  </tr>

  <tr>
    <td>Compilation Time</td>
    <td>0.102s</td>
    <td>0.118s</td>
    <td>0.296s</td>
  </tr>

  <tr>
    <td>Binary size (stripped)</td>
    <td>6.2kb</td>
    <td>6.2kb</td>
    <td>105kb</td>
  </tr>

  <tr>
    <td>ASM x86-64</td>
    <td colspan="3">
      <pre><code>
xor eax, eax
retq
      </code></pre>
    </td>
  </tr>
</table>
</p>

---------------------------------------

### Documentation

[](GENERATE_TOC_BEGIN)

* [Introduction](http://boost-experimental.github.io/di/index.html)
    * [Do I use a Dependency Injection already?](http://boost-experimental.github.io/di/index.html#do-i-use-a-dependency-injection-already)
    * [Do I use Dependency Injection correctly?](http://boost-experimental.github.io/di/index.html#do-i-use-dependency-injection-correctly)
    * [Do I need a Dependency Injection?](http://boost-experimental.github.io/di/index.html#do-i-need-a-dependency-injection)
    * [STUPID vs SOLID - "Clean Code" Uncle Bob](http://boost-experimental.github.io/di/index.html#stupid-vs-solid-clean-code-uncle-bob)
    * [Do I need a DI Framework/Library?](http://boost-experimental.github.io/di/index.html#do-i-need-a-di-frameworklibrary)
    * [Manual DI - Wiring Mess (Avoid it by using [Boost].DI)](http://boost-experimental.github.io/di/index.html#manual-di-wiring-mess-avoid-it-by-using-boostdi)
    * [Real Life examples?](http://boost-experimental.github.io/di/index.html#real-life-examples)
    * [Why [Boost].DI?](http://boost-experimental.github.io/di/index.html#why-boostdi)
    * [[Boost].DI design goals](http://boost-experimental.github.io/di/index.html#boostdi-design-goals)
    * [Articles](http://boost-experimental.github.io/di/index.html#articles)
    * [Videos](http://boost-experimental.github.io/di/index.html#videos)
    * [Acknowledgements](http://boost-experimental.github.io/di/index.html#acknowledgements)
* [Overview](http://boost-experimental.github.io/di/overview/index.html)
    * [Quick Start](http://boost-experimental.github.io/di/overview/index.html#quick-start)
    * [Dependencies](http://boost-experimental.github.io/di/overview/index.html#dependencies)
    * [Supported/Tested compilers](http://boost-experimental.github.io/di/overview/index.html#supportedtested-compilers)
    * [Configuration](http://boost-experimental.github.io/di/overview/index.html#configuration)
    * [Exception Safety](http://boost-experimental.github.io/di/overview/index.html#exception-safety)
    * [Thread Safety](http://boost-experimental.github.io/di/overview/index.html#thread-safety)
    * [Error Messages](http://boost-experimental.github.io/di/overview/index.html#error-messages)
    * [Performance](http://boost-experimental.github.io/di/overview/index.html#performance)
* [Tutorial](http://boost-experimental.github.io/di/tutorial/index.html)
    * [0. [Pre] Refactor towards DI](http://boost-experimental.github.io/di/tutorial/index.html#0-pre-refactor-towards-di)
    * [1. [Basic] Create objects tree](http://boost-experimental.github.io/di/tutorial/index.html#1-basic-create-objects-tree)
    * [2. [Basic] First steps with bindings](http://boost-experimental.github.io/di/tutorial/index.html#2-basic-first-steps-with-bindings)
    * [3. [Basic] Decide the life times](http://boost-experimental.github.io/di/tutorial/index.html#3-basic-decide-the-life-times)
    * [4. [Basic] Annotations to the rescue](http://boost-experimental.github.io/di/tutorial/index.html#4-basic-annotations-to-the-rescue)
    * [5. [Basic] Split your configuration](http://boost-experimental.github.io/di/tutorial/index.html#5-basic-split-your-configuration)
    * [6. [Advanced] Dump/Limit your types](http://boost-experimental.github.io/di/tutorial/index.html#6-advanced-dumplimit-your-types)
    * [7. [Advanced] Customize it](http://boost-experimental.github.io/di/tutorial/index.html#7-advanced-customize-it)
    * [8. [Advanced] Extend it](http://boost-experimental.github.io/di/tutorial/index.html#8-advanced-extend-it)
* [Try It Online!](http://boost-experimental.github.io/di/try_it/index.html)
* [Benchmarks](http://boost-experimental.github.io/di/benchmarks/index.html)
    * [Performance](http://boost-experimental.github.io/di/benchmarks/index.html#performance)
    * [C++ Libraries](http://boost-experimental.github.io/di/benchmarks/index.html#c-libraries)
    * [C++ vs Java vs C Libraries](http://boost-experimental.github.io/di/benchmarks/index.html#c-vs-java-vs-c-libraries)
    * [Usage of C++ vs Java vs C Libraries](http://boost-experimental.github.io/di/benchmarks/index.html#usage-of-c-vs-java-vs-c-libraries)
* [User Guide](http://boost-experimental.github.io/di/user_guide/index.html)
    * [Injector](http://boost-experimental.github.io/di/user_guide/index.html#injector)
    * [Bindings](http://boost-experimental.github.io/di/user_guide/index.html#bindings)
    * [Injections](http://boost-experimental.github.io/di/user_guide/index.html#injections)
    * [Annotations](http://boost-experimental.github.io/di/user_guide/index.html#annotations)
    * [Scopes](http://boost-experimental.github.io/di/user_guide/index.html#scopes)
    * [Modules](http://boost-experimental.github.io/di/user_guide/index.html#modules)
    * [Providers](http://boost-experimental.github.io/di/user_guide/index.html#providers)
    * [Policies](http://boost-experimental.github.io/di/user_guide/index.html#policies)
    * [Concepts](http://boost-experimental.github.io/di/user_guide/index.html#concepts)
    * [Configuration](http://boost-experimental.github.io/di/user_guide/index.html#configuration)
* [Examples](http://boost-experimental.github.io/di/examples/index.html)
    * [Hello World](http://boost-experimental.github.io/di/examples/index.html#hello-world)
    * [Bindings](http://boost-experimental.github.io/di/examples/index.html#bindings)
    * [Dynamic Bindings](http://boost-experimental.github.io/di/examples/index.html#dynamic-bindings)
    * [Forward Bindings](http://boost-experimental.github.io/di/examples/index.html#forward-bindings)
    * [Multiple Bindings](http://boost-experimental.github.io/di/examples/index.html#multiple-bindings)
    * [Binding Non-owning Pointer](http://boost-experimental.github.io/di/examples/index.html#binding-non-owning-pointer)
    * [Automatic Injection](http://boost-experimental.github.io/di/examples/index.html#automatic-injection)
    * [Constructor Signature](http://boost-experimental.github.io/di/examples/index.html#constructor-signature)
    * [Constructor Injection](http://boost-experimental.github.io/di/examples/index.html#constructor-injection)
    * [Multiple Interface](http://boost-experimental.github.io/di/examples/index.html#multiple-interface)
    * [Annotations](http://boost-experimental.github.io/di/examples/index.html#annotations)
    * [Deduce Scope](http://boost-experimental.github.io/di/examples/index.html#deduce-scope)
    * [Custom Scope](http://boost-experimental.github.io/di/examples/index.html#custom-scope)
    * [Eager Singletons](http://boost-experimental.github.io/di/examples/index.html#eager-singletons)
    * [Modules](http://boost-experimental.github.io/di/examples/index.html#modules)
    * [Modules (hpp/cpp)](http://boost-experimental.github.io/di/examples/index.html#modules-hppcpp)
    * [Custom Policy](http://boost-experimental.github.io/di/examples/index.html#custom-policy)
    * [Custom Provider](http://boost-experimental.github.io/di/examples/index.html#custom-provider)
    * [Pool Provider](http://boost-experimental.github.io/di/examples/index.html#pool-provider)
    * [Configuration](http://boost-experimental.github.io/di/examples/index.html#configuration)
* [Extensions](http://boost-experimental.github.io/di/extensions/index.html)
    * [Constructor Bindings](http://boost-experimental.github.io/di/extensions/index.html#constructor-bindings)
    * [Contextual Bindings](http://boost-experimental.github.io/di/extensions/index.html#contextual-bindings)
    * [Assisted Injection](http://boost-experimental.github.io/di/extensions/index.html#assisted-injection)
    * [Concepts](http://boost-experimental.github.io/di/extensions/index.html#concepts)
    * [Factory](http://boost-experimental.github.io/di/extensions/index.html#factory)
    * [Generics / Typed Erasure Interfaces](http://boost-experimental.github.io/di/extensions/index.html#genericstyped-erasure-interfaces)
    * [Lazy](http://boost-experimental.github.io/di/extensions/index.html#lazy)
    * [Named Parameters](http://boost-experimental.github.io/di/extensions/index.html#named-parameters)
    * [XML Injection](http://boost-experimental.github.io/di/extensions/index.html#xml-injection)
    * [Serialize](http://boost-experimental.github.io/di/extensions/index.html#serialize)
    * [Types Dumper](http://boost-experimental.github.io/di/extensions/index.html#types-dumper)
    * [UML Dumper](http://boost-experimental.github.io/di/extensions/index.html#uml-dumper)
    * [Mocks Provider](http://boost-experimental.github.io/di/extensions/index.html#mocks-provider)
    * [Scoped Scope](http://boost-experimental.github.io/di/extensions/index.html#scoped-scope)
    * [Session Scope](http://boost-experimental.github.io/di/extensions/index.html#session-scope)
    * [Shared Scope](http://boost-experimental.github.io/di/extensions/index.html#shared-scope)
* [FAQ](http://boost-experimental.github.io/di/FAQ/index.html)
* [CHANGELOG](http://boost-experimental.github.io/di/CHANGELOG/index.html)
    * [ [1.1.0] - 2017-05-04](http://boost-experimental.github.io/di/CHANGELOG/index.html#-110-2017-05-04)
    * [ [1.0.1] - 2016-05-04](http://boost-experimental.github.io/di/CHANGELOG/index.html#-101-2016-05-04)
    * [ [1.0.0] - 2016-02-22](http://boost-experimental.github.io/di/CHANGELOG/index.html#-100-2016-02-22)
    * [ [0.5.0] - 2015-01-12](http://boost-experimental.github.io/di/CHANGELOG/index.html#-050-2015-01-12)
    * [ [0.1.0] - 2014-08-15](http://boost-experimental.github.io/di/CHANGELOG/index.html#-010-2014-08-15)



================================================
FILE: benchmark/Makefile
================================================
#
# Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#
FRAMEWORKS:=.frameworks
PYTHON:=python
CXX?=clang++
JAVA?=java
JAVAC?=javac
SC?=dmcs

benchmark:
	make TYPES=64 CTOR_ARGS=4 ITERATIONS=1024 TEST=unique base di fruit guice dagger2 ninject
	make TYPES=128 CTOR_ARGS=4 ITERATIONS=1024 TEST=unique base di fruit guice dagger2 ninject
	make TYPES=256 CTOR_ARGS=4 ITERATIONS=1024 TEST=unique base di fruit guice dagger2 ninject
	make TYPES=512 CTOR_ARGS=4 ITERATIONS=1024 TEST=unique base di fruit guice dagger2 ninject
	make TYPES=1024 CTOR_ARGS=4 ITERATIONS=1024 TEST=unique base di fruit guice dagger2 ninject

$(FRAMEWORKS)/base:

$(FRAMEWORKS)/fruit:
	@-mkdir -p $(FRAMEWORKS) 2>/dev/null
	git clone https://github.com/google/fruit.git $(FRAMEWORKS)/fruit
	cd $(FRAMEWORKS)/fruit && mkdir .build && cd .build && cmake .. && cmake --build .

$(FRAMEWORKS)/di:
	@-mkdir -p $(FRAMEWORKS) 2>/dev/null
	git clone https://github.com/boost-experimental/di.git $(FRAMEWORKS)/di

$(FRAMEWORKS)/hypodermic:
	@-mkdir -p $(FRAMEWORKS) 2>/dev/null
	git clone https://github.com/ybainier/Hypodermic.git $(FRAMEWORKS)/hypodermic

$(FRAMEWORKS)/guice:
	@-mkdir -p $(FRAMEWORKS)/guice 2>/dev/null
	cd $(FRAMEWORKS)/guice && curl -L -O http://central.maven.org/maven2/com/google/guava/guava/19.0/guava-19.0.jar
	cd $(FRAMEWORKS)/guice && curl -L -O http://central.maven.org/maven2/javax/inject/javax.inject/1/javax.inject-1.jar
	cd $(FRAMEWORKS)/guice && curl -L -O https://github.com/google/guice/releases/download/4.0/guice-4.0.jar
	cd $(FRAMEWORKS)/guice && curl -L -O http://central.maven.org/maven2/aopalliance/aopalliance/1.0/aopalliance-1.0.jar

$(FRAMEWORKS)/dagger2:
	@-mkdir -p $(FRAMEWORKS)/dagger2 2>/dev/null
	cd $(FRAMEWORKS)/dagger2 && curl -L -O https://github.com/krzysztof-jusiak/di_frameworks/raw/master/frameworks/dagger2/dagger-compiler-2.0-20150330.203231-18-jar-with-dependencies.jar
	cd $(FRAMEWORKS)/dagger2 && curl -L -O https://github.com/krzysztof-jusiak/di_frameworks/raw/master/frameworks/dagger2/javax.inject-1.jar
	#cd $(FRAMEWORKS)/dagger2 && curl -L -O http://central.maven.org/maven2/com/google/dagger/dagger/2.4/dagger-2.4.jar
	#cd $(FRAMEWORKS)/dagger2 && curl -L -O http://central.maven.org/maven2/com/google/dagger/dagger-compiler/2.4/dagger-compiler-2.4.jar
	#cd $(FRAMEWORKS)/dagger2 && curl -L -O http://central.maven.org/maven2/org/glassfish/javax.annotation/10.0-b28/javax.annotation-10.0-b28.jar

$(FRAMEWORKS)/ninject:
	@-mkdir -p $(FRAMEWORKS)/ninject 2>/dev/null
	cd $(FRAMEWORKS)/ninject && curl -L -O https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ninject2/Ninject-3.0.1.10-release-mono-4.0.zip
	cd $(FRAMEWORKS)/ninject && unzip -j Ninject-3.0.1.10-release-mono-4.0.zip

gen_%:
	@make $(FRAMEWORKS)/$*
	@echo "--------------"
	@echo $*
	@echo "--------------"
	@rm -rf .$*
	@mkdir .$* && cd .$* && FRAMEWORK=$* $(PYTHON) ../generate_test.py

base: gen_base
	cd .base && time $(CXX) base.cpp -std=c++11 -O2 -I.. -o base.out
	cd .base && strip base.out && ls -lh base.out 
	cd .base && time ./base.out || exit 1

di: gen_di
	cd .di && time $(CXX) di.cpp -std=c++1y -O2 -I.. -I ../$(FRAMEWORKS)/di/include -o di.out
	cd .di && strip di.out && ls -lh di.out || exit 1
	cd .di && time ./di.out

fruit: gen_fruit
	cd .fruit && time $(CXX) -DFRUIT_NO_LOOP_CHECK fruit.cpp -std=c++11 -O2 -I.. -I ../$(FRAMEWORKS)/fruit/include -I ../$(FRAMEWORKS)/fruit/.build/include -L ../$(FRAMEWORKS)/fruit/.build/src -lfruit -o fruit.out
	cd .fruit strip fruit.out && ls -lh fruit.out
	cd .fruit && time LD_LIBRARY_PATH=../$(FRAMEWORKS)/fruit/.build/src ./fruit.out || exit 1

hypodermic: gen_hypodermic
	cd .hypodermic && time $(CXX) hypodermic.cpp -std=c++11 -O2 -I.. -I ../$(FRAMEWORKS)/hypodermic -o hypodermic.out
	cd .hypodermic && strip hypodermic.out && ls -lh hypodermic.out
	cd .hypodermic && time ./hypodermic.out || exit 1

guice: gen_guice
	cd .guice && time $(JAVAC) -cp .:`ls ../$(FRAMEWORKS)/guice/*.jar| xargs | tr ' ' ':'` guice.java
	cd .guice && time $(JAVA) -cp .:`ls ../$(FRAMEWORKS)/guice/*.jar| xargs | tr ' ' ':'` guice || exit 1

dagger2: gen_dagger2
	cd .dagger2 && time $(JAVAC) -cp .:`ls ../$(FRAMEWORKS)/dagger2/*.jar| xargs | tr ' ' ':'` dagger2.java
	cd .dagger2 && time $(JAVA) -cp .:`ls ../$(FRAMEWORKS)/dagger2/*.jar| xargs | tr ' ' ':'` dagger2 || exit 1

ninject: gen_ninject
	cd .ninject && cp ../$(FRAMEWORKS)/ninject/Ninject.dll .
	cd .ninject && time $(SC) -o+ /r:Ninject.dll ninject.cs
	cd .ninject && time mono --aot=full ./ninject.exe
	cd .ninject && time mono ./ninject.exe || exit 1



================================================
FILE: benchmark/bind_error/dagger2.java
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
import dagger.*;
import javax.inject.Inject;

interface I {
  public void dummy();
};

class Impl implements I {
  @Inject Impl() { }
  @Override public void dummy() { }
}

@Module
class AppModule {
  //@Provides I provideI(Impl impl) { return impl; }
}

@Component(modules = AppModule.class)
interface AppComponent {
  I build();
}

public class dagger2 {
  public static void main(String[] args) {
    I object = Dagger_AppComponent.create().build();
    object.dummy();
   }
}

/**
 * dagger2.java:13: error: I cannot be provided without an @Provides-annotated method.
 * I build();
 *   ^
 * 1 error
 */


================================================
FILE: benchmark/bind_error/di.cpp
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
//<-
#include <memory>
//->
#include <boost/di.hpp>

namespace di = boost::di;

struct I {
  virtual ~I() noexcept = default;
  virtual void dummy() = 0;
};
struct Impl : I {
  void dummy() override {}
};

auto module = [] {
  // clang-format off
  return di::make_injector(
    // di::bind<I>.to<Impl>()
  );
  // clang-format on
};

int main() {
  auto injector = di::make_injector(module());
  std::unique_ptr<I> object{injector.create<I *>()};
  object->dummy();
}

// clang-format off
/**
 * di.cpp:32:38: warning: 'create<I *, 0>' is deprecated: creatable constraint not satisfied
 *   std::unique_ptr<I> object{injector.create<I *>()};
 *                                      ^
 * boost/di.hpp:2420:3: note: 'create<I *, 0>' has been explicitly marked deprecated here
 *   create
 *   ^
 * boost/di.hpp:871:2: error: 'boost::di::v1_0_0::concepts::abstract_type<I>::is_not_bound::error'
 *  error(_ = "type is not bound, did you forget to add: 'di::bind<interface>.to<implementation>()'?");
 *  ^
 */
// clang-format on


================================================
FILE: benchmark/bind_error/dicpp.cpp
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#include <di/registry.hpp>
#include <di/injector.hpp>
#include <di/constructor.hpp>

struct I {
  virtual ~I() noexcept = default;
  virtual void dummy() = 0;
};
struct Impl : I {
  DI_CONSTRUCTOR(Impl, ()) {}
  void dummy() override {}
};

void module(di::registry& r) {
  // r.add(r.type<I>().implementation<Impl>());
}

int main() {
  di::injector injector;
  injector.install(module);
  std::unique_ptr<I> object{injector.construct<I*>()};
  object->dummy();
}

/**
 * terminate called after throwing an instance of 'std::runtime_error'
 * what():  Requested type without corresponding provider: di::type_key<I*, void>.
 * Double check if the type is abstract
 */


================================================
FILE: benchmark/bind_error/fruit.cpp
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#include <fruit/fruit.h>

struct I {
  virtual ~I() noexcept = default;
  virtual void dummy() = 0;
};
struct Impl : I {
  INJECT(Impl()) {}
  void dummy() override {}
};

fruit::Component<I> module() {
  return fruit::createComponent();
  //.bind<I, Impl>();
}

int main() {
  fruit::Injector<I> injector{module()};
  std::unique_ptr<I> object{injector.get<I*>()};
  object->dummy();
}

// clang-format off
/**
  *  In file included from fruit.cpp:1:
  *  In file included from .fruit/include/fruit/fruit.h:25:
  * fruit/include/fruit/impl/injection_errors.h:33:3: error: static_assert failed
  * "No explicit binding nor C::Inject definition was found for T."
  *  static_assert(AlwaysFalse<T>::value,
  * ^             ~~~~~~~~~~~~~~~~~~~~~
  * fruit/include/fruit/impl/component.defn.h:41:9: note: in instantiation of
  * 'fruit::impl::NoBindingFoundError<I>' requested here
  * (void)typename fruit::impl::meta::CheckIfError<typename Op::Result>::type();
  * ^
  *  fruit.cpp:6:12: note: in instantiation of function template specialization
  *  'fruit::Component<I>::Component<
  *    fruit::impl::meta::ConsComp<
  *    fruit::impl::meta::Vector<>*,
  *    fruit::impl::meta::Vector<>,
  *    fruit::impl::meta::Vector<>, 
  *    fruit::impl::meta::Vector<>,
  *    fruit::impl::meta::Vector<>
  *    >*>' requested here
  *  return fruit::createComponent();
  */
// clang-format on


================================================
FILE: benchmark/bind_error/guice.java
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
import com.google.inject.*;

interface I {
  public void dummy();
};

class Impl implements I {
  @Inject Impl() { }
  @Override public void dummy() { }
}

class Module extends AbstractModule {
  @Override
  protected void configure() {
    //bind(I.class).to(Impl.class);
  }
}

public class guice {
  public static void main(String[] args) {
    Injector injector = Guice.createInjector(new Module());
    I object = injector.getInstance(I.class);
    object.dummy();
  }
}

/**
  * Exception in thread "main" com.google.inject.ConfigurationException:
  * Guice configuration errors:
  *
  * 1) No implementation for I was bound.
  * while locating I
  *
  * 1 error
  * at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1042)
  * at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1001)
  * at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051)
  * at guice.main(guice.java:15)
  *
 */


================================================
FILE: benchmark/bind_error/ninject.cs
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
using Ninject;

interface I {
  void dummy();
};

class Impl : I {
  public Impl() { }
  void I.dummy() { }
}

class Module : Ninject.Modules.NinjectModule {
  public override void Load() {
    //Bind<I>().To<Impl>();
  }
}

class ninject {
  static void Main(string[] args) {
    Ninject.IKernel kernel = new StandardKernel(new Module());
    I object = kernel.Get<I>();
    object->dummy();
  }
}

/**
 */


================================================
FILE: benchmark/bind_interface/dagger2.java
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
import dagger.*;
import javax.inject.Inject;

interface I {
  public void dummy();
};

class Impl implements I {
  @Inject Impl() { }
  @Override public void dummy() { }
}

@Module
class AppModule {
  @Provides I provideI(Impl impl) { return impl; }
}

@Component(modules = AppModule.class)
interface AppComponent {
  I build();
}

public class dagger2 {
  public static void main(String[] args) {
    I object = Dagger_AppComponent.create().build();
   }
}


================================================
FILE: benchmark/bind_interface/di.cpp
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
//<-
#include <memory>
//->
#include <boost/di.hpp>

namespace di = boost::di;

struct I {
  virtual ~I() noexcept = default;
  virtual void dummy() = 0;
};
struct Impl : I {
  void dummy() override {}
};

auto module = [] {
  // clang-format off
  return di::make_injector(
    di::bind<I>.to<Impl>()
  );
  // clang-format on
};

auto test() {
  auto injector = di::make_injector(module());
  return injector.create<std::unique_ptr<I>>();
}

//<-
int main() {}
/**
 * ASM x86-64 (same as `std::make_unique<implementation>()`)
 *
 * push   %rbx
 * mov    %rdi,%rbx
 * mov    $0x8,%edi
 * callq  0x4009f0 <_Znwm@plt>
 * movq   $0x400e78,(%rax)
 * mov    %rax,(%rbx)
 * mov    %rbx,%rax
 * pop    %rbx
 * ret
 */
//->


================================================
FILE: benchmark/bind_interface/dicpp.cpp
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
//<-
#include <memory>
//->
#include <di/registry.hpp>
#include <di/injector.hpp>
#include <di/constructor.hpp>

struct I {
  virtual ~I() noexcept = default;
  virtual void dummy() = 0;
};
struct Impl : I {
  DI_CONSTRUCTOR(Impl, ()) {}
  void dummy() override {}
};

void module(di::registry& r) {
  // clang-format off
  r.add(r.type<I>().implementation<Impl>());
  // clang-format on
}

std::unique_ptr<I> test() {
  di::injector injector;
  injector.install(module);
  std::unique_ptr<I> object{injector.construct<I*>()};
  return object;
}

//<-
int main() {}
/**
 * ASM x86-64
 *
 * push   %r14
 * push   %rbx
 * sub    $0xc8,%rsp
 * mov    %rdi,%r14
 * lea    0x20(%rsp),%rbx
 * xor    %esi,%esi
 * mov    %rbx,%rdi
 * callq  0x40c3d0 <_ZN2di8injectorC2ENS0_8localityE>
 * movq   $0x4044c0,(%rsp)
 * movq   $0x40bf80,0x18(%rsp)
 * movq   $0x40bf90,0x10(%rsp)
 * xorps  %xmm0,%xmm0
 * movaps %xmm0,0xb0(%rsp)
 * lea    0xb0(%rsp),%rsi
 * mov    %rbx,%rdi
 * callq  0x4047e0
 * <_ZN2di8registry3addI1IN5boost3mpl6m_itemINS_6detail4tags14implementationE4ImplNS4_3mapIN4mpl_2naESC_SC_SC_SC_SC_SC_SC_SC_SC_SC_SC_SC_SC_SC_SC_SC_SC_SC_SC_EEEEEEvRKNS6_20registration_builderIT_T0_EE>
 * mov    0x10(%rsp),%rax
 * test   %rax,%rax
 * je     0x404549 <_Z4testv+105>
 * lea    (%rsp),%rdi
 * mov    $0x3,%edx
 * mov    %rdi,%rsi
 * callq  *%rax
 * lea    0x20(%rsp),%rdi
 * callq  0x40bfc0 <_ZNK2di8registry9constructIP1IEENS_6traits13returned_typeIT_E4typeEv>
 * mov    %rax,(%r14)
 * lea    0x20(%rsp),%rdi
 * callq  0x40c7d0 <_ZN2di8registryD2Ev>
 * mov    %r14,%rax
 * add    $0xc8,%rsp
 * pop    %rbx
 * pop    %r14
 * retq
 * mov    %rax,%rbx
 * mov    0x10(%rsp),%rcx
 * test   %rcx,%rcx
 * je     0x404596 <_Z4testv+182>
 * lea    (%rsp),%rdi
 * mov    $0x3,%edx
 * mov    %rdi,%rsi
 * callq  *%rcx
 * jmp    0x404596 <_Z4testv+182>
 * mov    %rax,%rdi
 * callq  0x405890 <__clang_call_terminate>
 * mov    %rax,%rbx
 * lea    0x20(%rsp),%rdi
 * callq  0x40c7d0 <_ZN2di8registryD2Ev>
 * mov    %rbx,%rdi
 * callq  0x4041f0 <_Unwind_Resume@plt>
 * mov    %rax,%rdi
 * callq  0x405890 <__clang_call_terminate>
 */
//->


================================================
FILE: benchmark/bind_interface/fruit.cpp
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
//<-
#include <memory>
//->
#include <fruit/fruit.h>

struct I {
  virtual ~I() noexcept = default;
  virtual void dummy() = 0;
};
struct Impl : I {
  INJECT(Impl()) {}
  void dummy() override {}
};

fruit::Component<I> module() {
  // clang-format off
  return fruit::createComponent()
    .bind<I, Impl>();
  // clang-format on
}

std::unique_ptr<I> test() {
  fruit::Injector<I> injector{module()};
  // get<unique_ptr> is not supported
  std::unique_ptr<I> object{injector.get<I*>()};
  return object;
}

//<-
int main() {}
/**
 * ASM x86-64
 *
 *  push   %r14
 *  push   %rbx
 *  sub    $0xc8,%rsp
 *  mov    %rdi,%r14
 *  lea    (%rsp),%rbx
 *  mov    %rbx,%rdi
 *  callq  0x401740 <_Z6modulev>
 *  lea    0xc0(%rsp),%rdi
 *  mov    %rbx,%rsi
 *  callq  0x401d30 <_ZN5fruit8InjectorIJ1IEEC2ENS_9ComponentIJS1_EEE>
 *  mov    0xa8(%rsp),%rdi
 *  test   %rdi,%rdi
 *  je     0x40186b <_Z4testv+59>
 *  callq  0x4013d0 <_ZdlPv@plt>
 *  mov    0x90(%rsp),%rdi
 *  test   %rdi,%rdi
 *  je     0x40187d <_Z4testv+77>
 *  callq  0x4013d0 <_ZdlPv@plt>
 *  mov    0x48(%rsp),%rdi
 *  test   %rdi,%rdi
 *  je     0x40188c <_Z4testv+92>
 *  callq  0x4013d0 <_ZdlPv@plt>
 *  mov    0xc0(%rsp),%rbx
 *  lea    0x28(%rbx),%rdi
 *  mov    $0x40c360,%esi
 *  callq  0x40b990 <_ZNK5fruit4impl13SemistaticMapINS0_6TypeIdENS0_29SemistaticGraphInternalNodeIdEE2atES2_>
 *  mov    (%rax),%rsi
 *  test   $0xf,%sil
 *  jne    0x401934 <_Z4testv+260>
 *  mov    %rsi,%rax
 *  and    $0xfffffffffffffff0,%rax
 *  cmp    %rsi,%rax
 *  jne    0x40194d <_Z4testv+285>
 *  add    0x68(%rbx),%rsi
 *  mov    %rbx,%rdi
 *  callq  0x402b30
 * <_ZN5fruit4impl15InjectorStorage6getPtrI1IEEPT_NS0_15SemistaticGraphINS0_6TypeIdENS0_21NormalizedBindingDataEE13node_iteratorE>
 *  mov    %rax,(%r14)
 *  mov    %rbx,%rdi
 *  callq  0x401df0 <_ZN5fruit4impl15InjectorStorageD2Ev>
 *  mov    %rbx,%rdi
 *  callq  0x4013d0 <_ZdlPv@plt>
 *  mov    %r14,%rax
 *  add    $0xc8,%rsp
 *  pop    %rbx
 *  pop    %r14
 *  retq
 *  mov    %rax,%r14
 *  mov    0xa8(%rsp),%rdi
 *  test   %rdi,%rdi
 *  je     0x401901 <_Z4testv+209>
 *  callq  0x4013d0 <_ZdlPv@plt>
 *  mov    0x90(%rsp),%rdi
 *  test   %rdi,%rdi
 *  je     0x401913 <_Z4testv+227>
 *  callq  0x4013d0 <_ZdlPv@plt>
 *  mov    0x48(%rsp),%rdi
 *  test   %rdi,%rdi
 *  je     0x401985 <_Z4testv+341>
 *  callq  0x4013d0 <_ZdlPv@plt>
 *  mov    %r14,%rdi
 *  callq  0x4015a0 <_Unwind_Resume@plt>
 *  mov    %rax,%r14
 *  test   %rbx,%rbx
 *  je     0x401979 <_Z4testv+329>
 *  jmp    0x401969 <_Z4testv+313>
 *  mov    $0x40bc18,%edi
 *  mov    $0x40bc42,%esi
 *  mov    $0xb1,%edx
 *  mov    $0x40bca0,%ecx
 *  callq  0x4013f0 <__assert_fail@plt>
 *  mov    $0x40bdb3,%edi
 *  mov    $0x40bc42,%esi
 *  mov    $0xb4,%edx
 *  mov    $0x40bca0,%ecx
 *  callq  0x4013f0 <__assert_fail@plt>
 *  mov    %rax,%r14
 *  mov    %rbx,%rdi
 *  callq  0x401df0 <_ZN5fruit4impl15InjectorStorageD2Ev>
 *  mov    %rbx,%rdi
 *  callq  0x4013d0 <_ZdlPv@plt>
 *  movq   $0x0,0xc0(%rsp)
 *  mov    %r14,%rdi
 *  callq  0x4015a0 <_Unwind_Resume@plt>
 */
//->


================================================
FILE: benchmark/bind_interface/guice.java
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
import com.google.inject.*;

interface I {
  public void dummy();
};

class Impl implements I {
  @Inject Impl() { }
  @Override public void dummy() { }
}

class Module extends AbstractModule {
  @Override
  protected void configure() {
    bind(I.class).to(Impl.class);
  }
}

public class guice {
  public static void main(String[] args) {
    Injector injector = Guice.createInjector(new Module());
    I object = injector.getInstance(I.class);
  }
}


================================================
FILE: benchmark/bind_interface/ninject.cs
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
using Ninject;

interface I {
  void dummy();
};

class Impl : I {
  public Impl() { }
  void I.dummy() { }
}

class Module : Ninject.Modules.NinjectModule {
  public override void Load() {
    Bind<I>().To<Impl>();
  }
}

class ninject {
  static void Main(string[] args) {
    Ninject.IKernel kernel = new StandardKernel(new Module());
    I object = kernel.Get<I>();
  }
}


================================================
FILE: benchmark/bind_value/dagger2.java
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
import dagger.*;

@Module
class AppModule {
  @Provides int provideint() { return 42; }
}

@Component(modules = AppModule.class)
interface AppComponent {
  int build();
}

public class dagger2 {
  public static void main(String[] args) {
    Dagger_AppComponent.create().build();
  }
}


================================================
FILE: benchmark/bind_value/di.cpp
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#include <boost/di.hpp>

namespace di = boost::di;

auto module = [] {
  // clang-format off
  return di::make_injector(
    di::bind<>.to(42)
  );
  // clang-format on
};

auto test() {
  auto injector = di::make_injector(module());
  return injector.create<int>();
}

//<-
int main() {}
/**
 * ASM x86-64 (same as `return 42`)
 *
 * xor 0x2a,%eax
 * retq
 */
//->


================================================
FILE: benchmark/bind_value/dicpp.cpp
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#include <di/registry.hpp>
#include <di/injector.hpp>

void module(di::registry& r) {
  // clang-format off
  r.add(r.type<int>().instance(new int{42}));
  // clang-format on
}

auto test() {
  di::injector injector;
  injector.install(module);
  return injector.construct<int>();
}

//<-
int main() {}
/**
 * ASM x86-64
 *
 * push   %rbx
 * sub    $0xb0,%rsp
 * lea    0x20(%rsp),%rbx
 * xor    %esi,%esi
 * mov    %rbx,%rdi
 * callq  0x40af50 <_ZN2di8injectorC2ENS0_8localityE>
 * movq   $0x404b10,(%rsp)
 * movq   $0x40ab00,0x18(%rsp)
 * movq   $0x40ab10,0x10(%rsp)
 * mov    %rbx,%rdi
 * callq  0x404b10 <_Z6moduleRN2di8registryE>
 * mov    0x10(%rsp),%rax
 * test   %rax,%rax
 * je     0x404d61 <_Z4testv+81>
 * lea    (%rsp),%rdi
 * mov    $0x3,%edx
 * mov    %rdi,%rsi
 * callq  *%rax
 * lea    0x20(%rsp),%rdi
 * callq  0x40ab40 <_ZNK2di8registry9constructIiEENS_6traits13returned_typeIT_E4typeEv>
 * mov    %eax,%ebx
 * lea    0x20(%rsp),%rdi
 * callq  0x40b390 <_ZN2di8registryD2Ev>
 * mov    %ebx,%eax
 * add    $0xb0,%rsp
 * pop    %rbx
 * retq
 * mov    %rax,%rbx
 * mov    0x10(%rsp),%rcx
 * test   %rcx,%rcx
 * je     0x404daa <_Z4testv+154>
 * lea    (%rsp),%rdi
 * mov    $0x3,%edx
 * mov    %rdi,%rsi
 * callq  *%rcx
 * jmp    0x404daa <_Z4testv+154>
 * mov    %rax,%rdi
 * callq  0x405f60 <__clang_call_terminate>
 * mov    %rax,%rbx
 * lea    0x20(%rsp),%rdi
 * callq  0x40b390 <_ZN2di8registryD2Ev>
 * mov    %rbx,%rdi
 * callq  0x404840 <_Unwind_Resume@plt>
 * mov    %rax,%rdi
 * callq  0x405f60 <__clang_call_terminate>
 */
//->


================================================
FILE: benchmark/bind_value/fruit.cpp
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#include <fruit/fruit.h>

auto i = 42;  // bindInstance doesn't support l-value's

fruit::Component<int> module() {
  // clang-format off
  return fruit::createComponent().bindInstance(i);
  // clang-format on
}

auto test() {
  fruit::Injector<int> injector{module()};
  return injector.get<int>();
}

//<-
int main() {}
/**
 * ASM x86-64
 *
 * push   %rbp
 * push   %r14
 * push   %rbx
 * sub    $0xd0,%rsp
 * lea    0x8(%rsp),%rbx
 * mov    %rbx,%rdi
 * callq  0x400cd0 <_Z6modulev>
 * lea    0xc8(%rsp),%rdi
 * mov    %rbx,%rsi
 * callq  0x401170 <_ZN5fruit8InjectorIJiEEC2ENS_9ComponentIJiEEE>
 * mov    0xb0(%rsp),%rdi
 * test   %rdi,%rdi
 * je     0x400efa <_Z4testv+58>
 * callq  0x400b10 <_ZdlPv@plt>
 * mov    0x98(%rsp),%rdi
 * test   %rdi,%rdi
 * je     0x400f0c <_Z4testv+76>
 * callq  0x400b10 <_ZdlPv@plt>
 * mov    0x50(%rsp),%rdi
 * test   %rdi,%rdi
 * je     0x400f1b <_Z4testv+91>
 * callq  0x400b10 <_ZdlPv@plt>
 * mov    0xc8(%rsp),%rbx
 * mov    %rbx,%rdi
 * callq  0x4015e0
 * <_ZN5fruit4impl15InjectorStorage3getIiEENS0_4meta6DoEvalIFNS3_17RemoveAnnotationsENS3_4TypeIT_EEEE4type4typeEv>
 * mov    %eax,%ebp
 * test   %rbx,%rbx
 * je     0x400f42 <_Z4testv+130>
 * mov    %rbx,%rdi
 * callq  0x401230 <_ZN5fruit4impl15InjectorStorageD2Ev>
 * mov    %rbx,%rdi
 * callq  0x400b10 <_ZdlPv@plt>
 * mov    %ebp,%eax
 * add    $0xd0,%rsp
 * pop    %rbx
 * pop    %r14
 * pop    %rbp
 * retq
 * mov    %rax,%r14
 * mov    0xb0(%rsp),%rdi
 * test   %rdi,%rdi
 * je     0x400f65 <_Z4testv+165>
 * callq  0x400b10 <_ZdlPv@plt>
 * mov    0x98(%rsp),%rdi
 * test   %rdi,%rdi
 * je     0x400f77 <_Z4testv+183>
 * callq  0x400b10 <_ZdlPv@plt>
 * mov    0x50(%rsp),%rdi
 * test   %rdi,%rdi
 * je     0x400fb2 <_Z4testv+242>
 * callq  0x400b10 <_ZdlPv@plt>
 * mov    %r14,%rdi
 * callq  0x400bb0 <_Unwind_Resume@plt>
 * mov    %rax,%r14
 * test   %rbx,%rbx
 * je     0x400fa6 <_Z4testv+230>
 * mov    %rbx,%rdi
 * callq  0x401230 <_ZN5fruit4impl15InjectorStorageD2Ev>
 * mov    %rbx,%rdi
 * callq  0x400b10 <_ZdlPv@plt>
 * movq   $0x0,0xc8(%rsp)
 * mov    %r14,%rdi
 * callq  0x400bb0 <_Unwind_Resume@plt>
 */
//->


================================================
FILE: benchmark/bind_value/guice.java
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
import com.google.inject.*;

class Module extends AbstractModule {
  @Override
  protected void configure() {
    bind(int.class).toInstance(42);
  }
}

public class guice {
  public static void main(String[] args) {
    Injector injector = Guice.createInjector(new Module());
    injector.getInstance(int.class);
  }
}


================================================
FILE: benchmark/bind_value/ninject.cs
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
using Ninject;

class Module : Ninject.Modules.NinjectModule {
  public override void Load() {
    Bind<int>().To(42);
  }
}

class ninject {
  static void Main(string[] args) {
    Ninject.IKernel kernel = new StandardKernel(new Module());
    kernel.Get<int>();
  }
}


================================================
FILE: benchmark/create_complex/dagger2.java
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
import javax.inject.Inject;
import dagger.*;

class X00 { @Inject X00() { } }
class X01 { @Inject X01(X00 p1) { } }
class X02 { @Inject X02(X00 p1, X01 p2) { } }
class X03 { @Inject X03(X00 p1, X01 p2, X02 p3) { } }
class X04 { @Inject X04(X00 p1, X01 p2, X02 p3, X03 p4) { } }
class X05 { @Inject X05(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5) { } }
class X06 { @Inject X06(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6) { } }
class X07 { @Inject X07(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6, X06 p7) { } }
class X08 { @Inject X08(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6, X06 p7, X07 p8) { } }
class X09 { @Inject X09(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6, X06 p7, X07 p8, X08 p9) { } }
class X10 { @Inject X10(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6, X06 p7, X07 p8, X08 p9, X09 p10) { } }
class X11 { @Inject X11(X01 p1, X02 p2, X03 p3, X04 p4, X05 p5, X06 p6, X07 p7, X08 p8, X09 p9, X10 p10) { } }
class X12 { @Inject X12(X02 p1, X03 p2, X04 p3, X05 p4, X06 p5, X07 p6, X08 p7, X09 p8, X10 p9, X11 p10) { } }
class X13 { @Inject X13(X03 p1, X04 p2, X05 p3, X06 p4, X07 p5, X08 p6, X09 p7, X10 p8, X11 p9, X12 p10) { } }
class X14 { @Inject X14(X04 p1, X05 p2, X06 p3, X07 p4, X08 p5, X09 p6, X10 p7, X11 p8, X12 p9, X13 p10) { } }
class X15 { @Inject X15(X05 p1, X06 p2, X07 p3, X08 p4, X09 p5, X10 p6, X11 p7, X12 p8, X13 p9, X14 p10) { } }
class X16 { @Inject X16(X06 p1, X07 p2, X08 p3, X09 p4, X10 p5, X11 p6, X12 p7, X13 p8, X14 p9, X15 p10) { } }
class X17 { @Inject X17(X07 p1, X08 p2, X09 p3, X10 p4, X11 p5, X12 p6, X13 p7, X14 p8, X15 p9, X16 p10) { } }
class X18 { @Inject X18(X08 p1, X09 p2, X10 p3, X11 p4, X12 p5, X13 p6, X14 p7, X15 p8, X16 p9, X17 p10) { } }
class X19 { @Inject X19(X09 p1, X10 p2, X11 p3, X12 p4, X13 p5, X14 p6, X15 p7, X16 p8, X17 p9, X18 p10) { } }
class X20 { @Inject X20(X10 p1, X11 p2, X12 p3, X13 p4, X14 p5, X15 p6, X16 p7, X17 p8, X18 p9, X19 p10) { } }
class X21 { @Inject X21(X11 p1, X12 p2, X13 p3, X14 p4, X15 p5, X16 p6, X17 p7, X18 p8, X19 p9, X20 p10) { } }
class X22 { @Inject X22(X12 p1, X13 p2, X14 p3, X15 p4, X16 p5, X17 p6, X18 p7, X19 p8, X20 p9, X21 p10) { } }
class X23 { @Inject X23(X13 p1, X14 p2, X15 p3, X16 p4, X17 p5, X18 p6, X19 p7, X20 p8, X21 p9, X22 p10) { } }
class X24 { @Inject X24(X14 p1, X15 p2, X16 p3, X17 p4, X18 p5, X19 p6, X20 p7, X21 p8, X22 p9, X23 p10) { } }
class X25 { @Inject X25(X15 p1, X16 p2, X17 p3, X18 p4, X19 p5, X20 p6, X21 p7, X22 p8, X23 p9, X24 p10) { } }
class X26 { @Inject X26(X16 p1, X17 p2, X18 p3, X19 p4, X20 p5, X21 p6, X22 p7, X23 p8, X24 p9, X25 p10) { } }
class X27 { @Inject X27(X17 p1, X18 p2, X19 p3, X20 p4, X21 p5, X22 p6, X23 p7, X24 p8, X25 p9, X26 p10) { } }
class X28 { @Inject X28(X18 p1, X19 p2, X20 p3, X21 p4, X22 p5, X23 p6, X24 p7, X25 p8, X26 p9, X27 p10) { } }
class X29 { @Inject X29(X19 p1, X20 p2, X21 p3, X22 p4, X23 p5, X24 p6, X25 p7, X26 p8, X27 p9, X28 p10) { } }
class X30 { @Inject X30(X20 p1, X21 p2, X22 p3, X23 p4, X24 p5, X25 p6, X26 p7, X27 p8, X28 p9, X29 p10) { } }
class X31 { @Inject X31(X21 p1, X22 p2, X23 p3, X24 p4, X25 p5, X26 p6, X27 p7, X28 p8, X29 p9, X30 p10) { } }
class X32 { @Inject X32(X22 p1, X23 p2, X24 p3, X25 p4, X26 p5, X27 p6, X28 p7, X29 p8, X30 p9, X31 p10) { } }
class X33 { @Inject X33(X23 p1, X24 p2, X25 p3, X26 p4, X27 p5, X28 p6, X29 p7, X30 p8, X31 p9, X32 p10) { } }
class X34 { @Inject X34(X24 p1, X25 p2, X26 p3, X27 p4, X28 p5, X29 p6, X30 p7, X31 p8, X32 p9, X33 p10) { } }
class X35 { @Inject X35(X25 p1, X26 p2, X27 p3, X28 p4, X29 p5, X30 p6, X31 p7, X32 p8, X33 p9, X34 p10) { } }
class X36 { @Inject X36(X26 p1, X27 p2, X28 p3, X29 p4, X30 p5, X31 p6, X32 p7, X33 p8, X34 p9, X35 p10) { } }
class X37 { @Inject X37(X27 p1, X28 p2, X29 p3, X30 p4, X31 p5, X32 p6, X33 p7, X34 p8, X35 p9, X36 p10) { } }
class X38 { @Inject X38(X28 p1, X29 p2, X30 p3, X31 p4, X32 p5, X33 p6, X34 p7, X35 p8, X36 p9, X37 p10) { } }
class X39 { @Inject X39(X29 p1, X30 p2, X31 p3, X32 p4, X33 p5, X34 p6, X35 p7, X36 p8, X37 p9, X38 p10) { } }
class X40 { @Inject X40(X30 p1, X31 p2, X32 p3, X33 p4, X34 p5, X35 p6, X36 p7, X37 p8, X38 p9, X39 p10) { } }
class X41 { @Inject X41(X31 p1, X32 p2, X33 p3, X34 p4, X35 p5, X36 p6, X37 p7, X38 p8, X39 p9, X40 p10) { } }
class X42 { @Inject X42(X32 p1, X33 p2, X34 p3, X35 p4, X36 p5, X37 p6, X38 p7, X39 p8, X40 p9, X41 p10) { } }
class X43 { @Inject X43(X33 p1, X34 p2, X35 p3, X36 p4, X37 p5, X38 p6, X39 p7, X40 p8, X41 p9, X42 p10) { } }
class X44 { @Inject X44(X34 p1, X35 p2, X36 p3, X37 p4, X38 p5, X39 p6, X40 p7, X41 p8, X42 p9, X43 p10) { } }
class X45 { @Inject X45(X35 p1, X36 p2, X37 p3, X38 p4, X39 p5, X40 p6, X41 p7, X42 p8, X43 p9, X44 p10) { } }
class X46 { @Inject X46(X36 p1, X37 p2, X38 p3, X39 p4, X40 p5, X41 p6, X42 p7, X43 p8, X44 p9, X45 p10) { } }
class X47 { @Inject X47(X37 p1, X38 p2, X39 p3, X40 p4, X41 p5, X42 p6, X43 p7, X44 p8, X45 p9, X46 p10) { } }
class X48 { @Inject X48(X38 p1, X39 p2, X40 p3, X41 p4, X42 p5, X43 p6, X44 p7, X45 p8, X46 p9, X47 p10) { } }
class X49 { @Inject X49(X39 p1, X40 p2, X41 p3, X42 p4, X43 p5, X44 p6, X45 p7, X46 p8, X47 p9, X48 p10) { } }
class X50 { @Inject X50(X40 p1, X41 p2, X42 p3, X43 p4, X44 p5, X45 p6, X46 p7, X47 p8, X48 p9, X49 p10) { } }
class X51 { @Inject X51(X41 p1, X42 p2, X43 p3, X44 p4, X45 p5, X46 p6, X47 p7, X48 p8, X49 p9, X50 p10) { } }
class X52 { @Inject X52(X42 p1, X43 p2, X44 p3, X45 p4, X46 p5, X47 p6, X48 p7, X49 p8, X50 p9, X51 p10) { } }
class X53 { @Inject X53(X43 p1, X44 p2, X45 p3, X46 p4, X47 p5, X48 p6, X49 p7, X50 p8, X51 p9, X52 p10) { } }
class X54 { @Inject X54(X44 p1, X45 p2, X46 p3, X47 p4, X48 p5, X49 p6, X50 p7, X51 p8, X52 p9, X53 p10) { } }
class X55 { @Inject X55(X45 p1, X46 p2, X47 p3, X48 p4, X49 p5, X50 p6, X51 p7, X52 p8, X53 p9, X54 p10) { } }
class X56 { @Inject X56(X46 p1, X47 p2, X48 p3, X49 p4, X50 p5, X51 p6, X52 p7, X53 p8, X54 p9, X55 p10) { } }
class X57 { @Inject X57(X47 p1, X48 p2, X49 p3, X50 p4, X51 p5, X52 p6, X53 p7, X54 p8, X55 p9, X56 p10) { } }
class X58 { @Inject X58(X48 p1, X49 p2, X50 p3, X51 p4, X52 p5, X53 p6, X54 p7, X55 p8, X56 p9, X57 p10) { } }
class X59 { @Inject X59(X49 p1, X50 p2, X51 p3, X52 p4, X53 p5, X54 p6, X55 p7, X56 p8, X57 p9, X58 p10) { } }
class X60 { @Inject X60(X50 p1, X51 p2, X52 p3, X53 p4, X54 p5, X55 p6, X56 p7, X57 p8, X58 p9, X59 p10) { } }
class X61 { @Inject X61(X51 p1, X52 p2, X53 p3, X54 p4, X55 p5, X56 p6, X57 p7, X58 p8, X59 p9, X60 p10) { } }
class X62 { @Inject X62(X52 p1, X53 p2, X54 p3, X55 p4, X56 p5, X57 p6, X58 p7, X59 p8, X60 p9, X61 p10) { } }
class X63 { @Inject X63(X53 p1, X54 p2, X55 p3, X56 p4, X57 p5, X58 p6, X59 p7, X60 p8, X61 p9, X62 p10) { } }
class X64 { @Inject X64(X54 p1, X55 p2, X56 p3, X57 p4, X58 p5, X59 p6, X60 p7, X61 p8, X62 p9, X63 p10) { } }
class X65 { @Inject X65(X55 p1, X56 p2, X57 p3, X58 p4, X59 p5, X60 p6, X61 p7, X62 p8, X63 p9, X64 p10) { } }
class X66 { @Inject X66(X56 p1, X57 p2, X58 p3, X59 p4, X60 p5, X61 p6, X62 p7, X63 p8, X64 p9, X65 p10) { } }
class X67 { @Inject X67(X57 p1, X58 p2, X59 p3, X60 p4, X61 p5, X62 p6, X63 p7, X64 p8, X65 p9, X66 p10) { } }
class X68 { @Inject X68(X58 p1, X59 p2, X60 p3, X61 p4, X62 p5, X63 p6, X64 p7, X65 p8, X66 p9, X67 p10) { } }
class X69 { @Inject X69(X59 p1, X60 p2, X61 p3, X62 p4, X63 p5, X64 p6, X65 p7, X66 p8, X67 p9, X68 p10) { } }
class X70 { @Inject X70(X60 p1, X61 p2, X62 p3, X63 p4, X64 p5, X65 p6, X66 p7, X67 p8, X68 p9, X69 p10) { } }
class X71 { @Inject X71(X61 p1, X62 p2, X63 p3, X64 p4, X65 p5, X66 p6, X67 p7, X68 p8, X69 p9, X70 p10) { } }
class X72 { @Inject X72(X62 p1, X63 p2, X64 p3, X65 p4, X66 p5, X67 p6, X68 p7, X69 p8, X70 p9, X71 p10) { } }
class X73 { @Inject X73(X63 p1, X64 p2, X65 p3, X66 p4, X67 p5, X68 p6, X69 p7, X70 p8, X71 p9, X72 p10) { } }
class X74 { @Inject X74(X64 p1, X65 p2, X66 p3, X67 p4, X68 p5, X69 p6, X70 p7, X71 p8, X72 p9, X73 p10) { } }
class X75 { @Inject X75(X65 p1, X66 p2, X67 p3, X68 p4, X69 p5, X70 p6, X71 p7, X72 p8, X73 p9, X74 p10) { } }
class X76 { @Inject X76(X66 p1, X67 p2, X68 p3, X69 p4, X70 p5, X71 p6, X72 p7, X73 p8, X74 p9, X75 p10) { } }
class X77 { @Inject X77(X67 p1, X68 p2, X69 p3, X70 p4, X71 p5, X72 p6, X73 p7, X74 p8, X75 p9, X76 p10) { } }
class X78 { @Inject X78(X68 p1, X69 p2, X70 p3, X71 p4, X72 p5, X73 p6, X74 p7, X75 p8, X76 p9, X77 p10) { } }
class X79 { @Inject X79(X69 p1, X70 p2, X71 p3, X72 p4, X73 p5, X74 p6, X75 p7, X76 p8, X77 p9, X78 p10) { } }
class X80 { @Inject X80(X70 p1, X71 p2, X72 p3, X73 p4, X74 p5, X75 p6, X76 p7, X77 p8, X78 p9, X79 p10) { } }
class X81 { @Inject X81(X71 p1, X72 p2, X73 p3, X74 p4, X75 p5, X76 p6, X77 p7, X78 p8, X79 p9, X80 p10) { } }
class X82 { @Inject X82(X72 p1, X73 p2, X74 p3, X75 p4, X76 p5, X77 p6, X78 p7, X79 p8, X80 p9, X81 p10) { } }
class X83 { @Inject X83(X73 p1, X74 p2, X75 p3, X76 p4, X77 p5, X78 p6, X79 p7, X80 p8, X81 p9, X82 p10) { } }
class X84 { @Inject X84(X74 p1, X75 p2, X76 p3, X77 p4, X78 p5, X79 p6, X80 p7, X81 p8, X82 p9, X83 p10) { } }
class X85 { @Inject X85(X75 p1, X76 p2, X77 p3, X78 p4, X79 p5, X80 p6, X81 p7, X82 p8, X83 p9, X84 p10) { } }
class X86 { @Inject X86(X76 p1, X77 p2, X78 p3, X79 p4, X80 p5, X81 p6, X82 p7, X83 p8, X84 p9, X85 p10) { } }
class X87 { @Inject X87(X77 p1, X78 p2, X79 p3, X80 p4, X81 p5, X82 p6, X83 p7, X84 p8, X85 p9, X86 p10) { } }
class X88 { @Inject X88(X78 p1, X79 p2, X80 p3, X81 p4, X82 p5, X83 p6, X84 p7, X85 p8, X86 p9, X87 p10) { } }
class X89 { @Inject X89(X79 p1, X80 p2, X81 p3, X82 p4, X83 p5, X84 p6, X85 p7, X86 p8, X87 p9, X88 p10) { } }
class X90 { @Inject X90(X80 p1, X81 p2, X82 p3, X83 p4, X84 p5, X85 p6, X86 p7, X87 p8, X88 p9, X89 p10) { } }
class X91 { @Inject X91(X81 p1, X82 p2, X83 p3, X84 p4, X85 p5, X86 p6, X87 p7, X88 p8, X89 p9, X90 p10) { } }
class X92 { @Inject X92(X82 p1, X83 p2, X84 p3, X85 p4, X86 p5, X87 p6, X88 p7, X89 p8, X90 p9, X91 p10) { } }
class X93 { @Inject X93(X83 p1, X84 p2, X85 p3, X86 p4, X87 p5, X88 p6, X89 p7, X90 p8, X91 p9, X92 p10) { } }
class X94 { @Inject X94(X84 p1, X85 p2, X86 p3, X87 p4, X88 p5, X89 p6, X90 p7, X91 p8, X92 p9, X93 p10) { } }
class X95 { @Inject X95(X85 p1, X86 p2, X87 p3, X88 p4, X89 p5, X90 p6, X91 p7, X92 p8, X93 p9, X94 p10) { } }
class X96 { @Inject X96(X86 p1, X87 p2, X88 p3, X89 p4, X90 p5, X91 p6, X92 p7, X93 p8, X94 p9, X95 p10) { } }
class X97 { @Inject X97(X87 p1, X88 p2, X89 p3, X90 p4, X91 p5, X92 p6, X93 p7, X94 p8, X95 p9, X96 p10) { } }
class X98 { @Inject X98(X88 p1, X89 p2, X90 p3, X91 p4, X92 p5, X93 p6, X94 p7, X95 p8, X96 p9, X97 p10) { } }
class X99 { @Inject X99(X89 p1, X90 p2, X91 p3, X92 p4, X93 p5, X94 p6, X95 p7, X96 p8, X97 p9, X98 p10) { } }
interface I00 { public void dummy(); }; class Impl00 implements I00 { @Inject Impl00(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6, X06 p7, X07 p8, X08 p9, X09 p10) { } @Override public void dummy() { } }
interface I01 { public void dummy(); }; class Impl01 implements I01 { @Inject Impl01(X01 p1, X02 p2, X03 p3, X04 p4, X05 p5, X06 p6, X07 p7, X08 p8, X09 p9, X10 p10) { } @Override public void dummy() { } }
interface I02 { public void dummy(); }; class Impl02 implements I02 { @Inject Impl02(X02 p1, X03 p2, X04 p3, X05 p4, X06 p5, X07 p6, X08 p7, X09 p8, X10 p9, X11 p10) { } @Override public void dummy() { } }
interface I03 { public void dummy(); }; class Impl03 implements I03 { @Inject Impl03(X03 p1, X04 p2, X05 p3, X06 p4, X07 p5, X08 p6, X09 p7, X10 p8, X11 p9, X12 p10) { } @Override public void dummy() { } }
interface I04 { public void dummy(); }; class Impl04 implements I04 { @Inject Impl04(X04 p1, X05 p2, X06 p3, X07 p4, X08 p5, X09 p6, X10 p7, X11 p8, X12 p9, X13 p10) { } @Override public void dummy() { } }
interface I05 { public void dummy(); }; class Impl05 implements I05 { @Inject Impl05(X05 p1, X06 p2, X07 p3, X08 p4, X09 p5, X10 p6, X11 p7, X12 p8, X13 p9, X14 p10) { } @Override public void dummy() { } }
interface I06 { public void dummy(); }; class Impl06 implements I06 { @Inject Impl06(X06 p1, X07 p2, X08 p3, X09 p4, X10 p5, X11 p6, X12 p7, X13 p8, X14 p9, X15 p10) { } @Override public void dummy() { } }
interface I07 { public void dummy(); }; class Impl07 implements I07 { @Inject Impl07(X07 p1, X08 p2, X09 p3, X10 p4, X11 p5, X12 p6, X13 p7, X14 p8, X15 p9, X16 p10) { } @Override public void dummy() { } }
interface I08 { public void dummy(); }; class Impl08 implements I08 { @Inject Impl08(X08 p1, X09 p2, X10 p3, X11 p4, X12 p5, X13 p6, X14 p7, X15 p8, X16 p9, X17 p10) { } @Override public void dummy() { } }
interface I09 { public void dummy(); }; class Impl09 implements I09 { @Inject Impl09(X09 p1, X10 p2, X11 p3, X12 p4, X13 p5, X14 p6, X15 p7, X16 p8, X17 p9, X18 p10) { } @Override public void dummy() { } }
interface I10 { public void dummy(); }; class Impl10 implements I10 { @Inject Impl10(X10 p1, X11 p2, X12 p3, X13 p4, X14 p5, X15 p6, X16 p7, X17 p8, X18 p9, X19 p10) { } @Override public void dummy() { } }
interface I11 { public void dummy(); }; class Impl11 implements I11 { @Inject Impl11(X11 p1, X12 p2, X13 p3, X14 p4, X15 p5, X16 p6, X17 p7, X18 p8, X19 p9, X20 p10) { } @Override public void dummy() { } }
interface I12 { public void dummy(); }; class Impl12 implements I12 { @Inject Impl12(X12 p1, X13 p2, X14 p3, X15 p4, X16 p5, X17 p6, X18 p7, X19 p8, X20 p9, X21 p10) { } @Override public void dummy() { } }
interface I13 { public void dummy(); }; class Impl13 implements I13 { @Inject Impl13(X13 p1, X14 p2, X15 p3, X16 p4, X17 p5, X18 p6, X19 p7, X20 p8, X21 p9, X22 p10) { } @Override public void dummy() { } }
interface I14 { public void dummy(); }; class Impl14 implements I14 { @Inject Impl14(X14 p1, X15 p2, X16 p3, X17 p4, X18 p5, X19 p6, X20 p7, X21 p8, X22 p9, X23 p10) { } @Override public void dummy() { } }
interface I15 { public void dummy(); }; class Impl15 implements I15 { @Inject Impl15(X15 p1, X16 p2, X17 p3, X18 p4, X19 p5, X20 p6, X21 p7, X22 p8, X23 p9, X24 p10) { } @Override public void dummy() { } }
interface I16 { public void dummy(); }; class Impl16 implements I16 { @Inject Impl16(X16 p1, X17 p2, X18 p3, X19 p4, X20 p5, X21 p6, X22 p7, X23 p8, X24 p9, X25 p10) { } @Override public void dummy() { } }
interface I17 { public void dummy(); }; class Impl17 implements I17 { @Inject Impl17(X17 p1, X18 p2, X19 p3, X20 p4, X21 p5, X22 p6, X23 p7, X24 p8, X25 p9, X26 p10) { } @Override public void dummy() { } }
interface I18 { public void dummy(); }; class Impl18 implements I18 { @Inject Impl18(X18 p1, X19 p2, X20 p3, X21 p4, X22 p5, X23 p6, X24 p7, X25 p8, X26 p9, X27 p10) { } @Override public void dummy() { } }
interface I19 { public void dummy(); }; class Impl19 implements I19 { @Inject Impl19(X19 p1, X20 p2, X21 p3, X22 p4, X23 p5, X24 p6, X25 p7, X26 p8, X27 p9, X28 p10) { } @Override public void dummy() { } }
interface I20 { public void dummy(); }; class Impl20 implements I20 { @Inject Impl20(X20 p1, X21 p2, X22 p3, X23 p4, X24 p5, X25 p6, X26 p7, X27 p8, X28 p9, X29 p10) { } @Override public void dummy() { } }
interface I21 { public void dummy(); }; class Impl21 implements I21 { @Inject Impl21(X21 p1, X22 p2, X23 p3, X24 p4, X25 p5, X26 p6, X27 p7, X28 p8, X29 p9, X30 p10) { } @Override public void dummy() { } }
interface I22 { public void dummy(); }; class Impl22 implements I22 { @Inject Impl22(X22 p1, X23 p2, X24 p3, X25 p4, X26 p5, X27 p6, X28 p7, X29 p8, X30 p9, X31 p10) { } @Override public void dummy() { } }
interface I23 { public void dummy(); }; class Impl23 implements I23 { @Inject Impl23(X23 p1, X24 p2, X25 p3, X26 p4, X27 p5, X28 p6, X29 p7, X30 p8, X31 p9, X32 p10) { } @Override public void dummy() { } }
interface I24 { public void dummy(); }; class Impl24 implements I24 { @Inject Impl24(X24 p1, X25 p2, X26 p3, X27 p4, X28 p5, X29 p6, X30 p7, X31 p8, X32 p9, X33 p10) { } @Override public void dummy() { } }
interface I25 { public void dummy(); }; class Impl25 implements I25 { @Inject Impl25(X25 p1, X26 p2, X27 p3, X28 p4, X29 p5, X30 p6, X31 p7, X32 p8, X33 p9, X34 p10) { } @Override public void dummy() { } }
interface I26 { public void dummy(); }; class Impl26 implements I26 { @Inject Impl26(X26 p1, X27 p2, X28 p3, X29 p4, X30 p5, X31 p6, X32 p7, X33 p8, X34 p9, X35 p10) { } @Override public void dummy() { } }
interface I27 { public void dummy(); }; class Impl27 implements I27 { @Inject Impl27(X27 p1, X28 p2, X29 p3, X30 p4, X31 p5, X32 p6, X33 p7, X34 p8, X35 p9, X36 p10) { } @Override public void dummy() { } }
interface I28 { public void dummy(); }; class Impl28 implements I28 { @Inject Impl28(X28 p1, X29 p2, X30 p3, X31 p4, X32 p5, X33 p6, X34 p7, X35 p8, X36 p9, X37 p10) { } @Override public void dummy() { } }
interface I29 { public void dummy(); }; class Impl29 implements I29 { @Inject Impl29(X29 p1, X30 p2, X31 p3, X32 p4, X33 p5, X34 p6, X35 p7, X36 p8, X37 p9, X38 p10) { } @Override public void dummy() { } }
interface I30 { public void dummy(); }; class Impl30 implements I30 { @Inject Impl30(X30 p1, X31 p2, X32 p3, X33 p4, X34 p5, X35 p6, X36 p7, X37 p8, X38 p9, X39 p10) { } @Override public void dummy() { } }
interface I31 { public void dummy(); }; class Impl31 implements I31 { @Inject Impl31(X31 p1, X32 p2, X33 p3, X34 p4, X35 p5, X36 p6, X37 p7, X38 p8, X39 p9, X40 p10) { } @Override public void dummy() { } }
interface I32 { public void dummy(); }; class Impl32 implements I32 { @Inject Impl32(X32 p1, X33 p2, X34 p3, X35 p4, X36 p5, X37 p6, X38 p7, X39 p8, X40 p9, X41 p10) { } @Override public void dummy() { } }
interface I33 { public void dummy(); }; class Impl33 implements I33 { @Inject Impl33(X33 p1, X34 p2, X35 p3, X36 p4, X37 p5, X38 p6, X39 p7, X40 p8, X41 p9, X42 p10) { } @Override public void dummy() { } }
interface I34 { public void dummy(); }; class Impl34 implements I34 { @Inject Impl34(X34 p1, X35 p2, X36 p3, X37 p4, X38 p5, X39 p6, X40 p7, X41 p8, X42 p9, X43 p10) { } @Override public void dummy() { } }
interface I35 { public void dummy(); }; class Impl35 implements I35 { @Inject Impl35(X35 p1, X36 p2, X37 p3, X38 p4, X39 p5, X40 p6, X41 p7, X42 p8, X43 p9, X44 p10) { } @Override public void dummy() { } }
interface I36 { public void dummy(); }; class Impl36 implements I36 { @Inject Impl36(X36 p1, X37 p2, X38 p3, X39 p4, X40 p5, X41 p6, X42 p7, X43 p8, X44 p9, X45 p10) { } @Override public void dummy() { } }
interface I37 { public void dummy(); }; class Impl37 implements I37 { @Inject Impl37(X37 p1, X38 p2, X39 p3, X40 p4, X41 p5, X42 p6, X43 p7, X44 p8, X45 p9, X46 p10) { } @Override public void dummy() { } }
interface I38 { public void dummy(); }; class Impl38 implements I38 { @Inject Impl38(X38 p1, X39 p2, X40 p3, X41 p4, X42 p5, X43 p6, X44 p7, X45 p8, X46 p9, X47 p10) { } @Override public void dummy() { } }
interface I39 { public void dummy(); }; class Impl39 implements I39 { @Inject Impl39(X39 p1, X40 p2, X41 p3, X42 p4, X43 p5, X44 p6, X45 p7, X46 p8, X47 p9, X48 p10) { } @Override public void dummy() { } }
interface I40 { public void dummy(); }; class Impl40 implements I40 { @Inject Impl40(X40 p1, X41 p2, X42 p3, X43 p4, X44 p5, X45 p6, X46 p7, X47 p8, X48 p9, X49 p10) { } @Override public void dummy() { } }
interface I41 { public void dummy(); }; class Impl41 implements I41 { @Inject Impl41(X41 p1, X42 p2, X43 p3, X44 p4, X45 p5, X46 p6, X47 p7, X48 p8, X49 p9, X50 p10) { } @Override public void dummy() { } }
interface I42 { public void dummy(); }; class Impl42 implements I42 { @Inject Impl42(X42 p1, X43 p2, X44 p3, X45 p4, X46 p5, X47 p6, X48 p7, X49 p8, X50 p9, X51 p10) { } @Override public void dummy() { } }
interface I43 { public void dummy(); }; class Impl43 implements I43 { @Inject Impl43(X43 p1, X44 p2, X45 p3, X46 p4, X47 p5, X48 p6, X49 p7, X50 p8, X51 p9, X52 p10) { } @Override public void dummy() { } }
interface I44 { public void dummy(); }; class Impl44 implements I44 { @Inject Impl44(X44 p1, X45 p2, X46 p3, X47 p4, X48 p5, X49 p6, X50 p7, X51 p8, X52 p9, X53 p10) { } @Override public void dummy() { } }
interface I45 { public void dummy(); }; class Impl45 implements I45 { @Inject Impl45(X45 p1, X46 p2, X47 p3, X48 p4, X49 p5, X50 p6, X51 p7, X52 p8, X53 p9, X54 p10) { } @Override public void dummy() { } }
interface I46 { public void dummy(); }; class Impl46 implements I46 { @Inject Impl46(X46 p1, X47 p2, X48 p3, X49 p4, X50 p5, X51 p6, X52 p7, X53 p8, X54 p9, X55 p10) { } @Override public void dummy() { } }
interface I47 { public void dummy(); }; class Impl47 implements I47 { @Inject Impl47(X47 p1, X48 p2, X49 p3, X50 p4, X51 p5, X52 p6, X53 p7, X54 p8, X55 p9, X56 p10) { } @Override public void dummy() { } }
interface I48 { public void dummy(); }; class Impl48 implements I48 { @Inject Impl48(X48 p1, X49 p2, X50 p3, X51 p4, X52 p5, X53 p6, X54 p7, X55 p8, X56 p9, X57 p10) { } @Override public void dummy() { } }
interface I49 { public void dummy(); }; class Impl49 implements I49 { @Inject Impl49(X49 p1, X50 p2, X51 p3, X52 p4, X53 p5, X54 p6, X55 p7, X56 p8, X57 p9, X58 p10) { } @Override public void dummy() { } }
interface I50 { public void dummy(); }; class Impl50 implements I50 { @Inject Impl50(X50 p1, X51 p2, X52 p3, X53 p4, X54 p5, X55 p6, X56 p7, X57 p8, X58 p9, X59 p10) { } @Override public void dummy() { } }
interface I51 { public void dummy(); }; class Impl51 implements I51 { @Inject Impl51(X51 p1, X52 p2, X53 p3, X54 p4, X55 p5, X56 p6, X57 p7, X58 p8, X59 p9, X60 p10) { } @Override public void dummy() { } }
interface I52 { public void dummy(); }; class Impl52 implements I52 { @Inject Impl52(X52 p1, X53 p2, X54 p3, X55 p4, X56 p5, X57 p6, X58 p7, X59 p8, X60 p9, X61 p10) { } @Override public void dummy() { } }
interface I53 { public void dummy(); }; class Impl53 implements I53 { @Inject Impl53(X53 p1, X54 p2, X55 p3, X56 p4, X57 p5, X58 p6, X59 p7, X60 p8, X61 p9, X62 p10) { } @Override public void dummy() { } }
interface I54 { public void dummy(); }; class Impl54 implements I54 { @Inject Impl54(X54 p1, X55 p2, X56 p3, X57 p4, X58 p5, X59 p6, X60 p7, X61 p8, X62 p9, X63 p10) { } @Override public void dummy() { } }
interface I55 { public void dummy(); }; class Impl55 implements I55 { @Inject Impl55(X55 p1, X56 p2, X57 p3, X58 p4, X59 p5, X60 p6, X61 p7, X62 p8, X63 p9, X64 p10) { } @Override public void dummy() { } }
interface I56 { public void dummy(); }; class Impl56 implements I56 { @Inject Impl56(X56 p1, X57 p2, X58 p3, X59 p4, X60 p5, X61 p6, X62 p7, X63 p8, X64 p9, X65 p10) { } @Override public void dummy() { } }
interface I57 { public void dummy(); }; class Impl57 implements I57 { @Inject Impl57(X57 p1, X58 p2, X59 p3, X60 p4, X61 p5, X62 p6, X63 p7, X64 p8, X65 p9, X66 p10) { } @Override public void dummy() { } }
interface I58 { public void dummy(); }; class Impl58 implements I58 { @Inject Impl58(X58 p1, X59 p2, X60 p3, X61 p4, X62 p5, X63 p6, X64 p7, X65 p8, X66 p9, X67 p10) { } @Override public void dummy() { } }
interface I59 { public void dummy(); }; class Impl59 implements I59 { @Inject Impl59(X59 p1, X60 p2, X61 p3, X62 p4, X63 p5, X64 p6, X65 p7, X66 p8, X67 p9, X68 p10) { } @Override public void dummy() { } }
interface I60 { public void dummy(); }; class Impl60 implements I60 { @Inject Impl60(X60 p1, X61 p2, X62 p3, X63 p4, X64 p5, X65 p6, X66 p7, X67 p8, X68 p9, X69 p10) { } @Override public void dummy() { } }
interface I61 { public void dummy(); }; class Impl61 implements I61 { @Inject Impl61(X61 p1, X62 p2, X63 p3, X64 p4, X65 p5, X66 p6, X67 p7, X68 p8, X69 p9, X70 p10) { } @Override public void dummy() { } }
interface I62 { public void dummy(); }; class Impl62 implements I62 { @Inject Impl62(X62 p1, X63 p2, X64 p3, X65 p4, X66 p5, X67 p6, X68 p7, X69 p8, X70 p9, X71 p10) { } @Override public void dummy() { } }
interface I63 { public void dummy(); }; class Impl63 implements I63 { @Inject Impl63(X63 p1, X64 p2, X65 p3, X66 p4, X67 p5, X68 p6, X69 p7, X70 p8, X71 p9, X72 p10) { } @Override public void dummy() { } }
interface I64 { public void dummy(); }; class Impl64 implements I64 { @Inject Impl64(X64 p1, X65 p2, X66 p3, X67 p4, X68 p5, X69 p6, X70 p7, X71 p8, X72 p9, X73 p10) { } @Override public void dummy() { } }
interface I65 { public void dummy(); }; class Impl65 implements I65 { @Inject Impl65(X65 p1, X66 p2, X67 p3, X68 p4, X69 p5, X70 p6, X71 p7, X72 p8, X73 p9, X74 p10) { } @Override public void dummy() { } }
interface I66 { public void dummy(); }; class Impl66 implements I66 { @Inject Impl66(X66 p1, X67 p2, X68 p3, X69 p4, X70 p5, X71 p6, X72 p7, X73 p8, X74 p9, X75 p10) { } @Override public void dummy() { } }
interface I67 { public void dummy(); }; class Impl67 implements I67 { @Inject Impl67(X67 p1, X68 p2, X69 p3, X70 p4, X71 p5, X72 p6, X73 p7, X74 p8, X75 p9, X76 p10) { } @Override public void dummy() { } }
interface I68 { public void dummy(); }; class Impl68 implements I68 { @Inject Impl68(X68 p1, X69 p2, X70 p3, X71 p4, X72 p5, X73 p6, X74 p7, X75 p8, X76 p9, X77 p10) { } @Override public void dummy() { } }
interface I69 { public void dummy(); }; class Impl69 implements I69 { @Inject Impl69(X69 p1, X70 p2, X71 p3, X72 p4, X73 p5, X74 p6, X75 p7, X76 p8, X77 p9, X78 p10) { } @Override public void dummy() { } }
interface I70 { public void dummy(); }; class Impl70 implements I70 { @Inject Impl70(X70 p1, X71 p2, X72 p3, X73 p4, X74 p5, X75 p6, X76 p7, X77 p8, X78 p9, X79 p10) { } @Override public void dummy() { } }
interface I71 { public void dummy(); }; class Impl71 implements I71 { @Inject Impl71(X71 p1, X72 p2, X73 p3, X74 p4, X75 p5, X76 p6, X77 p7, X78 p8, X79 p9, X80 p10) { } @Override public void dummy() { } }
interface I72 { public void dummy(); }; class Impl72 implements I72 { @Inject Impl72(X72 p1, X73 p2, X74 p3, X75 p4, X76 p5, X77 p6, X78 p7, X79 p8, X80 p9, X81 p10) { } @Override public void dummy() { } }
interface I73 { public void dummy(); }; class Impl73 implements I73 { @Inject Impl73(X73 p1, X74 p2, X75 p3, X76 p4, X77 p5, X78 p6, X79 p7, X80 p8, X81 p9, X82 p10) { } @Override public void dummy() { } }
interface I74 { public void dummy(); }; class Impl74 implements I74 { @Inject Impl74(X74 p1, X75 p2, X76 p3, X77 p4, X78 p5, X79 p6, X80 p7, X81 p8, X82 p9, X83 p10) { } @Override public void dummy() { } }
interface I75 { public void dummy(); }; class Impl75 implements I75 { @Inject Impl75(X75 p1, X76 p2, X77 p3, X78 p4, X79 p5, X80 p6, X81 p7, X82 p8, X83 p9, X84 p10) { } @Override public void dummy() { } }
interface I76 { public void dummy(); }; class Impl76 implements I76 { @Inject Impl76(X76 p1, X77 p2, X78 p3, X79 p4, X80 p5, X81 p6, X82 p7, X83 p8, X84 p9, X85 p10) { } @Override public void dummy() { } }
interface I77 { public void dummy(); }; class Impl77 implements I77 { @Inject Impl77(X77 p1, X78 p2, X79 p3, X80 p4, X81 p5, X82 p6, X83 p7, X84 p8, X85 p9, X86 p10) { } @Override public void dummy() { } }
interface I78 { public void dummy(); }; class Impl78 implements I78 { @Inject Impl78(X78 p1, X79 p2, X80 p3, X81 p4, X82 p5, X83 p6, X84 p7, X85 p8, X86 p9, X87 p10) { } @Override public void dummy() { } }
interface I79 { public void dummy(); }; class Impl79 implements I79 { @Inject Impl79(X79 p1, X80 p2, X81 p3, X82 p4, X83 p5, X84 p6, X85 p7, X86 p8, X87 p9, X88 p10) { } @Override public void dummy() { } }
interface I80 { public void dummy(); }; class Impl80 implements I80 { @Inject Impl80(X80 p1, X81 p2, X82 p3, X83 p4, X84 p5, X85 p6, X86 p7, X87 p8, X88 p9, X89 p10) { } @Override public void dummy() { } }
interface I81 { public void dummy(); }; class Impl81 implements I81 { @Inject Impl81(X81 p1, X82 p2, X83 p3, X84 p4, X85 p5, X86 p6, X87 p7, X88 p8, X89 p9, X90 p10) { } @Override public void dummy() { } }
interface I82 { public void dummy(); }; class Impl82 implements I82 { @Inject Impl82(X82 p1, X83 p2, X84 p3, X85 p4, X86 p5, X87 p6, X88 p7, X89 p8, X90 p9, X91 p10) { } @Override public void dummy() { } }
interface I83 { public void dummy(); }; class Impl83 implements I83 { @Inject Impl83(X83 p1, X84 p2, X85 p3, X86 p4, X87 p5, X88 p6, X89 p7, X90 p8, X91 p9, X92 p10) { } @Override public void dummy() { } }
interface I84 { public void dummy(); }; class Impl84 implements I84 { @Inject Impl84(X84 p1, X85 p2, X86 p3, X87 p4, X88 p5, X89 p6, X90 p7, X91 p8, X92 p9, X93 p10) { } @Override public void dummy() { } }
interface I85 { public void dummy(); }; class Impl85 implements I85 { @Inject Impl85(X85 p1, X86 p2, X87 p3, X88 p4, X89 p5, X90 p6, X91 p7, X92 p8, X93 p9, X94 p10) { } @Override public void dummy() { } }
interface I86 { public void dummy(); }; class Impl86 implements I86 { @Inject Impl86(X86 p1, X87 p2, X88 p3, X89 p4, X90 p5, X91 p6, X92 p7, X93 p8, X94 p9, X95 p10) { } @Override public void dummy() { } }
interface I87 { public void dummy(); }; class Impl87 implements I87 { @Inject Impl87(X87 p1, X88 p2, X89 p3, X90 p4, X91 p5, X92 p6, X93 p7, X94 p8, X95 p9, X96 p10) { } @Override public void dummy() { } }
interface I88 { public void dummy(); }; class Impl88 implements I88 { @Inject Impl88(X88 p1, X89 p2, X90 p3, X91 p4, X92 p5, X93 p6, X94 p7, X95 p8, X96 p9, X97 p10) { } @Override public void dummy() { } }
interface I89 { public void dummy(); }; class Impl89 implements I89 { @Inject Impl89(X89 p1, X90 p2, X91 p3, X92 p4, X93 p5, X94 p6, X95 p7, X96 p8, X97 p9, X98 p10) { } @Override public void dummy() { } }
interface I90 { public void dummy(); }; class Impl90 implements I90 { @Inject Impl90(X90 p1, X91 p2, X92 p3, X93 p4, X94 p5, X95 p6, X96 p7, X97 p8, X98 p9, X99 p10) { } @Override public void dummy() { } }
interface I91 { public void dummy(); }; class Impl91 implements I91 { @Inject Impl91(X91 p1, X92 p2, X93 p3, X94 p4, X95 p5, X96 p6, X97 p7, X98 p8, X99 p9, X00 p10) { } @Override public void dummy() { } }
interface I92 { public void dummy(); }; class Impl92 implements I92 { @Inject Impl92(X92 p1, X93 p2, X94 p3, X95 p4, X96 p5, X97 p6, X98 p7, X99 p8, X00 p9, X01 p10) { } @Override public void dummy() { } }
interface I93 { public void dummy(); }; class Impl93 implements I93 { @Inject Impl93(X93 p1, X94 p2, X95 p3, X96 p4, X97 p5, X98 p6, X99 p7, X00 p8, X01 p9, X02 p10) { } @Override public void dummy() { } }
interface I94 { public void dummy(); }; class Impl94 implements I94 { @Inject Impl94(X94 p1, X95 p2, X96 p3, X97 p4, X98 p5, X99 p6, X00 p7, X01 p8, X02 p9, X03 p10) { } @Override public void dummy() { } }
interface I95 { public void dummy(); }; class Impl95 implements I95 { @Inject Impl95(X95 p1, X96 p2, X97 p3, X98 p4, X99 p5, X00 p6, X01 p7, X02 p8, X03 p9, X04 p10) { } @Override public void dummy() { } }
interface I96 { public void dummy(); }; class Impl96 implements I96 { @Inject Impl96(X96 p1, X97 p2, X98 p3, X99 p4, X00 p5, X01 p6, X02 p7, X03 p8, X04 p9, X05 p10) { } @Override public void dummy() { } }
interface I97 { public void dummy(); }; class Impl97 implements I97 { @Inject Impl97(X97 p1, X98 p2, X99 p3, X00 p4, X01 p5, X02 p6, X03 p7, X04 p8, X05 p9, X06 p10) { } @Override public void dummy() { } }
interface I98 { public void dummy(); }; class Impl98 implements I98 { @Inject Impl98(X98 p1, X99 p2, X00 p3, X01 p4, X02 p5, X03 p6, X04 p7, X05 p8, X06 p9, X07 p10) { } @Override public void dummy() { } }
interface I99 { public void dummy(); }; class Impl99 implements I99 { @Inject Impl99(X99 p1, X00 p2, X01 p3, X02 p4, X03 p5, X04 p6, X05 p7, X06 p8, X07 p9, X08 p10) { } @Override public void dummy() { } }
class C0 { @Inject C0(I00 p1, I01 p2, I02 p3, I03 p4, I04 p5, I05 p6, I06 p7, I07 p8, I08 p9, I09 p10) { } }
class C1 { @Inject C1(I10 p1, I11 p2, I12 p3, I13 p4, I14 p5, I15 p6, I16 p7, I17 p8, I18 p9, I19 p10) { } }
class C2 { @Inject C2(I20 p1, I21 p2, I22 p3, I23 p4, I24 p5, I25 p6, I26 p7, I27 p8, I28 p9, I29 p10) { } }
class C3 { @Inject C3(I30 p1, I31 p2, I32 p3, I33 p4, I34 p5, I35 p6, I36 p7, I37 p8, I38 p9, I39 p10) { } }
class C4 { @Inject C4(I40 p1, I41 p2, I42 p3, I43 p4, I44 p5, I45 p6, I46 p7, I47 p8, I48 p9, I49 p10) { } }
class C5 { @Inject C5(I50 p1, I51 p2, I52 p3, I53 p4, I54 p5, I55 p6, I56 p7, I57 p8, I58 p9, I59 p10) { } }
class C6 { @Inject C6(I60 p1, I61 p2, I62 p3, I63 p4, I64 p5, I65 p6, I66 p7, I67 p8, I68 p9, I69 p10) { } }
class C7 { @Inject C7(I70 p1, I71 p2, I72 p3, I73 p4, I74 p5, I75 p6, I76 p7, I77 p8, I78 p9, I79 p10) { } }
class C8 { @Inject C8(I80 p1, I81 p2, I82 p3, I83 p4, I84 p5, I85 p6, I86 p7, I87 p8, I88 p9, I89 p10) { } }
class C9 { @Inject C9(I90 p1, I91 p2, I92 p3, I93 p4, I94 p5, I95 p6, I96 p7, I97 p8, I98 p9, I99 p10) { } }
class Complex { @Inject Complex(C0 p1, C1 p2, C2 p3, C3 p4, C4 p5, C5 p6, C6 p7, C7 p8, C8 p9, C9 p10) { } }

@Module
class AppModule {
  @Provides I00 provideI00(Impl00 impl) { return impl; }
  @Provides I01 provideI01(Impl01 impl) { return impl; }
  @Provides I02 provideI02(Impl02 impl) { return impl; }
  @Provides I03 provideI03(Impl03 impl) { return impl; }
  @Provides I04 provideI04(Impl04 impl) { return impl; }
  @Provides I05 provideI05(Impl05 impl) { return impl; }
  @Provides I06 provideI06(Impl06 impl) { return impl; }
  @Provides I07 provideI07(Impl07 impl) { return impl; }
  @Provides I08 provideI08(Impl08 impl) { return impl; }
  @Provides I09 provideI09(Impl09 impl) { return impl; }
  @Provides I10 provideI10(Impl10 impl) { return impl; }
  @Provides I11 provideI11(Impl11 impl) { return impl; }
  @Provides I12 provideI12(Impl12 impl) { return impl; }
  @Provides I13 provideI13(Impl13 impl) { return impl; }
  @Provides I14 provideI14(Impl14 impl) { return impl; }
  @Provides I15 provideI15(Impl15 impl) { return impl; }
  @Provides I16 provideI16(Impl16 impl) { return impl; }
  @Provides I17 provideI17(Impl17 impl) { return impl; }
  @Provides I18 provideI18(Impl18 impl) { return impl; }
  @Provides I19 provideI19(Impl19 impl) { return impl; }
  @Provides I20 provideI20(Impl20 impl) { return impl; }
  @Provides I21 provideI21(Impl21 impl) { return impl; }
  @Provides I22 provideI22(Impl22 impl) { return impl; }
  @Provides I23 provideI23(Impl23 impl) { return impl; }
  @Provides I24 provideI24(Impl24 impl) { return impl; }
  @Provides I25 provideI25(Impl25 impl) { return impl; }
  @Provides I26 provideI26(Impl26 impl) { return impl; }
  @Provides I27 provideI27(Impl27 impl) { return impl; }
  @Provides I28 provideI28(Impl28 impl) { return impl; }
  @Provides I29 provideI29(Impl29 impl) { return impl; }
  @Provides I30 provideI30(Impl30 impl) { return impl; }
  @Provides I31 provideI31(Impl31 impl) { return impl; }
  @Provides I32 provideI32(Impl32 impl) { return impl; }
  @Provides I33 provideI33(Impl33 impl) { return impl; }
  @Provides I34 provideI34(Impl34 impl) { return impl; }
  @Provides I35 provideI35(Impl35 impl) { return impl; }
  @Provides I36 provideI36(Impl36 impl) { return impl; }
  @Provides I37 provideI37(Impl37 impl) { return impl; }
  @Provides I38 provideI38(Impl38 impl) { return impl; }
  @Provides I39 provideI39(Impl39 impl) { return impl; }
  @Provides I40 provideI40(Impl40 impl) { return impl; }
  @Provides I41 provideI41(Impl41 impl) { return impl; }
  @Provides I42 provideI42(Impl42 impl) { return impl; }
  @Provides I43 provideI43(Impl43 impl) { return impl; }
  @Provides I44 provideI44(Impl44 impl) { return impl; }
  @Provides I45 provideI45(Impl45 impl) { return impl; }
  @Provides I46 provideI46(Impl46 impl) { return impl; }
  @Provides I47 provideI47(Impl47 impl) { return impl; }
  @Provides I48 provideI48(Impl48 impl) { return impl; }
  @Provides I49 provideI49(Impl49 impl) { return impl; }
  @Provides I50 provideI50(Impl50 impl) { return impl; }
  @Provides I51 provideI51(Impl51 impl) { return impl; }
  @Provides I52 provideI52(Impl52 impl) { return impl; }
  @Provides I53 provideI53(Impl53 impl) { return impl; }
  @Provides I54 provideI54(Impl54 impl) { return impl; }
  @Provides I55 provideI55(Impl55 impl) { return impl; }
  @Provides I56 provideI56(Impl56 impl) { return impl; }
  @Provides I57 provideI57(Impl57 impl) { return impl; }
  @Provides I58 provideI58(Impl58 impl) { return impl; }
  @Provides I59 provideI59(Impl59 impl) { return impl; }
  @Provides I60 provideI60(Impl60 impl) { return impl; }
  @Provides I61 provideI61(Impl61 impl) { return impl; }
  @Provides I62 provideI62(Impl62 impl) { return impl; }
  @Provides I63 provideI63(Impl63 impl) { return impl; }
  @Provides I64 provideI64(Impl64 impl) { return impl; }
  @Provides I65 provideI65(Impl65 impl) { return impl; }
  @Provides I66 provideI66(Impl66 impl) { return impl; }
  @Provides I67 provideI67(Impl67 impl) { return impl; }
  @Provides I68 provideI68(Impl68 impl) { return impl; }
  @Provides I69 provideI69(Impl69 impl) { return impl; }
  @Provides I70 provideI70(Impl70 impl) { return impl; }
  @Provides I71 provideI71(Impl71 impl) { return impl; }
  @Provides I72 provideI72(Impl72 impl) { return impl; }
  @Provides I73 provideI73(Impl73 impl) { return impl; }
  @Provides I74 provideI74(Impl74 impl) { return impl; }
  @Provides I75 provideI75(Impl75 impl) { return impl; }
  @Provides I76 provideI76(Impl76 impl) { return impl; }
  @Provides I77 provideI77(Impl77 impl) { return impl; }
  @Provides I78 provideI78(Impl78 impl) { return impl; }
  @Provides I79 provideI79(Impl79 impl) { return impl; }
  @Provides I80 provideI80(Impl80 impl) { return impl; }
  @Provides I81 provideI81(Impl81 impl) { return impl; }
  @Provides I82 provideI82(Impl82 impl) { return impl; }
  @Provides I83 provideI83(Impl83 impl) { return impl; }
  @Provides I84 provideI84(Impl84 impl) { return impl; }
  @Provides I85 provideI85(Impl85 impl) { return impl; }
  @Provides I86 provideI86(Impl86 impl) { return impl; }
  @Provides I87 provideI87(Impl87 impl) { return impl; }
  @Provides I88 provideI88(Impl88 impl) { return impl; }
  @Provides I89 provideI89(Impl89 impl) { return impl; }
  @Provides I90 provideI90(Impl90 impl) { return impl; }
  @Provides I91 provideI91(Impl91 impl) { return impl; }
  @Provides I92 provideI92(Impl92 impl) { return impl; }
  @Provides I93 provideI93(Impl93 impl) { return impl; }
  @Provides I94 provideI94(Impl94 impl) { return impl; }
  @Provides I95 provideI95(Impl95 impl) { return impl; }
  @Provides I96 provideI96(Impl96 impl) { return impl; }
  @Provides I97 provideI97(Impl97 impl) { return impl; }
  @Provides I98 provideI98(Impl98 impl) { return impl; }
  @Provides I99 provideI99(Impl99 impl) { return impl; }
}

@Component(modules = AppModule.class)
interface AppComponent {
  Complex build();
}

public class dagger2 {
  public static void main(String[] args) {
    Dagger_AppComponent.create().build();
  }
}


================================================
FILE: benchmark/create_complex/di.cpp
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#include <memory>
#include <boost/di.hpp>

namespace di = boost::di;

// clang-format off
struct X00 { BOOST_DI_INJECT(X00) { } };
struct X01 { BOOST_DI_INJECT(X01, X00) { } };
struct X02 { BOOST_DI_INJECT(X02, X00, X01) { } };
struct X03 { BOOST_DI_INJECT(X03, X00, X01, X02) { } };
struct X04 { BOOST_DI_INJECT(X04, X00, X01, X02, X03) { } };
struct X05 { BOOST_DI_INJECT(X05, X00, X01, X02, X03, X04) { } };
struct X06 { BOOST_DI_INJECT(X06, X00, X01, X02, X03, X04, X05) { } };
struct X07 { BOOST_DI_INJECT(X07, X00, X01, X02, X03, X04, X05, X06) { } };
struct X08 { BOOST_DI_INJECT(X08, X00, X01, X02, X03, X04, X05, X06, X07) { } };
struct X09 { BOOST_DI_INJECT(X09, X00, X01, X02, X03, X04, X05, X06, X07, X08) { } };
struct X10 { BOOST_DI_INJECT(X10, X00, X01, X02, X03, X04, X05, X06, X07, X08, X09) { } };
struct X11 { BOOST_DI_INJECT(X11, X01, X02, X03, X04, X05, X06, X07, X08, X09, X10) { } };
struct X12 { BOOST_DI_INJECT(X12, X02, X03, X04, X05, X06, X07, X08, X09, X10, X11) { } };
struct X13 { BOOST_DI_INJECT(X13, X03, X04, X05, X06, X07, X08, X09, X10, X11, X12) { } };
struct X14 { BOOST_DI_INJECT(X14, X04, X05, X06, X07, X08, X09, X10, X11, X12, X13) { } };
struct X15 { BOOST_DI_INJECT(X15, X05, X06, X07, X08, X09, X10, X11, X12, X13, X14) { } };
struct X16 { BOOST_DI_INJECT(X16, X06, X07, X08, X09, X10, X11, X12, X13, X14, X15) { } };
struct X17 { BOOST_DI_INJECT(X17, X07, X08, X09, X10, X11, X12, X13, X14, X15, X16) { } };
struct X18 { BOOST_DI_INJECT(X18, X08, X09, X10, X11, X12, X13, X14, X15, X16, X17) { } };
struct X19 { BOOST_DI_INJECT(X19, X09, X10, X11, X12, X13, X14, X15, X16, X17, X18) { } };
struct X20 { BOOST_DI_INJECT(X20, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19) { } };
struct X21 { BOOST_DI_INJECT(X21, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20) { } };
struct X22 { BOOST_DI_INJECT(X22, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21) { } };
struct X23 { BOOST_DI_INJECT(X23, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22) { } };
struct X24 { BOOST_DI_INJECT(X24, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23) { } };
struct X25 { BOOST_DI_INJECT(X25, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24) { } };
struct X26 { BOOST_DI_INJECT(X26, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25) { } };
struct X27 { BOOST_DI_INJECT(X27, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26) { } };
struct X28 { BOOST_DI_INJECT(X28, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27) { } };
struct X29 { BOOST_DI_INJECT(X29, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28) { } };
struct X30 { BOOST_DI_INJECT(X30, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29) { } };
struct X31 { BOOST_DI_INJECT(X31, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30) { } };
struct X32 { BOOST_DI_INJECT(X32, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31) { } };
struct X33 { BOOST_DI_INJECT(X33, X23, X24, X25, X26, X27, X28, X29, X30, X31, X32) { } };
struct X34 { BOOST_DI_INJECT(X34, X24, X25, X26, X27, X28, X29, X30, X31, X32, X33) { } };
struct X35 { BOOST_DI_INJECT(X35, X25, X26, X27, X28, X29, X30, X31, X32, X33, X34) { } };
struct X36 { BOOST_DI_INJECT(X36, X26, X27, X28, X29, X30, X31, X32, X33, X34, X35) { } };
struct X37 { BOOST_DI_INJECT(X37, X27, X28, X29, X30, X31, X32, X33, X34, X35, X36) { } };
struct X38 { BOOST_DI_INJECT(X38, X28, X29, X30, X31, X32, X33, X34, X35, X36, X37) { } };
struct X39 { BOOST_DI_INJECT(X39, X29, X30, X31, X32, X33, X34, X35, X36, X37, X38) { } };
struct X40 { BOOST_DI_INJECT(X40, X30, X31, X32, X33, X34, X35, X36, X37, X38, X39) { } };
struct X41 { BOOST_DI_INJECT(X41, X31, X32, X33, X34, X35, X36, X37, X38, X39, X40) { } };
struct X42 { BOOST_DI_INJECT(X42, X32, X33, X34, X35, X36, X37, X38, X39, X40, X41) { } };
struct X43 { BOOST_DI_INJECT(X43, X33, X34, X35, X36, X37, X38, X39, X40, X41, X42) { } };
struct X44 { BOOST_DI_INJECT(X44, X34, X35, X36, X37, X38, X39, X40, X41, X42, X43) { } };
struct X45 { BOOST_DI_INJECT(X45, X35, X36, X37, X38, X39, X40, X41, X42, X43, X44) { } };
struct X46 { BOOST_DI_INJECT(X46, X36, X37, X38, X39, X40, X41, X42, X43, X44, X45) { } };
struct X47 { BOOST_DI_INJECT(X47, X37, X38, X39, X40, X41, X42, X43, X44, X45, X46) { } };
struct X48 { BOOST_DI_INJECT(X48, X38, X39, X40, X41, X42, X43, X44, X45, X46, X47) { } };
struct X49 { BOOST_DI_INJECT(X49, X39, X40, X41, X42, X43, X44, X45, X46, X47, X48) { } };
struct X50 { BOOST_DI_INJECT(X50, X40, X41, X42, X43, X44, X45, X46, X47, X48, X49) { } };
struct X51 { BOOST_DI_INJECT(X51, X41, X42, X43, X44, X45, X46, X47, X48, X49, X50) { } };
struct X52 { BOOST_DI_INJECT(X52, X42, X43, X44, X45, X46, X47, X48, X49, X50, X51) { } };
struct X53 { BOOST_DI_INJECT(X53, X43, X44, X45, X46, X47, X48, X49, X50, X51, X52) { } };
struct X54 { BOOST_DI_INJECT(X54, X44, X45, X46, X47, X48, X49, X50, X51, X52, X53) { } };
struct X55 { BOOST_DI_INJECT(X55, X45, X46, X47, X48, X49, X50, X51, X52, X53, X54) { } };
struct X56 { BOOST_DI_INJECT(X56, X46, X47, X48, X49, X50, X51, X52, X53, X54, X55) { } };
struct X57 { BOOST_DI_INJECT(X57, X47, X48, X49, X50, X51, X52, X53, X54, X55, X56) { } };
struct X58 { BOOST_DI_INJECT(X58, X48, X49, X50, X51, X52, X53, X54, X55, X56, X57) { } };
struct X59 { BOOST_DI_INJECT(X59, X49, X50, X51, X52, X53, X54, X55, X56, X57, X58) { } };
struct X60 { BOOST_DI_INJECT(X60, X50, X51, X52, X53, X54, X55, X56, X57, X58, X59) { } };
struct X61 { BOOST_DI_INJECT(X61, X51, X52, X53, X54, X55, X56, X57, X58, X59, X60) { } };
struct X62 { BOOST_DI_INJECT(X62, X52, X53, X54, X55, X56, X57, X58, X59, X60, X61) { } };
struct X63 { BOOST_DI_INJECT(X63, X53, X54, X55, X56, X57, X58, X59, X60, X61, X62) { } };
struct X64 { BOOST_DI_INJECT(X64, X54, X55, X56, X57, X58, X59, X60, X61, X62, X63) { } };
struct X65 { BOOST_DI_INJECT(X65, X55, X56, X57, X58, X59, X60, X61, X62, X63, X64) { } };
struct X66 { BOOST_DI_INJECT(X66, X56, X57, X58, X59, X60, X61, X62, X63, X64, X65) { } };
struct X67 { BOOST_DI_INJECT(X67, X57, X58, X59, X60, X61, X62, X63, X64, X65, X66) { } };
struct X68 { BOOST_DI_INJECT(X68, X58, X59, X60, X61, X62, X63, X64, X65, X66, X67) { } };
struct X69 { BOOST_DI_INJECT(X69, X59, X60, X61, X62, X63, X64, X65, X66, X67, X68) { } };
struct X70 { BOOST_DI_INJECT(X70, X60, X61, X62, X63, X64, X65, X66, X67, X68, X69) { } };
struct X71 { BOOST_DI_INJECT(X71, X61, X62, X63, X64, X65, X66, X67, X68, X69, X70) { } };
struct X72 { BOOST_DI_INJECT(X72, X62, X63, X64, X65, X66, X67, X68, X69, X70, X71) { } };
struct X73 { BOOST_DI_INJECT(X73, X63, X64, X65, X66, X67, X68, X69, X70, X71, X72) { } };
struct X74 { BOOST_DI_INJECT(X74, X64, X65, X66, X67, X68, X69, X70, X71, X72, X73) { } };
struct X75 { BOOST_DI_INJECT(X75, X65, X66, X67, X68, X69, X70, X71, X72, X73, X74) { } };
struct X76 { BOOST_DI_INJECT(X76, X66, X67, X68, X69, X70, X71, X72, X73, X74, X75) { } };
struct X77 { BOOST_DI_INJECT(X77, X67, X68, X69, X70, X71, X72, X73, X74, X75, X76) { } };
struct X78 { BOOST_DI_INJECT(X78, X68, X69, X70, X71, X72, X73, X74, X75, X76, X77) { } };
struct X79 { BOOST_DI_INJECT(X79, X69, X70, X71, X72, X73, X74, X75, X76, X77, X78) { } };
struct X80 { BOOST_DI_INJECT(X80, X70, X71, X72, X73, X74, X75, X76, X77, X78, X79) { } };
struct X81 { BOOST_DI_INJECT(X81, X71, X72, X73, X74, X75, X76, X77, X78, X79, X80) { } };
struct X82 { BOOST_DI_INJECT(X82, X72, X73, X74, X75, X76, X77, X78, X79, X80, X81) { } };
struct X83 { BOOST_DI_INJECT(X83, X73, X74, X75, X76, X77, X78, X79, X80, X81, X82) { } };
struct X84 { BOOST_DI_INJECT(X84, X74, X75, X76, X77, X78, X79, X80, X81, X82, X83) { } };
struct X85 { BOOST_DI_INJECT(X85, X75, X76, X77, X78, X79, X80, X81, X82, X83, X84) { } };
struct X86 { BOOST_DI_INJECT(X86, X76, X77, X78, X79, X80, X81, X82, X83, X84, X85) { } };
struct X87 { BOOST_DI_INJECT(X87, X77, X78, X79, X80, X81, X82, X83, X84, X85, X86) { } };
struct X88 { BOOST_DI_INJECT(X88, X78, X79, X80, X81, X82, X83, X84, X85, X86, X87) { } };
struct X89 { BOOST_DI_INJECT(X89, X79, X80, X81, X82, X83, X84, X85, X86, X87, X88) { } };
struct X90 { BOOST_DI_INJECT(X90, X80, X81, X82, X83, X84, X85, X86, X87, X88, X89) { } };
struct X91 { BOOST_DI_INJECT(X91, X81, X82, X83, X84, X85, X86, X87, X88, X89, X90) { } };
struct X92 { BOOST_DI_INJECT(X92, X82, X83, X84, X85, X86, X87, X88, X89, X90, X91) { } };
struct X93 { BOOST_DI_INJECT(X93, X83, X84, X85, X86, X87, X88, X89, X90, X91, X92) { } };
struct X94 { BOOST_DI_INJECT(X94, X84, X85, X86, X87, X88, X89, X90, X91, X92, X93) { } };
struct X95 { BOOST_DI_INJECT(X95, X85, X86, X87, X88, X89, X90, X91, X92, X93, X94) { } };
struct X96 { BOOST_DI_INJECT(X96, X86, X87, X88, X89, X90, X91, X92, X93, X94, X95) { } };
struct X97 { BOOST_DI_INJECT(X97, X87, X88, X89, X90, X91, X92, X93, X94, X95, X96) { } };
struct X98 { BOOST_DI_INJECT(X98, X88, X89, X90, X91, X92, X93, X94, X95, X96, X97) { } };
struct X99 { BOOST_DI_INJECT(X99, X89, X90, X91, X92, X93, X94, X95, X96, X97, X98) { } };
struct I00 { virtual ~I00() noexcept = default; virtual void dummy() = 0; }; struct Impl00 : I00 { BOOST_DI_INJECT(Impl00, X00, X01, X02, X03, X04, X05, X06, X07, X08, X09) { } void dummy() override { } };
struct I01 { virtual ~I01() noexcept = default; virtual void dummy() = 0; }; struct Impl01 : I01 { BOOST_DI_INJECT(Impl01, X01, X02, X03, X04, X05, X06, X07, X08, X09, X10) { } void dummy() override { } };
struct I02 { virtual ~I02() noexcept = default; virtual void dummy() = 0; }; struct Impl02 : I02 { BOOST_DI_INJECT(Impl02, X02, X03, X04, X05, X06, X07, X08, X09, X10, X11) { } void dummy() override { } };
struct I03 { virtual ~I03() noexcept = default; virtual void dummy() = 0; }; struct Impl03 : I03 { BOOST_DI_INJECT(Impl03, X03, X04, X05, X06, X07, X08, X09, X10, X11, X12) { } void dummy() override { } };
struct I04 { virtual ~I04() noexcept = default; virtual void dummy() = 0; }; struct Impl04 : I04 { BOOST_DI_INJECT(Impl04, X04, X05, X06, X07, X08, X09, X10, X11, X12, X13) { } void dummy() override { } };
struct I05 { virtual ~I05() noexcept = default; virtual void dummy() = 0; }; struct Impl05 : I05 { BOOST_DI_INJECT(Impl05, X05, X06, X07, X08, X09, X10, X11, X12, X13, X14) { } void dummy() override { } };
struct I06 { virtual ~I06() noexcept = default; virtual void dummy() = 0; }; struct Impl06 : I06 { BOOST_DI_INJECT(Impl06, X06, X07, X08, X09, X10, X11, X12, X13, X14, X15) { } void dummy() override { } };
struct I07 { virtual ~I07() noexcept = default; virtual void dummy() = 0; }; struct Impl07 : I07 { BOOST_DI_INJECT(Impl07, X07, X08, X09, X10, X11, X12, X13, X14, X15, X16) { } void dummy() override { } };
struct I08 { virtual ~I08() noexcept = default; virtual void dummy() = 0; }; struct Impl08 : I08 { BOOST_DI_INJECT(Impl08, X08, X09, X10, X11, X12, X13, X14, X15, X16, X17) { } void dummy() override { } };
struct I09 { virtual ~I09() noexcept = default; virtual void dummy() = 0; }; struct Impl09 : I09 { BOOST_DI_INJECT(Impl09, X09, X10, X11, X12, X13, X14, X15, X16, X17, X18) { } void dummy() override { } };
struct I10 { virtual ~I10() noexcept = default; virtual void dummy() = 0; }; struct Impl10 : I10 { BOOST_DI_INJECT(Impl10, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19) { } void dummy() override { } };
struct I11 { virtual ~I11() noexcept = default; virtual void dummy() = 0; }; struct Impl11 : I11 { BOOST_DI_INJECT(Impl11, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20) { } void dummy() override { } };
struct I12 { virtual ~I12() noexcept = default; virtual void dummy() = 0; }; struct Impl12 : I12 { BOOST_DI_INJECT(Impl12, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21) { } void dummy() override { } };
struct I13 { virtual ~I13() noexcept = default; virtual void dummy() = 0; }; struct Impl13 : I13 { BOOST_DI_INJECT(Impl13, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22) { } void dummy() override { } };
struct I14 { virtual ~I14() noexcept = default; virtual void dummy() = 0; }; struct Impl14 : I14 { BOOST_DI_INJECT(Impl14, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23) { } void dummy() override { } };
struct I15 { virtual ~I15() noexcept = default; virtual void dummy() = 0; }; struct Impl15 : I15 { BOOST_DI_INJECT(Impl15, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24) { } void dummy() override { } };
struct I16 { virtual ~I16() noexcept = default; virtual void dummy() = 0; }; struct Impl16 : I16 { BOOST_DI_INJECT(Impl16, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25) { } void dummy() override { } };
struct I17 { virtual ~I17() noexcept = default; virtual void dummy() = 0; }; struct Impl17 : I17 { BOOST_DI_INJECT(Impl17, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26) { } void dummy() override { } };
struct I18 { virtual ~I18() noexcept = default; virtual void dummy() = 0; }; struct Impl18 : I18 { BOOST_DI_INJECT(Impl18, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27) { } void dummy() override { } };
struct I19 { virtual ~I19() noexcept = default; virtual void dummy() = 0; }; struct Impl19 : I19 { BOOST_DI_INJECT(Impl19, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28) { } void dummy() override { } };
struct I20 { virtual ~I20() noexcept = default; virtual void dummy() = 0; }; struct Impl20 : I20 { BOOST_DI_INJECT(Impl20, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29) { } void dummy() override { } };
struct I21 { virtual ~I21() noexcept = default; virtual void dummy() = 0; }; struct Impl21 : I21 { BOOST_DI_INJECT(Impl21, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30) { } void dummy() override { } };
struct I22 { virtual ~I22() noexcept = default; virtual void dummy() = 0; }; struct Impl22 : I22 { BOOST_DI_INJECT(Impl22, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31) { } void dummy() override { } };
struct I23 { virtual ~I23() noexcept = default; virtual void dummy() = 0; }; struct Impl23 : I23 { BOOST_DI_INJECT(Impl23, X23, X24, X25, X26, X27, X28, X29, X30, X31, X32) { } void dummy() override { } };
struct I24 { virtual ~I24() noexcept = default; virtual void dummy() = 0; }; struct Impl24 : I24 { BOOST_DI_INJECT(Impl24, X24, X25, X26, X27, X28, X29, X30, X31, X32, X33) { } void dummy() override { } };
struct I25 { virtual ~I25() noexcept = default; virtual void dummy() = 0; }; struct Impl25 : I25 { BOOST_DI_INJECT(Impl25, X25, X26, X27, X28, X29, X30, X31, X32, X33, X34) { } void dummy() override { } };
struct I26 { virtual ~I26() noexcept = default; virtual void dummy() = 0; }; struct Impl26 : I26 { BOOST_DI_INJECT(Impl26, X26, X27, X28, X29, X30, X31, X32, X33, X34, X35) { } void dummy() override { } };
struct I27 { virtual ~I27() noexcept = default; virtual void dummy() = 0; }; struct Impl27 : I27 { BOOST_DI_INJECT(Impl27, X27, X28, X29, X30, X31, X32, X33, X34, X35, X36) { } void dummy() override { } };
struct I28 { virtual ~I28() noexcept = default; virtual void dummy() = 0; }; struct Impl28 : I28 { BOOST_DI_INJECT(Impl28, X28, X29, X30, X31, X32, X33, X34, X35, X36, X37) { } void dummy() override { } };
struct I29 { virtual ~I29() noexcept = default; virtual void dummy() = 0; }; struct Impl29 : I29 { BOOST_DI_INJECT(Impl29, X29, X30, X31, X32, X33, X34, X35, X36, X37, X38) { } void dummy() override { } };
struct I30 { virtual ~I30() noexcept = default; virtual void dummy() = 0; }; struct Impl30 : I30 { BOOST_DI_INJECT(Impl30, X30, X31, X32, X33, X34, X35, X36, X37, X38, X39) { } void dummy() override { } };
struct I31 { virtual ~I31() noexcept = default; virtual void dummy() = 0; }; struct Impl31 : I31 { BOOST_DI_INJECT(Impl31, X31, X32, X33, X34, X35, X36, X37, X38, X39, X40) { } void dummy() override { } };
struct I32 { virtual ~I32() noexcept = default; virtual void dummy() = 0; }; struct Impl32 : I32 { BOOST_DI_INJECT(Impl32, X32, X33, X34, X35, X36, X37, X38, X39, X40, X41) { } void dummy() override { } };
struct I33 { virtual ~I33() noexcept = default; virtual void dummy() = 0; }; struct Impl33 : I33 { BOOST_DI_INJECT(Impl33, X33, X34, X35, X36, X37, X38, X39, X40, X41, X42) { } void dummy() override { } };
struct I34 { virtual ~I34() noexcept = default; virtual void dummy() = 0; }; struct Impl34 : I34 { BOOST_DI_INJECT(Impl34, X34, X35, X36, X37, X38, X39, X40, X41, X42, X43) { } void dummy() override { } };
struct I35 { virtual ~I35() noexcept = default; virtual void dummy() = 0; }; struct Impl35 : I35 { BOOST_DI_INJECT(Impl35, X35, X36, X37, X38, X39, X40, X41, X42, X43, X44) { } void dummy() override { } };
struct I36 { virtual ~I36() noexcept = default; virtual void dummy() = 0; }; struct Impl36 : I36 { BOOST_DI_INJECT(Impl36, X36, X37, X38, X39, X40, X41, X42, X43, X44, X45) { } void dummy() override { } };
struct I37 { virtual ~I37() noexcept = default; virtual void dummy() = 0; }; struct Impl37 : I37 { BOOST_DI_INJECT(Impl37, X37, X38, X39, X40, X41, X42, X43, X44, X45, X46) { } void dummy() override { } };
struct I38 { virtual ~I38() noexcept = default; virtual void dummy() = 0; }; struct Impl38 : I38 { BOOST_DI_INJECT(Impl38, X38, X39, X40, X41, X42, X43, X44, X45, X46, X47) { } void dummy() override { } };
struct I39 { virtual ~I39() noexcept = default; virtual void dummy() = 0; }; struct Impl39 : I39 { BOOST_DI_INJECT(Impl39, X39, X40, X41, X42, X43, X44, X45, X46, X47, X48) { } void dummy() override { } };
struct I40 { virtual ~I40() noexcept = default; virtual void dummy() = 0; }; struct Impl40 : I40 { BOOST_DI_INJECT(Impl40, X40, X41, X42, X43, X44, X45, X46, X47, X48, X49) { } void dummy() override { } };
struct I41 { virtual ~I41() noexcept = default; virtual void dummy() = 0; }; struct Impl41 : I41 { BOOST_DI_INJECT(Impl41, X41, X42, X43, X44, X45, X46, X47, X48, X49, X50) { } void dummy() override { } };
struct I42 { virtual ~I42() noexcept = default; virtual void dummy() = 0; }; struct Impl42 : I42 { BOOST_DI_INJECT(Impl42, X42, X43, X44, X45, X46, X47, X48, X49, X50, X51) { } void dummy() override { } };
struct I43 { virtual ~I43() noexcept = default; virtual void dummy() = 0; }; struct Impl43 : I43 { BOOST_DI_INJECT(Impl43, X43, X44, X45, X46, X47, X48, X49, X50, X51, X52) { } void dummy() override { } };
struct I44 { virtual ~I44() noexcept = default; virtual void dummy() = 0; }; struct Impl44 : I44 { BOOST_DI_INJECT(Impl44, X44, X45, X46, X47, X48, X49, X50, X51, X52, X53) { } void dummy() override { } };
struct I45 { virtual ~I45() noexcept = default; virtual void dummy() = 0; }; struct Impl45 : I45 { BOOST_DI_INJECT(Impl45, X45, X46, X47, X48, X49, X50, X51, X52, X53, X54) { } void dummy() override { } };
struct I46 { virtual ~I46() noexcept = default; virtual void dummy() = 0; }; struct Impl46 : I46 { BOOST_DI_INJECT(Impl46, X46, X47, X48, X49, X50, X51, X52, X53, X54, X55) { } void dummy() override { } };
struct I47 { virtual ~I47() noexcept = default; virtual void dummy() = 0; }; struct Impl47 : I47 { BOOST_DI_INJECT(Impl47, X47, X48, X49, X50, X51, X52, X53, X54, X55, X56) { } void dummy() override { } };
struct I48 { virtual ~I48() noexcept = default; virtual void dummy() = 0; }; struct Impl48 : I48 { BOOST_DI_INJECT(Impl48, X48, X49, X50, X51, X52, X53, X54, X55, X56, X57) { } void dummy() override { } };
struct I49 { virtual ~I49() noexcept = default; virtual void dummy() = 0; }; struct Impl49 : I49 { BOOST_DI_INJECT(Impl49, X49, X50, X51, X52, X53, X54, X55, X56, X57, X58) { } void dummy() override { } };
struct I50 { virtual ~I50() noexcept = default; virtual void dummy() = 0; }; struct Impl50 : I50 { BOOST_DI_INJECT(Impl50, X50, X51, X52, X53, X54, X55, X56, X57, X58, X59) { } void dummy() override { } };
struct I51 { virtual ~I51() noexcept = default; virtual void dummy() = 0; }; struct Impl51 : I51 { BOOST_DI_INJECT(Impl51, X51, X52, X53, X54, X55, X56, X57, X58, X59, X60) { } void dummy() override { } };
struct I52 { virtual ~I52() noexcept = default; virtual void dummy() = 0; }; struct Impl52 : I52 { BOOST_DI_INJECT(Impl52, X52, X53, X54, X55, X56, X57, X58, X59, X60, X61) { } void dummy() override { } };
struct I53 { virtual ~I53() noexcept = default; virtual void dummy() = 0; }; struct Impl53 : I53 { BOOST_DI_INJECT(Impl53, X53, X54, X55, X56, X57, X58, X59, X60, X61, X62) { } void dummy() override { } };
struct I54 { virtual ~I54() noexcept = default; virtual void dummy() = 0; }; struct Impl54 : I54 { BOOST_DI_INJECT(Impl54, X54, X55, X56, X57, X58, X59, X60, X61, X62, X63) { } void dummy() override { } };
struct I55 { virtual ~I55() noexcept = default; virtual void dummy() = 0; }; struct Impl55 : I55 { BOOST_DI_INJECT(Impl55, X55, X56, X57, X58, X59, X60, X61, X62, X63, X64) { } void dummy() override { } };
struct I56 { virtual ~I56() noexcept = default; virtual void dummy() = 0; }; struct Impl56 : I56 { BOOST_DI_INJECT(Impl56, X56, X57, X58, X59, X60, X61, X62, X63, X64, X65) { } void dummy() override { } };
struct I57 { virtual ~I57() noexcept = default; virtual void dummy() = 0; }; struct Impl57 : I57 { BOOST_DI_INJECT(Impl57, X57, X58, X59, X60, X61, X62, X63, X64, X65, X66) { } void dummy() override { } };
struct I58 { virtual ~I58() noexcept = default; virtual void dummy() = 0; }; struct Impl58 : I58 { BOOST_DI_INJECT(Impl58, X58, X59, X60, X61, X62, X63, X64, X65, X66, X67) { } void dummy() override { } };
struct I59 { virtual ~I59() noexcept = default; virtual void dummy() = 0; }; struct Impl59 : I59 { BOOST_DI_INJECT(Impl59, X59, X60, X61, X62, X63, X64, X65, X66, X67, X68) { } void dummy() override { } };
struct I60 { virtual ~I60() noexcept = default; virtual void dummy() = 0; }; struct Impl60 : I60 { BOOST_DI_INJECT(Impl60, X60, X61, X62, X63, X64, X65, X66, X67, X68, X69) { } void dummy() override { } };
struct I61 { virtual ~I61() noexcept = default; virtual void dummy() = 0; }; struct Impl61 : I61 { BOOST_DI_INJECT(Impl61, X61, X62, X63, X64, X65, X66, X67, X68, X69, X70) { } void dummy() override { } };
struct I62 { virtual ~I62() noexcept = default; virtual void dummy() = 0; }; struct Impl62 : I62 { BOOST_DI_INJECT(Impl62, X62, X63, X64, X65, X66, X67, X68, X69, X70, X71) { } void dummy() override { } };
struct I63 { virtual ~I63() noexcept = default; virtual void dummy() = 0; }; struct Impl63 : I63 { BOOST_DI_INJECT(Impl63, X63, X64, X65, X66, X67, X68, X69, X70, X71, X72) { } void dummy() override { } };
struct I64 { virtual ~I64() noexcept = default; virtual void dummy() = 0; }; struct Impl64 : I64 { BOOST_DI_INJECT(Impl64, X64, X65, X66, X67, X68, X69, X70, X71, X72, X73) { } void dummy() override { } };
struct I65 { virtual ~I65() noexcept = default; virtual void dummy() = 0; }; struct Impl65 : I65 { BOOST_DI_INJECT(Impl65, X65, X66, X67, X68, X69, X70, X71, X72, X73, X74) { } void dummy() override { } };
struct I66 { virtual ~I66() noexcept = default; virtual void dummy() = 0; }; struct Impl66 : I66 { BOOST_DI_INJECT(Impl66, X66, X67, X68, X69, X70, X71, X72, X73, X74, X75) { } void dummy() override { } };
struct I67 { virtual ~I67() noexcept = default; virtual void dummy() = 0; }; struct Impl67 : I67 { BOOST_DI_INJECT(Impl67, X67, X68, X69, X70, X71, X72, X73, X74, X75, X76) { } void dummy() override { } };
struct I68 { virtual ~I68() noexcept = default; virtual void dummy() = 0; }; struct Impl68 : I68 { BOOST_DI_INJECT(Impl68, X68, X69, X70, X71, X72, X73, X74, X75, X76, X77) { } void dummy() override { } };
struct I69 { virtual ~I69() noexcept = default; virtual void dummy() = 0; }; struct Impl69 : I69 { BOOST_DI_INJECT(Impl69, X69, X70, X71, X72, X73, X74, X75, X76, X77, X78) { } void dummy() override { } };
struct I70 { virtual ~I70() noexcept = default; virtual void dummy() = 0; }; struct Impl70 : I70 { BOOST_DI_INJECT(Impl70, X70, X71, X72, X73, X74, X75, X76, X77, X78, X79) { } void dummy() override { } };
struct I71 { virtual ~I71() noexcept = default; virtual void dummy() = 0; }; struct Impl71 : I71 { BOOST_DI_INJECT(Impl71, X71, X72, X73, X74, X75, X76, X77, X78, X79, X80) { } void dummy() override { } };
struct I72 { virtual ~I72() noexcept = default; virtual void dummy() = 0; }; struct Impl72 : I72 { BOOST_DI_INJECT(Impl72, X72, X73, X74, X75, X76, X77, X78, X79, X80, X81) { } void dummy() override { } };
struct I73 { virtual ~I73() noexcept = default; virtual void dummy() = 0; }; struct Impl73 : I73 { BOOST_DI_INJECT(Impl73, X73, X74, X75, X76, X77, X78, X79, X80, X81, X82) { } void dummy() override { } };
struct I74 { virtual ~I74() noexcept = default; virtual void dummy() = 0; }; struct Impl74 : I74 { BOOST_DI_INJECT(Impl74, X74, X75, X76, X77, X78, X79, X80, X81, X82, X83) { } void dummy() override { } };
struct I75 { virtual ~I75() noexcept = default; virtual void dummy() = 0; }; struct Impl75 : I75 { BOOST_DI_INJECT(Impl75, X75, X76, X77, X78, X79, X80, X81, X82, X83, X84) { } void dummy() override { } };
struct I76 { virtual ~I76() noexcept = default; virtual void dummy() = 0; }; struct Impl76 : I76 { BOOST_DI_INJECT(Impl76, X76, X77, X78, X79, X80, X81, X82, X83, X84, X85) { } void dummy() override { } };
struct I77 { virtual ~I77() noexcept = default; virtual void dummy() = 0; }; struct Impl77 : I77 { BOOST_DI_INJECT(Impl77, X77, X78, X79, X80, X81, X82, X83, X84, X85, X86) { } void dummy() override { } };
struct I78 { virtual ~I78() noexcept = default; virtual void dummy() = 0; }; struct Impl78 : I78 { BOOST_DI_INJECT(Impl78, X78, X79, X80, X81, X82, X83, X84, X85, X86, X87) { } void dummy() override { } };
struct I79 { virtual ~I79() noexcept = default; virtual void dummy() = 0; }; struct Impl79 : I79 { BOOST_DI_INJECT(Impl79, X79, X80, X81, X82, X83, X84, X85, X86, X87, X88) { } void dummy() override { } };
struct I80 { virtual ~I80() noexcept = default; virtual void dummy() = 0; }; struct Impl80 : I80 { BOOST_DI_INJECT(Impl80, X80, X81, X82, X83, X84, X85, X86, X87, X88, X89) { } void dummy() override { } };
struct I81 { virtual ~I81() noexcept = default; virtual void dummy() = 0; }; struct Impl81 : I81 { BOOST_DI_INJECT(Impl81, X81, X82, X83, X84, X85, X86, X87, X88, X89, X90) { } void dummy() override { } };
struct I82 { virtual ~I82() noexcept = default; virtual void dummy() = 0; }; struct Impl82 : I82 { BOOST_DI_INJECT(Impl82, X82, X83, X84, X85, X86, X87, X88, X89, X90, X91) { } void dummy() override { } };
struct I83 { virtual ~I83() noexcept = default; virtual void dummy() = 0; }; struct Impl83 : I83 { BOOST_DI_INJECT(Impl83, X83, X84, X85, X86, X87, X88, X89, X90, X91, X92) { } void dummy() override { } };
struct I84 { virtual ~I84() noexcept = default; virtual void dummy() = 0; }; struct Impl84 : I84 { BOOST_DI_INJECT(Impl84, X84, X85, X86, X87, X88, X89, X90, X91, X92, X93) { } void dummy() override { } };
struct I85 { virtual ~I85() noexcept = default; virtual void dummy() = 0; }; struct Impl85 : I85 { BOOST_DI_INJECT(Impl85, X85, X86, X87, X88, X89, X90, X91, X92, X93, X94) { } void dummy() override { } };
struct I86 { virtual ~I86() noexcept = default; virtual void dummy() = 0; }; struct Impl86 : I86 { BOOST_DI_INJECT(Impl86, X86, X87, X88, X89, X90, X91, X92, X93, X94, X95) { } void dummy() override { } };
struct I87 { virtual ~I87() noexcept = default; virtual void dummy() = 0; }; struct Impl87 : I87 { BOOST_DI_INJECT(Impl87, X87, X88, X89, X90, X91, X92, X93, X94, X95, X96) { } void dummy() override { } };
struct I88 { virtual ~I88() noexcept = default; virtual void dummy() = 0; }; struct Impl88 : I88 { BOOST_DI_INJECT(Impl88, X88, X89, X90, X91, X92, X93, X94, X95, X96, X97) { } void dummy() override { } };
struct I89 { virtual ~I89() noexcept = default; virtual void dummy() = 0; }; struct Impl89 : I89 { BOOST_DI_INJECT(Impl89, X89, X90, X91, X92, X93, X94, X95, X96, X97, X98) { } void dummy() override { } };
struct I90 { virtual ~I90() noexcept = default; virtual void dummy() = 0; }; struct Impl90 : I90 { BOOST_DI_INJECT(Impl90, X90, X91, X92, X93, X94, X95, X96, X97, X98, X99) { } void dummy() override { } };
struct I91 { virtual ~I91() noexcept = default; virtual void dummy() = 0; }; struct Impl91 : I91 { BOOST_DI_INJECT(Impl91, X91, X92, X93, X94, X95, X96, X97, X98, X99, X00) { } void dummy() override { } };
struct I92 { virtual ~I92() noexcept = default; virtual void dummy() = 0; }; struct Impl92 : I92 { BOOST_DI_INJECT(Impl92, X92, X93, X94, X95, X96, X97, X98, X99, X00, X01) { } void dummy() override { } };
struct I93 { virtual ~I93() noexcept = default; virtual void dummy() = 0; }; struct Impl93 : I93 { BOOST_DI_INJECT(Impl93, X93, X94, X95, X96, X97, X98, X99, X00, X01, X02) { } void dummy() override { } };
struct I94 { virtual ~I94() noexcept = default; virtual void dummy() = 0; }; struct Impl94 : I94 { BOOST_DI_INJECT(Impl94, X94, X95, X96, X97, X98, X99, X00, X01, X02, X03) { } void dummy() override { } };
struct I95 { virtual ~I95() noexcept = default; virtual void dummy() = 0; }; struct Impl95 : I95 { BOOST_DI_INJECT(Impl95, X95, X96, X97, X98, X99, X00, X01, X02, X03, X04) { } void dummy() override { } };
struct I96 { virtual ~I96() noexcept = default; virtual void dummy() = 0; }; struct Impl96 : I96 { BOOST_DI_INJECT(Impl96, X96, X97, X98, X99, X00, X01, X02, X03, X04, X05) { } void dummy() override { } };
struct I97 { virtual ~I97() noexcept = default; virtual void dummy() = 0; }; struct Impl97 : I97 { BOOST_DI_INJECT(Impl97, X97, X98, X99, X00, X01, X02, X03, X04, X05, X06) { } void dummy() override { } };
struct I98 { virtual ~I98() noexcept = default; virtual void dummy() = 0; }; struct Impl98 : I98 { BOOST_DI_INJECT(Impl98, X98, X99, X00, X01, X02, X03, X04, X05, X06, X07) { } void dummy() override { } };
struct I99 { virtual ~I99() noexcept = default; virtual void dummy() = 0; }; struct Impl99 : I99 { BOOST_DI_INJECT(Impl99, X99, X00, X01, X02, X03, X04, X05, X06, X07, X08) { } void dummy() override { } };
struct C0 { BOOST_DI_INJECT(C0, std::unique_ptr<I00>, std::unique_ptr<I01>, std::unique_ptr<I02>, std::unique_ptr<I03>, std::unique_ptr<I04>, std::unique_ptr<I05>, std::unique_ptr<I06>, std::unique_ptr<I07>, std::unique_ptr<I08>, std::unique_ptr<I09>) { } };
struct C1 { BOOST_DI_INJECT(C1, std::unique_ptr<I10>, std::unique_ptr<I11>, std::unique_ptr<I12>, std::unique_ptr<I13>, std::unique_ptr<I14>, std::unique_ptr<I15>, std::unique_ptr<I16>, std::unique_ptr<I17>, std::unique_ptr<I18>, std::unique_ptr<I19>) { } };
struct C2 { BOOST_DI_INJECT(C2, std::unique_ptr<I20>, std::unique_ptr<I21>, std::unique_ptr<I22>, std::unique_ptr<I23>, std::unique_ptr<I24>, std::unique_ptr<I25>, std::unique_ptr<I26>, std::unique_ptr<I27>, std::unique_ptr<I28>, std::unique_ptr<I29>) { } };
struct C3 { BOOST_DI_INJECT(C3, std::unique_ptr<I30>, std::unique_ptr<I31>, std::unique_ptr<I32>, std::unique_ptr<I33>, std::unique_ptr<I34>, std::unique_ptr<I35>, std::unique_ptr<I36>, std::unique_ptr<I37>, std::unique_ptr<I38>, std::unique_ptr<I39>) { } };
struct C4 { BOOST_DI_INJECT(C4, std::unique_ptr<I40>, std::unique_ptr<I41>, std::unique_ptr<I42>, std::unique_ptr<I43>, std::unique_ptr<I44>, std::unique_ptr<I45>, std::unique_ptr<I46>, std::unique_ptr<I47>, std::unique_ptr<I48>, std::unique_ptr<I49>) { } };
struct C5 { BOOST_DI_INJECT(C5, std::unique_ptr<I50>, std::unique_ptr<I51>, std::unique_ptr<I52>, std::unique_ptr<I53>, std::unique_ptr<I54>, std::unique_ptr<I55>, std::unique_ptr<I56>, std::unique_ptr<I57>, std::unique_ptr<I58>, std::unique_ptr<I59>) { } };
struct C6 { BOOST_DI_INJECT(C6, std::unique_ptr<I60>, std::unique_ptr<I61>, std::unique_ptr<I62>, std::unique_ptr<I63>, std::unique_ptr<I64>, std::unique_ptr<I65>, std::unique_ptr<I66>, std::unique_ptr<I67>, std::unique_ptr<I68>, std::unique_ptr<I69>) { } };
struct C7 { BOOST_DI_INJECT(C7, std::unique_ptr<I70>, std::unique_ptr<I71>, std::unique_ptr<I72>, std::unique_ptr<I73>, std::unique_ptr<I74>, std::unique_ptr<I75>, std::unique_ptr<I76>, std::unique_ptr<I77>, std::unique_ptr<I78>, std::unique_ptr<I79>) { } };
struct C8 { BOOST_DI_INJECT(C8, std::unique_ptr<I80>, std::unique_ptr<I81>, std::unique_ptr<I82>, std::unique_ptr<I83>, std::unique_ptr<I84>, std::unique_ptr<I85>, std::unique_ptr<I86>, std::unique_ptr<I87>, std::unique_ptr<I88>, std::unique_ptr<I89>) { } };
struct C9 { BOOST_DI_INJECT(C9, std::unique_ptr<I90>, std::unique_ptr<I91>, std::unique_ptr<I92>, std::unique_ptr<I93>, std::unique_ptr<I94>, std::unique_ptr<I95>, std::unique_ptr<I96>, std::unique_ptr<I97>, std::unique_ptr<I98>, std::unique_ptr<I99>) { } };
struct Complex { BOOST_DI_INJECT(Complex, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9) { } };
// clang-format on

auto module = [] {
  // clang-format off
  auto i = di::make_injector(
    di::bind<I00>.to<Impl00>()
  , di::bind<I01>.to<Impl01>()
  , di::bind<I02>.to<Impl02>()
  , di::bind<I03>.to<Impl03>()
  , di::bind<I04>.to<Impl04>()
  , di::bind<I05>.to<Impl05>()
  , di::bind<I06>.to<Impl06>()
  , di::bind<I07>.to<Impl07>()
  , di::bind<I08>.to<Impl08>()
  , di::bind<I09>.to<Impl09>()
  , di::bind<I10>.to<Impl10>()
  , di::bind<I11>.to<Impl11>()
  , di::bind<I12>.to<Impl12>()
  , di::bind<I13>.to<Impl13>()
  , di::bind<I14>.to<Impl14>()
  , di::bind<I15>.to<Impl15>()
  , di::bind<I16>.to<Impl16>()
  , di::bind<I17>.to<Impl17>()
  , di::bind<I18>.to<Impl18>()
  , di::bind<I19>.to<Impl19>()
  , di::bind<I20>.to<Impl20>()
  , di::bind<I21>.to<Impl21>()
  , di::bind<I22>.to<Impl22>()
  , di::bind<I23>.to<Impl23>()
  , di::bind<I24>.to<Impl24>()
  , di::bind<I25>.to<Impl25>()
  , di::bind<I26>.to<Impl26>()
  , di::bind<I27>.to<Impl27>()
  , di::bind<I28>.to<Impl28>()
  , di::bind<I29>.to<Impl29>()
  , di::bind<I30>.to<Impl30>()
  , di::bind<I31>.to<Impl31>()
  , di::bind<I32>.to<Impl32>()
  , di::bind<I33>.to<Impl33>()
  , di::bind<I34>.to<Impl34>()
  , di::bind<I35>.to<Impl35>()
  , di::bind<I36>.to<Impl36>()
  , di::bind<I37>.to<Impl37>()
  , di::bind<I38>.to<Impl38>()
  , di::bind<I39>.to<Impl39>()
  , di::bind<I40>.to<Impl40>()
  , di::bind<I41>.to<Impl41>()
  , di::bind<I42>.to<Impl42>()
  , di::bind<I43>.to<Impl43>()
  , di::bind<I44>.to<Impl44>()
  , di::bind<I45>.to<Impl45>()
  , di::bind<I46>.to<Impl46>()
  , di::bind<I47>.to<Impl47>()
  , di::bind<I48>.to<Impl48>()
  , di::bind<I49>.to<Impl49>()
  , di::bind<I50>.to<Impl50>()
  , di::bind<I51>.to<Impl51>()
  , di::bind<I52>.to<Impl52>()
  , di::bind<I53>.to<Impl53>()
  , di::bind<I54>.to<Impl54>()
  , di::bind<I55>.to<Impl55>()
  , di::bind<I56>.to<Impl56>()
  , di::bind<I57>.to<Impl57>()
  , di::bind<I58>.to<Impl58>()
  , di::bind<I59>.to<Impl59>()
  , di::bind<I60>.to<Impl60>()
  , di::bind<I61>.to<Impl61>()
  , di::bind<I62>.to<Impl62>()
  , di::bind<I63>.to<Impl63>()
  , di::bind<I64>.to<Impl64>()
  , di::bind<I65>.to<Impl65>()
  , di::bind<I66>.to<Impl66>()
  , di::bind<I67>.to<Impl67>()
  , di::bind<I68>.to<Impl68>()
  , di::bind<I69>.to<Impl69>()
  , di::bind<I70>.to<Impl70>()
  , di::bind<I71>.to<Impl71>()
  , di::bind<I72>.to<Impl72>()
  , di::bind<I73>.to<Impl73>()
  , di::bind<I74>.to<Impl74>()
  , di::bind<I75>.to<Impl75>()
  , di::bind<I76>.to<Impl76>()
  , di::bind<I77>.to<Impl77>()
  , di::bind<I78>.to<Impl78>()
  , di::bind<I79>.to<Impl79>()
  , di::bind<I80>.to<Impl80>()
  , di::bind<I81>.to<Impl81>()
  , di::bind<I82>.to<Impl82>()
  , di::bind<I83>.to<Impl83>()
  , di::bind<I84>.to<Impl84>()
  , di::bind<I85>.to<Impl85>()
  , di::bind<I86>.to<Impl86>()
  , di::bind<I87>.to<Impl87>()
  , di::bind<I88>.to<Impl88>()
  , di::bind<I89>.to<Impl89>()
  , di::bind<I90>.to<Impl90>()
  , di::bind<I91>.to<Impl91>()
  , di::bind<I92>.to<Impl92>()
  , di::bind<I93>.to<Impl93>()
  , di::bind<I94>.to<Impl94>()
  , di::bind<I95>.to<Impl95>()
  , di::bind<I96>.to<Impl96>()
  , di::bind<I97>.to<Impl97>()
  , di::bind<I98>.to<Impl98>()
  , di::bind<I99>.to<Impl99>()
  );
  // clang-format off

  using injector_t = decltype(i);
  struct m : injector_t {
    using injector_t::injector_t;
  } injector{static_cast<injector_t &&>(i)};
  return injector;
};

int main() {
  auto injector = di::make_injector(module());
  injector.create<Complex>();
}


================================================
FILE: benchmark/create_complex/dicpp.cpp
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#include <memory>
#include <di/registry.hpp>
#include <di/injector.hpp>
#include <di/constructor.hpp>

// clang-format off
struct X00 { DI_CONSTRUCTOR(X00, ()) { } };
struct X01 { DI_CONSTRUCTOR(X01, (X00)) { } };
struct X02 { DI_CONSTRUCTOR(X02, (X00, X01)) { } };
struct X03 { DI_CONSTRUCTOR(X03, (X00, X01, X02)) { } };
struct X04 { DI_CONSTRUCTOR(X04, (X00, X01, X02, X03)) { } };
struct X05 { DI_CONSTRUCTOR(X05, (X00, X01, X02, X03, X04)) { } };
struct X06 { DI_CONSTRUCTOR(X06, (X00, X01, X02, X03, X04, X05)) { } };
struct X07 { DI_CONSTRUCTOR(X07, (X00, X01, X02, X03, X04, X05, X06)) { } };
struct X08 { DI_CONSTRUCTOR(X08, (X00, X01, X02, X03, X04, X05, X06, X07)) { } };
struct X09 { DI_CONSTRUCTOR(X09, (X00, X01, X02, X03, X04, X05, X06, X07, X08)) { } };
struct X10 { DI_CONSTRUCTOR(X10, (X00, X01, X02, X03, X04, X05, X06, X07, X08, X09)) { } };
struct X11 { DI_CONSTRUCTOR(X11, (X01, X02, X03, X04, X05, X06, X07, X08, X09, X10)) { } };
struct X12 { DI_CONSTRUCTOR(X12, (X02, X03, X04, X05, X06, X07, X08, X09, X10, X11)) { } };
struct X13 { DI_CONSTRUCTOR(X13, (X03, X04, X05, X06, X07, X08, X09, X10, X11, X12)) { } };
struct X14 { DI_CONSTRUCTOR(X14, (X04, X05, X06, X07, X08, X09, X10, X11, X12, X13)) { } };
struct X15 { DI_CONSTRUCTOR(X15, (X05, X06, X07, X08, X09, X10, X11, X12, X13, X14)) { } };
struct X16 { DI_CONSTRUCTOR(X16, (X06, X07, X08, X09, X10, X11, X12, X13, X14, X15)) { } };
struct X17 { DI_CONSTRUCTOR(X17, (X07, X08, X09, X10, X11, X12, X13, X14, X15, X16)) { } };
struct X18 { DI_CONSTRUCTOR(X18, (X08, X09, X10, X11, X12, X13, X14, X15, X16, X17)) { } };
struct X19 { DI_CONSTRUCTOR(X19, (X09, X10, X11, X12, X13, X14, X15, X16, X17, X18)) { } };
struct X20 { DI_CONSTRUCTOR(X20, (X10, X11, X12, X13, X14, X15, X16, X17, X18, X19)) { } };
struct X21 { DI_CONSTRUCTOR(X21, (X11, X12, X13, X14, X15, X16, X17, X18, X19, X20)) { } };
struct X22 { DI_CONSTRUCTOR(X22, (X12, X13, X14, X15, X16, X17, X18, X19, X20, X21)) { } };
struct X23 { DI_CONSTRUCTOR(X23, (X13, X14, X15, X16, X17, X18, X19, X20, X21, X22)) { } };
struct X24 { DI_CONSTRUCTOR(X24, (X14, X15, X16, X17, X18, X19, X20, X21, X22, X23)) { } };
struct X25 { DI_CONSTRUCTOR(X25, (X15, X16, X17, X18, X19, X20, X21, X22, X23, X24)) { } };
struct X26 { DI_CONSTRUCTOR(X26, (X16, X17, X18, X19, X20, X21, X22, X23, X24, X25)) { } };
struct X27 { DI_CONSTRUCTOR(X27, (X17, X18, X19, X20, X21, X22, X23, X24, X25, X26)) { } };
struct X28 { DI_CONSTRUCTOR(X28, (X18, X19, X20, X21, X22, X23, X24, X25, X26, X27)) { } };
struct X29 { DI_CONSTRUCTOR(X29, (X19, X20, X21, X22, X23, X24, X25, X26, X27, X28)) { } };
struct X30 { DI_CONSTRUCTOR(X30, (X20, X21, X22, X23, X24, X25, X26, X27, X28, X29)) { } };
struct X31 { DI_CONSTRUCTOR(X31, (X21, X22, X23, X24, X25, X26, X27, X28, X29, X30)) { } };
struct X32 { DI_CONSTRUCTOR(X32, (X22, X23, X24, X25, X26, X27, X28, X29, X30, X31)) { } };
struct X33 { DI_CONSTRUCTOR(X33, (X23, X24, X25, X26, X27, X28, X29, X30, X31, X32)) { } };
struct X34 { DI_CONSTRUCTOR(X34, (X24, X25, X26, X27, X28, X29, X30, X31, X32, X33)) { } };
struct X35 { DI_CONSTRUCTOR(X35, (X25, X26, X27, X28, X29, X30, X31, X32, X33, X34)) { } };
struct X36 { DI_CONSTRUCTOR(X36, (X26, X27, X28, X29, X30, X31, X32, X33, X34, X35)) { } };
struct X37 { DI_CONSTRUCTOR(X37, (X27, X28, X29, X30, X31, X32, X33, X34, X35, X36)) { } };
struct X38 { DI_CONSTRUCTOR(X38, (X28, X29, X30, X31, X32, X33, X34, X35, X36, X37)) { } };
struct X39 { DI_CONSTRUCTOR(X39, (X29, X30, X31, X32, X33, X34, X35, X36, X37, X38)) { } };
struct X40 { DI_CONSTRUCTOR(X40, (X30, X31, X32, X33, X34, X35, X36, X37, X38, X39)) { } };
struct X41 { DI_CONSTRUCTOR(X41, (X31, X32, X33, X34, X35, X36, X37, X38, X39, X40)) { } };
struct X42 { DI_CONSTRUCTOR(X42, (X32, X33, X34, X35, X36, X37, X38, X39, X40, X41)) { } };
struct X43 { DI_CONSTRUCTOR(X43, (X33, X34, X35, X36, X37, X38, X39, X40, X41, X42)) { } };
struct X44 { DI_CONSTRUCTOR(X44, (X34, X35, X36, X37, X38, X39, X40, X41, X42, X43)) { } };
struct X45 { DI_CONSTRUCTOR(X45, (X35, X36, X37, X38, X39, X40, X41, X42, X43, X44)) { } };
struct X46 { DI_CONSTRUCTOR(X46, (X36, X37, X38, X39, X40, X41, X42, X43, X44, X45)) { } };
struct X47 { DI_CONSTRUCTOR(X47, (X37, X38, X39, X40, X41, X42, X43, X44, X45, X46)) { } };
struct X48 { DI_CONSTRUCTOR(X48, (X38, X39, X40, X41, X42, X43, X44, X45, X46, X47)) { } };
struct X49 { DI_CONSTRUCTOR(X49, (X39, X40, X41, X42, X43, X44, X45, X46, X47, X48)) { } };
struct X50 { DI_CONSTRUCTOR(X50, (X40, X41, X42, X43, X44, X45, X46, X47, X48, X49)) { } };
struct X51 { DI_CONSTRUCTOR(X51, (X41, X42, X43, X44, X45, X46, X47, X48, X49, X50)) { } };
struct X52 { DI_CONSTRUCTOR(X52, (X42, X43, X44, X45, X46, X47, X48, X49, X50, X51)) { } };
struct X53 { DI_CONSTRUCTOR(X53, (X43, X44, X45, X46, X47, X48, X49, X50, X51, X52)) { } };
struct X54 { DI_CONSTRUCTOR(X54, (X44, X45, X46, X47, X48, X49, X50, X51, X52, X53)) { } };
struct X55 { DI_CONSTRUCTOR(X55, (X45, X46, X47, X48, X49, X50, X51, X52, X53, X54)) { } };
struct X56 { DI_CONSTRUCTOR(X56, (X46, X47, X48, X49, X50, X51, X52, X53, X54, X55)) { } };
struct X57 { DI_CONSTRUCTOR(X57, (X47, X48, X49, X50, X51, X52, X53, X54, X55, X56)) { } };
struct X58 { DI_CONSTRUCTOR(X58, (X48, X49, X50, X51, X52, X53, X54, X55, X56, X57)) { } };
struct X59 { DI_CONSTRUCTOR(X59, (X49, X50, X51, X52, X53, X54, X55, X56, X57, X58)) { } };
struct X60 { DI_CONSTRUCTOR(X60, (X50, X51, X52, X53, X54, X55, X56, X57, X58, X59)) { } };
struct X61 { DI_CONSTRUCTOR(X61, (X51, X52, X53, X54, X55, X56, X57, X58, X59, X60)) { } };
struct X62 { DI_CONSTRUCTOR(X62, (X52, X53, X54, X55, X56, X57, X58, X59, X60, X61)) { } };
struct X63 { DI_CONSTRUCTOR(X63, (X53, X54, X55, X56, X57, X58, X59, X60, X61, X62)) { } };
struct X64 { DI_CONSTRUCTOR(X64, (X54, X55, X56, X57, X58, X59, X60, X61, X62, X63)) { } };
struct X65 { DI_CONSTRUCTOR(X65, (X55, X56, X57, X58, X59, X60, X61, X62, X63, X64)) { } };
struct X66 { DI_CONSTRUCTOR(X66, (X56, X57, X58, X59, X60, X61, X62, X63, X64, X65)) { } };
struct X67 { DI_CONSTRUCTOR(X67, (X57, X58, X59, X60, X61, X62, X63, X64, X65, X66)) { } };
struct X68 { DI_CONSTRUCTOR(X68, (X58, X59, X60, X61, X62, X63, X64, X65, X66, X67)) { } };
struct X69 { DI_CONSTRUCTOR(X69, (X59, X60, X61, X62, X63, X64, X65, X66, X67, X68)) { } };
struct X70 { DI_CONSTRUCTOR(X70, (X60, X61, X62, X63, X64, X65, X66, X67, X68, X69)) { } };
struct X71 { DI_CONSTRUCTOR(X71, (X61, X62, X63, X64, X65, X66, X67, X68, X69, X70)) { } };
struct X72 { DI_CONSTRUCTOR(X72, (X62, X63, X64, X65, X66, X67, X68, X69, X70, X71)) { } };
struct X73 { DI_CONSTRUCTOR(X73, (X63, X64, X65, X66, X67, X68, X69, X70, X71, X72)) { } };
struct X74 { DI_CONSTRUCTOR(X74, (X64, X65, X66, X67, X68, X69, X70, X71, X72, X73)) { } };
struct X75 { DI_CONSTRUCTOR(X75, (X65, X66, X67, X68, X69, X70, X71, X72, X73, X74)) { } };
struct X76 { DI_CONSTRUCTOR(X76, (X66, X67, X68, X69, X70, X71, X72, X73, X74, X75)) { } };
struct X77 { DI_CONSTRUCTOR(X77, (X67, X68, X69, X70, X71, X72, X73, X74, X75, X76)) { } };
struct X78 { DI_CONSTRUCTOR(X78, (X68, X69, X70, X71, X72, X73, X74, X75, X76, X77)) { } };
struct X79 { DI_CONSTRUCTOR(X79, (X69, X70, X71, X72, X73, X74, X75, X76, X77, X78)) { } };
struct X80 { DI_CONSTRUCTOR(X80, (X70, X71, X72, X73, X74, X75, X76, X77, X78, X79)) { } };
struct X81 { DI_CONSTRUCTOR(X81, (X71, X72, X73, X74, X75, X76, X77, X78, X79, X80)) { } };
struct X82 { DI_CONSTRUCTOR(X82, (X72, X73, X74, X75, X76, X77, X78, X79, X80, X81)) { } };
struct X83 { DI_CONSTRUCTOR(X83, (X73, X74, X75, X76, X77, X78, X79, X80, X81, X82)) { } };
struct X84 { DI_CONSTRUCTOR(X84, (X74, X75, X76, X77, X78, X79, X80, X81, X82, X83)) { } };
struct X85 { DI_CONSTRUCTOR(X85, (X75, X76, X77, X78, X79, X80, X81, X82, X83, X84)) { } };
struct X86 { DI_CONSTRUCTOR(X86, (X76, X77, X78, X79, X80, X81, X82, X83, X84, X85)) { } };
struct X87 { DI_CONSTRUCTOR(X87, (X77, X78, X79, X80, X81, X82, X83, X84, X85, X86)) { } };
struct X88 { DI_CONSTRUCTOR(X88, (X78, X79, X80, X81, X82, X83, X84, X85, X86, X87)) { } };
struct X89 { DI_CONSTRUCTOR(X89, (X79, X80, X81, X82, X83, X84, X85, X86, X87, X88)) { } };
struct X90 { DI_CONSTRUCTOR(X90, (X80, X81, X82, X83, X84, X85, X86, X87, X88, X89)) { } };
struct X91 { DI_CONSTRUCTOR(X91, (X81, X82, X83, X84, X85, X86, X87, X88, X89, X90)) { } };
struct X92 { DI_CONSTRUCTOR(X92, (X82, X83, X84, X85, X86, X87, X88, X89, X90, X91)) { } };
struct X93 { DI_CONSTRUCTOR(X93, (X83, X84, X85, X86, X87, X88, X89, X90, X91, X92)) { } };
struct X94 { DI_CONSTRUCTOR(X94, (X84, X85, X86, X87, X88, X89, X90, X91, X92, X93)) { } };
struct X95 { DI_CONSTRUCTOR(X95, (X85, X86, X87, X88, X89, X90, X91, X92, X93, X94)) { } };
struct X96 { DI_CONSTRUCTOR(X96, (X86, X87, X88, X89, X90, X91, X92, X93, X94, X95)) { } };
struct X97 { DI_CONSTRUCTOR(X97, (X87, X88, X89, X90, X91, X92, X93, X94, X95, X96)) { } };
struct X98 { DI_CONSTRUCTOR(X98, (X88, X89, X90, X91, X92, X93, X94, X95, X96, X97)) { } };
struct X99 { DI_CONSTRUCTOR(X99, (X89, X90, X91, X92, X93, X94, X95, X96, X97, X98)) { } };
struct I00 { virtual ~I00() noexcept = default; virtual void dummy() = 0; }; struct Impl00 : I00 { DI_CONSTRUCTOR(Impl00, (X00, X01, X02, X03, X04, X05, X06, X07, X08, X09)) { } void dummy() override { } };
struct I01 { virtual ~I01() noexcept = default; virtual void dummy() = 0; }; struct Impl01 : I01 { DI_CONSTRUCTOR(Impl01, (X01, X02, X03, X04, X05, X06, X07, X08, X09, X10)) { } void dummy() override { } };
struct I02 { virtual ~I02() noexcept = default; virtual void dummy() = 0; }; struct Impl02 : I02 { DI_CONSTRUCTOR(Impl02, (X02, X03, X04, X05, X06, X07, X08, X09, X10, X11)) { } void dummy() override { } };
struct I03 { virtual ~I03() noexcept = default; virtual void dummy() = 0; }; struct Impl03 : I03 { DI_CONSTRUCTOR(Impl03, (X03, X04, X05, X06, X07, X08, X09, X10, X11, X12)) { } void dummy() override { } };
struct I04 { virtual ~I04() noexcept = default; virtual void dummy() = 0; }; struct Impl04 : I04 { DI_CONSTRUCTOR(Impl04, (X04, X05, X06, X07, X08, X09, X10, X11, X12, X13)) { } void dummy() override { } };
struct I05 { virtual ~I05() noexcept = default; virtual void dummy() = 0; }; struct Impl05 : I05 { DI_CONSTRUCTOR(Impl05, (X05, X06, X07, X08, X09, X10, X11, X12, X13, X14)) { } void dummy() override { } };
struct I06 { virtual ~I06() noexcept = default; virtual void dummy() = 0; }; struct Impl06 : I06 { DI_CONSTRUCTOR(Impl06, (X06, X07, X08, X09, X10, X11, X12, X13, X14, X15)) { } void dummy() override { } };
struct I07 { virtual ~I07() noexcept = default; virtual void dummy() = 0; }; struct Impl07 : I07 { DI_CONSTRUCTOR(Impl07, (X07, X08, X09, X10, X11, X12, X13, X14, X15, X16)) { } void dummy() override { } };
struct I08 { virtual ~I08() noexcept = default; virtual void dummy() = 0; }; struct Impl08 : I08 { DI_CONSTRUCTOR(Impl08, (X08, X09, X10, X11, X12, X13, X14, X15, X16, X17)) { } void dummy() override { } };
struct I09 { virtual ~I09() noexcept = default; virtual void dummy() = 0; }; struct Impl09 : I09 { DI_CONSTRUCTOR(Impl09, (X09, X10, X11, X12, X13, X14, X15, X16, X17, X18)) { } void dummy() override { } };
struct I10 { virtual ~I10() noexcept = default; virtual void dummy() = 0; }; struct Impl10 : I10 { DI_CONSTRUCTOR(Impl10, (X10, X11, X12, X13, X14, X15, X16, X17, X18, X19)) { } void dummy() override { } };
struct I11 { virtual ~I11() noexcept = default; virtual void dummy() = 0; }; struct Impl11 : I11 { DI_CONSTRUCTOR(Impl11, (X11, X12, X13, X14, X15, X16, X17, X18, X19, X20)) { } void dummy() override { } };
struct I12 { virtual ~I12() noexcept = default; virtual void dummy() = 0; }; struct Impl12 : I12 { DI_CONSTRUCTOR(Impl12, (X12, X13, X14, X15, X16, X17, X18, X19, X20, X21)) { } void dummy() override { } };
struct I13 { virtual ~I13() noexcept = default; virtual void dummy() = 0; }; struct Impl13 : I13 { DI_CONSTRUCTOR(Impl13, (X13, X14, X15, X16, X17, X18, X19, X20, X21, X22)) { } void dummy() override { } };
struct I14 { virtual ~I14() noexcept = default; virtual void dummy() = 0; }; struct Impl14 : I14 { DI_CONSTRUCTOR(Impl14, (X14, X15, X16, X17, X18, X19, X20, X21, X22, X23)) { } void dummy() override { } };
struct I15 { virtual ~I15() noexcept = default; virtual void dummy() = 0; }; struct Impl15 : I15 { DI_CONSTRUCTOR(Impl15, (X15, X16, X17, X18, X19, X20, X21, X22, X23, X24)) { } void dummy() override { } };
struct I16 { virtual ~I16() noexcept = default; virtual void dummy() = 0; }; struct Impl16 : I16 { DI_CONSTRUCTOR(Impl16, (X16, X17, X18, X19, X20, X21, X22, X23, X24, X25)) { } void dummy() override { } };
struct I17 { virtual ~I17() noexcept = default; virtual void dummy() = 0; }; struct Impl17 : I17 { DI_CONSTRUCTOR(Impl17, (X17, X18, X19, X20, X21, X22, X23, X24, X25, X26)) { } void dummy() override { } };
struct I18 { virtual ~I18() noexcept = default; virtual void dummy() = 0; }; struct Impl18 : I18 { DI_CONSTRUCTOR(Impl18, (X18, X19, X20, X21, X22, X23, X24, X25, X26, X27)) { } void dummy() override { } };
struct I19 { virtual ~I19() noexcept = default; virtual void dummy() = 0; }; struct Impl19 : I19 { DI_CONSTRUCTOR(Impl19, (X19, X20, X21, X22, X23, X24, X25, X26, X27, X28)) { } void dummy() override { } };
struct I20 { virtual ~I20() noexcept = default; virtual void dummy() = 0; }; struct Impl20 : I20 { DI_CONSTRUCTOR(Impl20, (X20, X21, X22, X23, X24, X25, X26, X27, X28, X29)) { } void dummy() override { } };
struct I21 { virtual ~I21() noexcept = default; virtual void dummy() = 0; }; struct Impl21 : I21 { DI_CONSTRUCTOR(Impl21, (X21, X22, X23, X24, X25, X26, X27, X28, X29, X30)) { } void dummy() override { } };
struct I22 { virtual ~I22() noexcept = default; virtual void dummy() = 0; }; struct Impl22 : I22 { DI_CONSTRUCTOR(Impl22, (X22, X23, X24, X25, X26, X27, X28, X29, X30, X31)) { } void dummy() override { } };
struct I23 { virtual ~I23() noexcept = default; virtual void dummy() = 0; }; struct Impl23 : I23 { DI_CONSTRUCTOR(Impl23, (X23, X24, X25, X26, X27, X28, X29, X30, X31, X32)) { } void dummy() override { } };
struct I24 { virtual ~I24() noexcept = default; virtual void dummy() = 0; }; struct Impl24 : I24 { DI_CONSTRUCTOR(Impl24, (X24, X25, X26, X27, X28, X29, X30, X31, X32, X33)) { } void dummy() override { } };
struct I25 { virtual ~I25() noexcept = default; virtual void dummy() = 0; }; struct Impl25 : I25 { DI_CONSTRUCTOR(Impl25, (X25, X26, X27, X28, X29, X30, X31, X32, X33, X34)) { } void dummy() override { } };
struct I26 { virtual ~I26() noexcept = default; virtual void dummy() = 0; }; struct Impl26 : I26 { DI_CONSTRUCTOR(Impl26, (X26, X27, X28, X29, X30, X31, X32, X33, X34, X35)) { } void dummy() override { } };
struct I27 { virtual ~I27() noexcept = default; virtual void dummy() = 0; }; struct Impl27 : I27 { DI_CONSTRUCTOR(Impl27, (X27, X28, X29, X30, X31, X32, X33, X34, X35, X36)) { } void dummy() override { } };
struct I28 { virtual ~I28() noexcept = default; virtual void dummy() = 0; }; struct Impl28 : I28 { DI_CONSTRUCTOR(Impl28, (X28, X29, X30, X31, X32, X33, X34, X35, X36, X37)) { } void dummy() override { } };
struct I29 { virtual ~I29() noexcept = default; virtual void dummy() = 0; }; struct Impl29 : I29 { DI_CONSTRUCTOR(Impl29, (X29, X30, X31, X32, X33, X34, X35, X36, X37, X38)) { } void dummy() override { } };
struct I30 { virtual ~I30() noexcept = default; virtual void dummy() = 0; }; struct Impl30 : I30 { DI_CONSTRUCTOR(Impl30, (X30, X31, X32, X33, X34, X35, X36, X37, X38, X39)) { } void dummy() override { } };
struct I31 { virtual ~I31() noexcept = default; virtual void dummy() = 0; }; struct Impl31 : I31 { DI_CONSTRUCTOR(Impl31, (X31, X32, X33, X34, X35, X36, X37, X38, X39, X40)) { } void dummy() override { } };
struct I32 { virtual ~I32() noexcept = default; virtual void dummy() = 0; }; struct Impl32 : I32 { DI_CONSTRUCTOR(Impl32, (X32, X33, X34, X35, X36, X37, X38, X39, X40, X41)) { } void dummy() override { } };
struct I33 { virtual ~I33() noexcept = default; virtual void dummy() = 0; }; struct Impl33 : I33 { DI_CONSTRUCTOR(Impl33, (X33, X34, X35, X36, X37, X38, X39, X40, X41, X42)) { } void dummy() override { } };
struct I34 { virtual ~I34() noexcept = default; virtual void dummy() = 0; }; struct Impl34 : I34 { DI_CONSTRUCTOR(Impl34, (X34, X35, X36, X37, X38, X39, X40, X41, X42, X43)) { } void dummy() override { } };
struct I35 { virtual ~I35() noexcept = default; virtual void dummy() = 0; }; struct Impl35 : I35 { DI_CONSTRUCTOR(Impl35, (X35, X36, X37, X38, X39, X40, X41, X42, X43, X44)) { } void dummy() override { } };
struct I36 { virtual ~I36() noexcept = default; virtual void dummy() = 0; }; struct Impl36 : I36 { DI_CONSTRUCTOR(Impl36, (X36, X37, X38, X39, X40, X41, X42, X43, X44, X45)) { } void dummy() override { } };
struct I37 { virtual ~I37() noexcept = default; virtual void dummy() = 0; }; struct Impl37 : I37 { DI_CONSTRUCTOR(Impl37, (X37, X38, X39, X40, X41, X42, X43, X44, X45, X46)) { } void dummy() override { } };
struct I38 { virtual ~I38() noexcept = default; virtual void dummy() = 0; }; struct Impl38 : I38 { DI_CONSTRUCTOR(Impl38, (X38, X39, X40, X41, X42, X43, X44, X45, X46, X47)) { } void dummy() override { } };
struct I39 { virtual ~I39() noexcept = default; virtual void dummy() = 0; }; struct Impl39 : I39 { DI_CONSTRUCTOR(Impl39, (X39, X40, X41, X42, X43, X44, X45, X46, X47, X48)) { } void dummy() override { } };
struct I40 { virtual ~I40() noexcept = default; virtual void dummy() = 0; }; struct Impl40 : I40 { DI_CONSTRUCTOR(Impl40, (X40, X41, X42, X43, X44, X45, X46, X47, X48, X49)) { } void dummy() override { } };
struct I41 { virtual ~I41() noexcept = default; virtual void dummy() = 0; }; struct Impl41 : I41 { DI_CONSTRUCTOR(Impl41, (X41, X42, X43, X44, X45, X46, X47, X48, X49, X50)) { } void dummy() override { } };
struct I42 { virtual ~I42() noexcept = default; virtual void dummy() = 0; }; struct Impl42 : I42 { DI_CONSTRUCTOR(Impl42, (X42, X43, X44, X45, X46, X47, X48, X49, X50, X51)) { } void dummy() override { } };
struct I43 { virtual ~I43() noexcept = default; virtual void dummy() = 0; }; struct Impl43 : I43 { DI_CONSTRUCTOR(Impl43, (X43, X44, X45, X46, X47, X48, X49, X50, X51, X52)) { } void dummy() override { } };
struct I44 { virtual ~I44() noexcept = default; virtual void dummy() = 0; }; struct Impl44 : I44 { DI_CONSTRUCTOR(Impl44, (X44, X45, X46, X47, X48, X49, X50, X51, X52, X53)) { } void dummy() override { } };
struct I45 { virtual ~I45() noexcept = default; virtual void dummy() = 0; }; struct Impl45 : I45 { DI_CONSTRUCTOR(Impl45, (X45, X46, X47, X48, X49, X50, X51, X52, X53, X54)) { } void dummy() override { } };
struct I46 { virtual ~I46() noexcept = default; virtual void dummy() = 0; }; struct Impl46 : I46 { DI_CONSTRUCTOR(Impl46, (X46, X47, X48, X49, X50, X51, X52, X53, X54, X55)) { } void dummy() override { } };
struct I47 { virtual ~I47() noexcept = default; virtual void dummy() = 0; }; struct Impl47 : I47 { DI_CONSTRUCTOR(Impl47, (X47, X48, X49, X50, X51, X52, X53, X54, X55, X56)) { } void dummy() override { } };
struct I48 { virtual ~I48() noexcept = default; virtual void dummy() = 0; }; struct Impl48 : I48 { DI_CONSTRUCTOR(Impl48, (X48, X49, X50, X51, X52, X53, X54, X55, X56, X57)) { } void dummy() override { } };
struct I49 { virtual ~I49() noexcept = default; virtual void dummy() = 0; }; struct Impl49 : I49 { DI_CONSTRUCTOR(Impl49, (X49, X50, X51, X52, X53, X54, X55, X56, X57, X58)) { } void dummy() override { } };
struct I50 { virtual ~I50() noexcept = default; virtual void dummy() = 0; }; struct Impl50 : I50 { DI_CONSTRUCTOR(Impl50, (X50, X51, X52, X53, X54, X55, X56, X57, X58, X59)) { } void dummy() override { } };
struct I51 { virtual ~I51() noexcept = default; virtual void dummy() = 0; }; struct Impl51 : I51 { DI_CONSTRUCTOR(Impl51, (X51, X52, X53, X54, X55, X56, X57, X58, X59, X60)) { } void dummy() override { } };
struct I52 { virtual ~I52() noexcept = default; virtual void dummy() = 0; }; struct Impl52 : I52 { DI_CONSTRUCTOR(Impl52, (X52, X53, X54, X55, X56, X57, X58, X59, X60, X61)) { } void dummy() override { } };
struct I53 { virtual ~I53() noexcept = default; virtual void dummy() = 0; }; struct Impl53 : I53 { DI_CONSTRUCTOR(Impl53, (X53, X54, X55, X56, X57, X58, X59, X60, X61, X62)) { } void dummy() override { } };
struct I54 { virtual ~I54() noexcept = default; virtual void dummy() = 0; }; struct Impl54 : I54 { DI_CONSTRUCTOR(Impl54, (X54, X55, X56, X57, X58, X59, X60, X61, X62, X63)) { } void dummy() override { } };
struct I55 { virtual ~I55() noexcept = default; virtual void dummy() = 0; }; struct Impl55 : I55 { DI_CONSTRUCTOR(Impl55, (X55, X56, X57, X58, X59, X60, X61, X62, X63, X64)) { } void dummy() override { } };
struct I56 { virtual ~I56() noexcept = default; virtual void dummy() = 0; }; struct Impl56 : I56 { DI_CONSTRUCTOR(Impl56, (X56, X57, X58, X59, X60, X61, X62, X63, X64, X65)) { } void dummy() override { } };
struct I57 { virtual ~I57() noexcept = default; virtual void dummy() = 0; }; struct Impl57 : I57 { DI_CONSTRUCTOR(Impl57, (X57, X58, X59, X60, X61, X62, X63, X64, X65, X66)) { } void dummy() override { } };
struct I58 { virtual ~I58() noexcept = default; virtual void dummy() = 0; }; struct Impl58 : I58 { DI_CONSTRUCTOR(Impl58, (X58, X59, X60, X61, X62, X63, X64, X65, X66, X67)) { } void dummy() override { } };
struct I59 { virtual ~I59() noexcept = default; virtual void dummy() = 0; }; struct Impl59 : I59 { DI_CONSTRUCTOR(Impl59, (X59, X60, X61, X62, X63, X64, X65, X66, X67, X68)) { } void dummy() override { } };
struct I60 { virtual ~I60() noexcept = default; virtual void dummy() = 0; }; struct Impl60 : I60 { DI_CONSTRUCTOR(Impl60, (X60, X61, X62, X63, X64, X65, X66, X67, X68, X69)) { } void dummy() override { } };
struct I61 { virtual ~I61() noexcept = default; virtual void dummy() = 0; }; struct Impl61 : I61 { DI_CONSTRUCTOR(Impl61, (X61, X62, X63, X64, X65, X66, X67, X68, X69, X70)) { } void dummy() override { } };
struct I62 { virtual ~I62() noexcept = default; virtual void dummy() = 0; }; struct Impl62 : I62 { DI_CONSTRUCTOR(Impl62, (X62, X63, X64, X65, X66, X67, X68, X69, X70, X71)) { } void dummy() override { } };
struct I63 { virtual ~I63() noexcept = default; virtual void dummy() = 0; }; struct Impl63 : I63 { DI_CONSTRUCTOR(Impl63, (X63, X64, X65, X66, X67, X68, X69, X70, X71, X72)) { } void dummy() override { } };
struct I64 { virtual ~I64() noexcept = default; virtual void dummy() = 0; }; struct Impl64 : I64 { DI_CONSTRUCTOR(Impl64, (X64, X65, X66, X67, X68, X69, X70, X71, X72, X73)) { } void dummy() override { } };
struct I65 { virtual ~I65() noexcept = default; virtual void dummy() = 0; }; struct Impl65 : I65 { DI_CONSTRUCTOR(Impl65, (X65, X66, X67, X68, X69, X70, X71, X72, X73, X74)) { } void dummy() override { } };
struct I66 { virtual ~I66() noexcept = default; virtual void dummy() = 0; }; struct Impl66 : I66 { DI_CONSTRUCTOR(Impl66, (X66, X67, X68, X69, X70, X71, X72, X73, X74, X75)) { } void dummy() override { } };
struct I67 { virtual ~I67() noexcept = default; virtual void dummy() = 0; }; struct Impl67 : I67 { DI_CONSTRUCTOR(Impl67, (X67, X68, X69, X70, X71, X72, X73, X74, X75, X76)) { } void dummy() override { } };
struct I68 { virtual ~I68() noexcept = default; virtual void dummy() = 0; }; struct Impl68 : I68 { DI_CONSTRUCTOR(Impl68, (X68, X69, X70, X71, X72, X73, X74, X75, X76, X77)) { } void dummy() override { } };
struct I69 { virtual ~I69() noexcept = default; virtual void dummy() = 0; }; struct Impl69 : I69 { DI_CONSTRUCTOR(Impl69, (X69, X70, X71, X72, X73, X74, X75, X76, X77, X78)) { } void dummy() override { } };
struct I70 { virtual ~I70() noexcept = default; virtual void dummy() = 0; }; struct Impl70 : I70 { DI_CONSTRUCTOR(Impl70, (X70, X71, X72, X73, X74, X75, X76, X77, X78, X79)) { } void dummy() override { } };
struct I71 { virtual ~I71() noexcept = default; virtual void dummy() = 0; }; struct Impl71 : I71 { DI_CONSTRUCTOR(Impl71, (X71, X72, X73, X74, X75, X76, X77, X78, X79, X80)) { } void dummy() override { } };
struct I72 { virtual ~I72() noexcept = default; virtual void dummy() = 0; }; struct Impl72 : I72 { DI_CONSTRUCTOR(Impl72, (X72, X73, X74, X75, X76, X77, X78, X79, X80, X81)) { } void dummy() override { } };
struct I73 { virtual ~I73() noexcept = default; virtual void dummy() = 0; }; struct Impl73 : I73 { DI_CONSTRUCTOR(Impl73, (X73, X74, X75, X76, X77, X78, X79, X80, X81, X82)) { } void dummy() override { } };
struct I74 { virtual ~I74() noexcept = default; virtual void dummy() = 0; }; struct Impl74 : I74 { DI_CONSTRUCTOR(Impl74, (X74, X75, X76, X77, X78, X79, X80, X81, X82, X83)) { } void dummy() override { } };
struct I75 { virtual ~I75() noexcept = default; virtual void dummy() = 0; }; struct Impl75 : I75 { DI_CONSTRUCTOR(Impl75, (X75, X76, X77, X78, X79, X80, X81, X82, X83, X84)) { } void dummy() override { } };
struct I76 { virtual ~I76() noexcept = default; virtual void dummy() = 0; }; struct Impl76 : I76 { DI_CONSTRUCTOR(Impl76, (X76, X77, X78, X79, X80, X81, X82, X83, X84, X85)) { } void dummy() override { } };
struct I77 { virtual ~I77() noexcept = default; virtual void dummy() = 0; }; struct Impl77 : I77 { DI_CONSTRUCTOR(Impl77, (X77, X78, X79, X80, X81, X82, X83, X84, X85, X86)) { } void dummy() override { } };
struct I78 { virtual ~I78() noexcept = default; virtual void dummy() = 0; }; struct Impl78 : I78 { DI_CONSTRUCTOR(Impl78, (X78, X79, X80, X81, X82, X83, X84, X85, X86, X87)) { } void dummy() override { } };
struct I79 { virtual ~I79() noexcept = default; virtual void dummy() = 0; }; struct Impl79 : I79 { DI_CONSTRUCTOR(Impl79, (X79, X80, X81, X82, X83, X84, X85, X86, X87, X88)) { } void dummy() override { } };
struct I80 { virtual ~I80() noexcept = default; virtual void dummy() = 0; }; struct Impl80 : I80 { DI_CONSTRUCTOR(Impl80, (X80, X81, X82, X83, X84, X85, X86, X87, X88, X89)) { } void dummy() override { } };
struct I81 { virtual ~I81() noexcept = default; virtual void dummy() = 0; }; struct Impl81 : I81 { DI_CONSTRUCTOR(Impl81, (X81, X82, X83, X84, X85, X86, X87, X88, X89, X90)) { } void dummy() override { } };
struct I82 { virtual ~I82() noexcept = default; virtual void dummy() = 0; }; struct Impl82 : I82 { DI_CONSTRUCTOR(Impl82, (X82, X83, X84, X85, X86, X87, X88, X89, X90, X91)) { } void dummy() override { } };
struct I83 { virtual ~I83() noexcept = default; virtual void dummy() = 0; }; struct Impl83 : I83 { DI_CONSTRUCTOR(Impl83, (X83, X84, X85, X86, X87, X88, X89, X90, X91, X92)) { } void dummy() override { } };
struct I84 { virtual ~I84() noexcept = default; virtual void dummy() = 0; }; struct Impl84 : I84 { DI_CONSTRUCTOR(Impl84, (X84, X85, X86, X87, X88, X89, X90, X91, X92, X93)) { } void dummy() override { } };
struct I85 { virtual ~I85() noexcept = default; virtual void dummy() = 0; }; struct Impl85 : I85 { DI_CONSTRUCTOR(Impl85, (X85, X86, X87, X88, X89, X90, X91, X92, X93, X94)) { } void dummy() override { } };
struct I86 { virtual ~I86() noexcept = default; virtual void dummy() = 0; }; struct Impl86 : I86 { DI_CONSTRUCTOR(Impl86, (X86, X87, X88, X89, X90, X91, X92, X93, X94, X95)) { } void dummy() override { } };
struct I87 { virtual ~I87() noexcept = default; virtual void dummy() = 0; }; struct Impl87 : I87 { DI_CONSTRUCTOR(Impl87, (X87, X88, X89, X90, X91, X92, X93, X94, X95, X96)) { } void dummy() override { } };
struct I88 { virtual ~I88() noexcept = default; virtual void dummy() = 0; }; struct Impl88 : I88 { DI_CONSTRUCTOR(Impl88, (X88, X89, X90, X91, X92, X93, X94, X95, X96, X97)) { } void dummy() override { } };
struct I89 { virtual ~I89() noexcept = default; virtual void dummy() = 0; }; struct Impl89 : I89 { DI_CONSTRUCTOR(Impl89, (X89, X90, X91, X92, X93, X94, X95, X96, X97, X98)) { } void dummy() override { } };
struct I90 { virtual ~I90() noexcept = default; virtual void dummy() = 0; }; struct Impl90 : I90 { DI_CONSTRUCTOR(Impl90, (X90, X91, X92, X93, X94, X95, X96, X97, X98, X99)) { } void dummy() override { } };
struct I91 { virtual ~I91() noexcept = default; virtual void dummy() = 0; }; struct Impl91 : I91 { DI_CONSTRUCTOR(Impl91, (X91, X92, X93, X94, X95, X96, X97, X98, X99, X00)) { } void dummy() override { } };
struct I92 { virtual ~I92() noexcept = default; virtual void dummy() = 0; }; struct Impl92 : I92 { DI_CONSTRUCTOR(Impl92, (X92, X93, X94, X95, X96, X97, X98, X99, X00, X01)) { } void dummy() override { } };
struct I93 { virtual ~I93() noexcept = default; virtual void dummy() = 0; }; struct Impl93 : I93 { DI_CONSTRUCTOR(Impl93, (X93, X94, X95, X96, X97, X98, X99, X00, X01, X02)) { } void dummy() override { } };
struct I94 { virtual ~I94() noexcept = default; virtual void dummy() = 0; }; struct Impl94 : I94 { DI_CONSTRUCTOR(Impl94, (X94, X95, X96, X97, X98, X99, X00, X01, X02, X03)) { } void dummy() override { } };
struct I95 { virtual ~I95() noexcept = default; virtual void dummy() = 0; }; struct Impl95 : I95 { DI_CONSTRUCTOR(Impl95, (X95, X96, X97, X98, X99, X00, X01, X02, X03, X04)) { } void dummy() override { } };
struct I96 { virtual ~I96() noexcept = default; virtual void dummy() = 0; }; struct Impl96 : I96 { DI_CONSTRUCTOR(Impl96, (X96, X97, X98, X99, X00, X01, X02, X03, X04, X05)) { } void dummy() override { } };
struct I97 { virtual ~I97() noexcept = default; virtual void dummy() = 0; }; struct Impl97 : I97 { DI_CONSTRUCTOR(Impl97, (X97, X98, X99, X00, X01, X02, X03, X04, X05, X06)) { } void dummy() override { } };
struct I98 { virtual ~I98() noexcept = default; virtual void dummy() = 0; }; struct Impl98 : I98 { DI_CONSTRUCTOR(Impl98, (X98, X99, X00, X01, X02, X03, X04, X05, X06, X07)) { } void dummy() override { } };
struct I99 { virtual ~I99() noexcept = default; virtual void dummy() = 0; }; struct Impl99 : I99 { DI_CONSTRUCTOR(Impl99, (X99, X00, X01, X02, X03, X04, X05, X06, X07, X08)) { } void dummy() override { } };
struct C0 { DI_CONSTRUCTOR(C0, (std::unique_ptr<I00>, std::unique_ptr<I01>, std::unique_ptr<I02>, std::unique_ptr<I03>, std::unique_ptr<I04>, std::unique_ptr<I05>, std::unique_ptr<I06>, std::unique_ptr<I07>, std::unique_ptr<I08>, std::unique_ptr<I09>)) { } };
struct C1 { DI_CONSTRUCTOR(C1, (std::unique_ptr<I10>, std::unique_ptr<I11>, std::unique_ptr<I12>, std::unique_ptr<I13>, std::unique_ptr<I14>, std::unique_ptr<I15>, std::unique_ptr<I16>, std::unique_ptr<I17>, std::unique_ptr<I18>, std::unique_ptr<I19>)) { } };
struct C2 { DI_CONSTRUCTOR(C2, (std::unique_ptr<I20>, std::unique_ptr<I21>, std::unique_ptr<I22>, std::unique_ptr<I23>, std::unique_ptr<I24>, std::unique_ptr<I25>, std::unique_ptr<I26>, std::unique_ptr<I27>, std::unique_ptr<I28>, std::unique_ptr<I29>)) { } };
struct C3 { DI_CONSTRUCTOR(C3, (std::unique_ptr<I30>, std::unique_ptr<I31>, std::unique_ptr<I32>, std::unique_ptr<I33>, std::unique_ptr<I34>, std::unique_ptr<I35>, std::unique_ptr<I36>, std::unique_ptr<I37>, std::unique_ptr<I38>, std::unique_ptr<I39>)) { } };
struct C4 { DI_CONSTRUCTOR(C4, (std::unique_ptr<I40>, std::unique_ptr<I41>, std::unique_ptr<I42>, std::unique_ptr<I43>, std::unique_ptr<I44>, std::unique_ptr<I45>, std::unique_ptr<I46>, std::unique_ptr<I47>, std::unique_ptr<I48>, std::unique_ptr<I49>)) { } };
struct C5 { DI_CONSTRUCTOR(C5, (std::unique_ptr<I50>, std::unique_ptr<I51>, std::unique_ptr<I52>, std::unique_ptr<I53>, std::unique_ptr<I54>, std::unique_ptr<I55>, std::unique_ptr<I56>, std::unique_ptr<I57>, std::unique_ptr<I58>, std::unique_ptr<I59>)) { } };
struct C6 { DI_CONSTRUCTOR(C6, (std::unique_ptr<I60>, std::unique_ptr<I61>, std::unique_ptr<I62>, std::unique_ptr<I63>, std::unique_ptr<I64>, std::unique_ptr<I65>, std::unique_ptr<I66>, std::unique_ptr<I67>, std::unique_ptr<I68>, std::unique_ptr<I69>)) { } };
struct C7 { DI_CONSTRUCTOR(C7, (std::unique_ptr<I70>, std::unique_ptr<I71>, std::unique_ptr<I72>, std::unique_ptr<I73>, std::unique_ptr<I74>, std::unique_ptr<I75>, std::unique_ptr<I76>, std::unique_ptr<I77>, std::unique_ptr<I78>, std::unique_ptr<I79>)) { } };
struct C8 { DI_CONSTRUCTOR(C8, (std::unique_ptr<I80>, std::unique_ptr<I81>, std::unique_ptr<I82>, std::unique_ptr<I83>, std::unique_ptr<I84>, std::unique_ptr<I85>, std::unique_ptr<I86>, std::unique_ptr<I87>, std::unique_ptr<I88>, std::unique_ptr<I89>)) { } };
struct C9 { DI_CONSTRUCTOR(C9, (std::unique_ptr<I90>, std::unique_ptr<I91>, std::unique_ptr<I92>, std::unique_ptr<I93>, std::unique_ptr<I94>, std::unique_ptr<I95>, std::unique_ptr<I96>, std::unique_ptr<I97>, std::unique_ptr<I98>, std::unique_ptr<I99>)) { } };
struct Complex { DI_CONSTRUCTOR(Complex, (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)) { } };
// clang-format on

void module(di::registry& r) {
  r.add(r.type<I00>().implementation<Impl00>());
  r.add(r.type<I01>().implementation<Impl01>());
  r.add(r.type<I02>().implementation<Impl02>());
  r.add(r.type<I03>().implementation<Impl03>());
  r.add(r.type<I04>().implementation<Impl04>());
  r.add(r.type<I05>().implementation<Impl05>());
  r.add(r.type<I06>().implementation<Impl06>());
  r.add(r.type<I07>().implementation<Impl07>());
  r.add(r.type<I08>().implementation<Impl08>());
  r.add(r.type<I09>().implementation<Impl09>());
  r.add(r.type<I10>().implementation<Impl10>());
  r.add(r.type<I11>().implementation<Impl11>());
  r.add(r.type<I12>().implementation<Impl12>());
  r.add(r.type<I13>().implementation<Impl13>());
  r.add(r.type<I14>().implementation<Impl14>());
  r.add(r.type<I15>().implementation<Impl15>());
  r.add(r.type<I16>().implementation<Impl16>());
  r.add(r.type<I17>().implementation<Impl17>());
  r.add(r.type<I18>().implementation<Impl18>());
  r.add(r.type<I19>().implementation<Impl19>());
  r.add(r.type<I20>().implementation<Impl20>());
  r.add(r.type<I21>().implementation<Impl21>());
  r.add(r.type<I22>().implementation<Impl22>());
  r.add(r.type<I23>().implementation<Impl23>());
  r.add(r.type<I24>().implementation<Impl24>());
  r.add(r.type<I25>().implementation<Impl25>());
  r.add(r.type<I26>().implementation<Impl26>());
  r.add(r.type<I27>().implementation<Impl27>());
  r.add(r.type<I28>().implementation<Impl28>());
  r.add(r.type<I29>().implementation<Impl29>());
  r.add(r.type<I30>().implementation<Impl30>());
  r.add(r.type<I31>().implementation<Impl31>());
  r.add(r.type<I32>().implementation<Impl32>());
  r.add(r.type<I33>().implementation<Impl33>());
  r.add(r.type<I34>().implementation<Impl34>());
  r.add(r.type<I35>().implementation<Impl35>());
  r.add(r.type<I36>().implementation<Impl36>());
  r.add(r.type<I37>().implementation<Impl37>());
  r.add(r.type<I38>().implementation<Impl38>());
  r.add(r.type<I39>().implementation<Impl39>());
  r.add(r.type<I40>().implementation<Impl40>());
  r.add(r.type<I41>().implementation<Impl41>());
  r.add(r.type<I42>().implementation<Impl42>());
  r.add(r.type<I43>().implementation<Impl43>());
  r.add(r.type<I44>().implementation<Impl44>());
  r.add(r.type<I45>().implementation<Impl45>());
  r.add(r.type<I46>().implementation<Impl46>());
  r.add(r.type<I47>().implementation<Impl47>());
  r.add(r.type<I48>().implementation<Impl48>());
  r.add(r.type<I49>().implementation<Impl49>());
  r.add(r.type<I50>().implementation<Impl50>());
  r.add(r.type<I51>().implementation<Impl51>());
  r.add(r.type<I52>().implementation<Impl52>());
  r.add(r.type<I53>().implementation<Impl53>());
  r.add(r.type<I54>().implementation<Impl54>());
  r.add(r.type<I55>().implementation<Impl55>());
  r.add(r.type<I56>().implementation<Impl56>());
  r.add(r.type<I57>().implementation<Impl57>());
  r.add(r.type<I58>().implementation<Impl58>());
  r.add(r.type<I59>().implementation<Impl59>());
  r.add(r.type<I60>().implementation<Impl60>());
  r.add(r.type<I61>().implementation<Impl61>());
  r.add(r.type<I62>().implementation<Impl62>());
  r.add(r.type<I63>().implementation<Impl63>());
  r.add(r.type<I64>().implementation<Impl64>());
  r.add(r.type<I65>().implementation<Impl65>());
  r.add(r.type<I66>().implementation<Impl66>());
  r.add(r.type<I67>().implementation<Impl67>());
  r.add(r.type<I68>().implementation<Impl68>());
  r.add(r.type<I69>().implementation<Impl69>());
  r.add(r.type<I70>().implementation<Impl70>());
  r.add(r.type<I71>().implementation<Impl71>());
  r.add(r.type<I72>().implementation<Impl72>());
  r.add(r.type<I73>().implementation<Impl73>());
  r.add(r.type<I74>().implementation<Impl74>());
  r.add(r.type<I75>().implementation<Impl75>());
  r.add(r.type<I76>().implementation<Impl76>());
  r.add(r.type<I77>().implementation<Impl77>());
  r.add(r.type<I78>().implementation<Impl78>());
  r.add(r.type<I79>().implementation<Impl79>());
  r.add(r.type<I80>().implementation<Impl80>());
  r.add(r.type<I81>().implementation<Impl81>());
  r.add(r.type<I82>().implementation<Impl82>());
  r.add(r.type<I83>().implementation<Impl83>());
  r.add(r.type<I84>().implementation<Impl84>());
  r.add(r.type<I85>().implementation<Impl85>());
  r.add(r.type<I86>().implementation<Impl86>());
  r.add(r.type<I87>().implementation<Impl87>());
  r.add(r.type<I88>().implementation<Impl88>());
  r.add(r.type<I89>().implementation<Impl89>());
  r.add(r.type<I90>().implementation<Impl90>());
  r.add(r.type<I91>().implementation<Impl91>());
  r.add(r.type<I92>().implementation<Impl92>());
  r.add(r.type<I93>().implementation<Impl93>());
  r.add(r.type<I94>().implementation<Impl94>());
  r.add(r.type<I95>().implementation<Impl95>());
  r.add(r.type<I96>().implementation<Impl96>());
  r.add(r.type<I97>().implementation<Impl97>());
  r.add(r.type<I98>().implementation<Impl98>());
  r.add(r.type<I99>().implementation<Impl99>());
}

int main() {
  di::injector injector;
  injector.install(module);
  injector.construct<Complex>();
}


================================================
FILE: benchmark/create_complex/fruit.cpp
================================================
//
// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
#include <memory>
#include <fruit/fruit.h>

// clang-format off
struct X00 { INJECT(X00()) { } };
struct X01 { INJECT(X01(X00)) { } };
struct X02 { INJECT(X02(X00, X01)) { } };
struct X03 { INJECT(X03(X00, X01, X02)) { } };
struct X04 { INJECT(X04(X00, X01, X02, X03)) { } };
struct X05 { INJECT(X05(X00, X01, X02, X03, X04)) { } };
struct X06 { INJECT(X06(X00, X01, X02, X03, X04, X05)) { } };
struct X07 { INJECT(X07(X00, X01, X02, X03, X04, X05, X06)) { } };
struct X08 { INJECT(X08(X00, X01, X02, X03, X04, X05, X06, X07)) { } };
struct X09 { INJECT(X09(X00, X01, X02, X03, X04, X05, X06, X07, X08)) { } };
struct X10 { INJECT(X10(X00, X01, X02, X03, X04, X05, X06, X07, X08, X09)) { } };
struct X11 { INJECT(X11(X01, X02, X03, X04, X05, X06, X07, X08, X09, X10)) { } };
struct X12 { INJECT(X12(X02, X03, X04, X05, X06, X07, X08, X09, X10, X11)) { } };
struct X13 { INJECT(X13(X03, X04, X05, X06, X07, X08, X09, X10, X11, X12)) { } };
struct X14 { INJECT(X14(X04, X05, X06, X07, X08, X09, X10, X11, X12, X13)) { } };
struct X15 { INJECT(X15(X05, X06, X07, X08, X09, X10, X11, X12, X13, X14)) { } };
struct X16 { INJECT(X16(X06, X07, X08, X09, X10, X11, X12, X13, X14, X15)) { } };
struct X17 { INJECT(X17(X07, X08, X09, X10, X11, X12, X13, X14, X15, X16)) { } };
struct X18 { INJECT(X18(X08, X09, X10, X11, X12, X13, X14, X15, X16, X17)) { } };
struct X19 { INJECT(X19(X09, X10, X11, X12, X13, X14, X15, X16, X17, X18)) { } };
struct X20 { INJECT(X20(X10, X11, X12, X13, X14, X15, X16, X17, X18, X19)) { } };
struct X21 { INJECT(X21(X11, X12, X13, X14, X15, X16, X17, X18, X19, X20)) { } };
struct X22 { INJECT(X22(X12, X13, X14, X15, X16, X17, X18, X19, X20, X21)) { } };
struct X23 { INJECT(X23(X13, X14, X15, X16, X17, X18, X19, X20, X21, X22)) { } };
struct X24 { INJECT(X24(X14, X15, X16, X17, X18, X19, X20, X21, X22, X23)) { } };
struct X25 { INJECT(X25(X15, X16, X17, X18, X19, X20, X21, X22, X23, X24)) { } };
struct X26 { INJECT(X26(X16, X17, X18, X19, X20, X21, X22, X23, X24, X25)) { } };
struct X27 { INJECT(X27(X17, X18, X19, X20, X21, X22, X23, X24, X25, X26)) { } };
struct X28 { INJECT(X28(X18, X19, X20, X21, X22, X23, X24, X25, X26, X27)) { } };
struct X29 { INJECT(X29(X19, X20, X21, X22, X23, X24, X25, X26, X27, X28)) { } };
struct X30 { INJECT(X30(X20, X21, X22, X23, X24, X25, X26, X27, X28, X29)) { } };
struct X31 { INJECT(X31(X21, X22, X23, X24, X25, X26, X27, X28, X29, X30)) { } };
struct X32 { INJECT(X32(X22, X23, X24, X25, X26, X27, X28, X29, X30, X31)) { } };
struct X33 { INJECT(X33(X23, X24, X25, X26, X27, X28, X29, X30, X31, X32)) { } };
struct X34 { INJECT(X34(X24, X25, X26, X27, X28, X29, X30, X31, X32, X33)) { } };
struct X35 { INJECT(X35(X25, X26, X27, X28, X29, X30, X31, X32, X33, X34)) { } };
struct X36 { INJECT(X36(X26, X27, X28, X29, X30, X31, X32, X33, X34, X35)) { } };
struct X37 { INJECT(X37(X27, X28, X29, X30, X31, X32, X33, X34, X35, X36)) { } };
struct X38 { INJECT(X38(X28, X29, X30, X31, X32, X33, X34, X35, X36, X37)) { } };
struct X39 { INJECT(X39(X29, X30, X31, X32, X33, X34, X35, X36, X37, X38)) { } };
struct X40 { INJECT(X40(X30, X31, X32, X33, X34, X35, X36, X37, X38, X39)) { } };
struct X41 { INJECT(X41(X31, X32, X33, X34, X35, X36, X37, X38, X39, X40)) { } };
struct X42 { INJECT(X42(X32, X33, X34, X35, X36, X37, X38, X39, X40, X41)) { } };
struct X43 { INJECT(X43(X33, X34, X35, X36, X37, X38, X39, X40, X41, X42)) { } };
struct X44 { INJECT(X44(X34, X35, X36, X37, X38, X39, X40, X41, X42, X43)) { } };
struct X45 { INJECT(X45(X35, X36, X37, X38, X39, X40, X41, X42, X43, X44)) { } };
struct X46 { INJECT(X46(X36, X37, X38, X39, X40, X41, X42, X43, X44, X45)) { } };
struct X47 { INJECT(X47(X37, X38, X39, X40, X41, X42, X43, X44, X45, X46)) { } };
struct X48 { INJECT(X48(X38, X39, X40, X41, X42, X43, X44, X45, X46, X47)) { } };
struct X49 { INJECT(X49(X39, X40, X41, X42, X43, X44, X45, X46, X47, X48)) { } };
struct X50 { INJECT(X50(X40, X41, X42, X43, X44, X45, X46, X47, X48, X49)) { } };
struct X51 { INJECT(X51(X41, X42, X43, X44, X45, X46, X47, X48, X49, X50)) { } };
struct X52 { INJECT(X52(X42, X43, X44, X45, X46, X47, X48, X49, X50, X51)) { } };
struct X53 { INJECT(X53(X43, X44, X45, X46, X47, X48, X49, X50, X51, X52)) { } };
struct X54 { INJECT(X54(X44, X45, X46, X47, X48, X49, X50, X51, X52, X53)) { } };
struct X55 { INJECT(X55(X45, X46, X47, X48, X49, X50, X51, X52, X53, X54)) { } };
struct X56 { INJECT(X56(X46, X47, X48, X49, X50, X51, X52, X53, X54, X55)) { } };
struct X57 { INJECT(X57(X47, X48, X49, X50, X51, X52, X53, X54, X55, X56)) { } };
struct X58 { INJECT(X58(X48, X49, X50, X51, X52, X53, X54, X55, X56, X57)) { } };
struct X59 { INJECT(X59(X49, X50, X51, X52, X53, X54, X55, X56, X57, X58)) { } };
struct X60 { INJECT(X60(X50, X51, X52, X53, X54, X55, X56, X57, X58, X59)) { } };
struct X61 { INJECT(X61(X51, X52, X53, X54, X55, X56, X57, X58, X59, X60)) { } };
struct X62 { INJECT(X62(X52, X53, X54, X55, X56, X57, X58, X59, X60, X61)) { } };
struct X63 { INJECT(X63(X53, X54, X55, X56, X57, X58, X59, X60, X61, X62)) { } };
struct X64 { INJECT(X64(X54, X55, X56, X57, X58, X59, X60, X61, X62, X63)) { } };
struct X65 { INJECT(X65(X55, X56, X57, X58, X59, X60, X61, X62, X63, X64)) { } };
struct X66 { INJECT(X66(X56, X57, X58, X59, X60, X61, X62, X63, X64, X65)) { } };
struct X67 { INJECT(X67(X57, X58, X59, X60, X61, X62, X63, X64, X65, X66)) { } };
struct X68 { INJECT(X68(X58, X59, X60, X61, X62, X63, X64, X65, X66, X67)) { } };
struct X69 { INJECT(X69(X59, X60, X61, X62, X63, X64, X65, X66, X67, X68)) { } };
struct X70 { INJECT(X70(X60, X61, X62, X63, X64, X65, X66, X67, X68, X69)) { } };
struct X71 { INJECT(X71(X61, X62, X63, X64, X65, X66, X67, X68, X69, X70)) { } };
struct X72 { INJECT(X72(X62, X63, X64, X65, X66, X67, X68, X69, X70, X71)) { } };
struct X73 { INJECT(X73(X63, X64, X65, X66, X67, X68, X69, X70, X71, X72)) { } };
struct X74 { INJECT(X74(X64, X65, X66, X67, X68, X69, X70, X71, X72, X73)) { } };
struct X75 { INJECT(X75(X65, X66, X67, X68, X69, X70, X71, X72, X73, X74)) { } };
struct X76 { INJECT(X76(X66, X67, X68, X69, X70, X71, X72, X73, X74, X75)) { } };
struct X77 { INJECT(X77(X67, X68, X69, X70, X71, X72, X73, X74, X75, X76)) { } };
struct X78 { INJECT(X78(X68, X69, X70, X71, X72, X73, X74, X75, X76, X77)) { } };
struct X79 { INJECT(X79(X69, X70, X71, X72, X73, X74, X75, X76, X77, X78)) { } };
struct X80 { INJECT(X80(X70, X71, X72, X73, X74, X75, X76, X77, X78, X79)) { } };
struct X81 { INJECT(X81(X71, X72, X73, X74, X75, X76, X77, X78, X79, X80)) { } };
struct X82 { INJECT(X82(X72, X73, X74, X75, X76, X77, X78, X79, X80, X81)) { } };
struct X83 { INJECT(X83(X73, X74, X75, X76, X77, X78, X79, X80, X81, X82)) { } };
struct X84 { INJECT(X84(X74, X75, X76, X77, X78, X79, X80, X81, X82, X83)) { } };
struct X85 { INJECT(X85(X75, X76, X77, X78, X79, X80, X81, X82, X83, X84)) { } };
struct X86 { INJECT(X86(X76, X77, X78, X79, X80, X81, X82, X83, X84, X85)) { } };
struct X87 { INJECT(X87(X77, X78, X79, X80, X81, X82, X83, X84, X85, X86)) { } };
struct X88 { INJECT(X88(X78, X79, X80, X81, X82, X83, X84, X85, X86, X87)) { } };
struct X89 { INJECT(X89(X79, X80, X81, X82, X83, X84, X85, X86, X87, X88)) { } };
struct X90 { INJECT(X90(X80, X81, X82, X83, X84, X85, X86, X87, X88, X89)) { } };
struct X91 { INJECT(X91(X81, X82, X83, X84, X85, X86, X87, X88, X89, X90)) { } };
struct X92 { INJECT(X92(X82, X83, X84, X85, X86, X87, X88, X89, X90, X91)) { } };
struct X93 { INJECT(X93(X83, X84, X85, X86, X87, X88, X89, X90, X91, X92)) { } };
struct X94 { INJECT(X94(X84, X85, X86, X87, X88, X89, X90, X91, X92, X93)) { } };
struct X95 { INJECT(X95(X85, X86, X87, X88, X89, X90, X91, X92, X93, X94)) { } };
struct X96 { INJECT(X96(X86, X87, X88, X89, X90, X91, X92, X93, X94, X95)) { } };
struct X97 { INJECT(X97(X87, X88, X89, X90, X91, X92, X93, X94, X95, X96)) { } };
struct X98 { INJECT(X98(X88, X89, X90, X91, X92, X93, X94, X95, X96, X97)) { } };
struct X99 { INJECT(X99(X89, X90, X91, X92, X93, X94, X95, X96, X97, X98)) { } };
struct I00 { virtual ~I00() noexcept = default; virtual void dummy() = 0; }; struct Impl00 : I00 { INJECT(Impl00(X00, X01, X02, X03, X04, X05, X06, X07, X08, X09)) { } void dummy() override { } };
struct I01 { virtual ~I01() noexcept = default; virtual void dummy() = 0; }; struct Impl01 : I01 { INJECT(Impl01(X01, X02, X03, X04, X05, X06, X07, X08, X09, X10)) { } void dummy() override { } };
struct I02 { virtual ~I02() noexcept = default; virtual void dummy() = 0; }; struct Impl02 : I02 { INJECT(Impl02(X02, X03, X04, X05, X06, X07, X08, X09, X10, X11)) { } void dummy() override { } };
struct I03 { virtual ~I03() noexcept = default; virtual void dummy() = 0; }; struct Impl03 : I03 { INJECT(Impl03(X03, X04, X05, X06, X07, X08, X09, X10, X11, X12)) { } void dummy() override { } };
struct I04 { virtual ~I04() noexcept = default; virtual void dummy() = 0; }; struct Impl04 : I04 { INJECT(Impl04(X04, X05, X06, X07, X08, X09, X10, X11, X12, X13)) { } void dummy() override { } };
struct I05 { virtual ~I05() noexcept = default; virtual void dummy() = 0; }; struct Impl05 : I05 { INJECT(Impl05(X05, X06, X07, X08, X09, X10, X11, X12, X13, X14)) { } void dummy() override { } };
struct I06 { virtual ~I06() noexcept = default; virtual void dummy() = 0; }; struct Impl06 : I06 { INJECT(Impl06(X06, X07, X08, X09, X10, X11, X12, X13, X14, X15)) { } void dummy() override { } };
struct I07 { virtual ~I07() noexcept = default; virtual void dummy() = 0; }; struct Impl07 : I07 { INJECT(Impl07(X07, X08, X09, X10, X11, X12, X13, X14, X15, X16)) { } void dummy() override { } };
struct I08 { virtual ~I08() noexcept = default; virtual void dummy() = 0; }; struct Impl08 : I08 { INJECT(Impl08(X08, X09, X10, X11, X12, X13, X14, X15, X16, X17)) { } void dummy() override { } };
struct I09 { virtual ~I09() noexcept = default; virtual void dummy() = 0; }; struct Impl09 : I09 { INJECT(Impl09(X09, X10, X11, X12, X13, X14, X15, X16, X17, X18)) { } void dummy() override { } };
struct I10 { virtual ~I10() noexcept = default; virtual void dummy() = 0; }; struct Impl10 : I10 { INJECT(Impl10(X10, X11, X12, X13, X14, X15, X16, X17, X18, X19)) { } void dummy() override { } };
struct I11 { virtual ~I11() noexcept = default; virtual void dummy() = 0; }; struct Impl11 : I11 { INJECT(Impl11(X11, X12, X13, X14, X15, X16, X17, X18, X19, X20)) { } void dummy() override { } };
struct I12 { virtual ~I12() noexcept = default; virtual void dummy() = 0; }; struct Impl12 : I12 { INJECT(Impl12(X12, X13, X14, X15, X16, X17, X18, X19, X20, X21)) { } void dummy() override { } };
struct I13 { virtual ~I13() noexcept = default; virtual void dummy() = 0; }; struct Impl13 : I13 { INJECT(Impl13(X13, X14, X15, X16, X17, X18, X19, X20, X21, X22)) { } void dummy() override { } };
struct I14 { virtual ~I14() noexcept = default; virtual void dummy() = 0; }; struct Impl14 : I14 { INJECT(Impl14(X14, X15, X16, X17, X18, X19, X20, X21, X22, X23)) { } void dummy() override { } };
struct I15 { virtual ~I15() noexcept = default; virtual void dummy() = 0; }; struct Impl15 : I15 { INJECT(Impl15(X15, X16, X17, X18, X19, X20, X21, X22, X23, X24)) { } void dummy() override { } };
struct I16 { virtual ~I16() noexcept = default; virtual void dummy() = 0; }; struct Impl16 : I16 { INJECT(Impl16(X16, X17, X18, X19, X20, X21, X22, X23, X24, X25)) { } void dummy() override { } };
struct I17 { virtual ~I17() noexcept = default; virtual void dummy() = 0; }; struct Impl17 : I17 { INJECT(Impl17(X17, X18, X19, X20, X21, X22, X23, X24, X25, X26)) { } void dummy() override { } };
struct I18 { virtual ~I18() noexcept = default; virtual void dummy() = 0; }; struct Impl18 : I18 { INJECT(Impl18(X18, X19, X20, X21, X22, X23, X24, X25, X26, X27)) { } void dummy() override { } };
struct I19 { virtual ~I19() noexcept = default; virtual void dummy() = 0; }; struct Impl19 : I19 { INJECT(Impl19(X19, X20, X21, X22, X23, X24, X25, X26, X27, X28)) { } void dummy() override { } };
struct I20 { virtual ~I20() noexcept = default; virtual void dummy() = 0; }; struct Impl20 : I20 { INJECT(Impl20(X20, X21, X22, X23, X24, X25, X26, X27, X28, X29)) { } void dummy() override { } };
struct I21 { virtual ~I21() noexcept = default; virtual void dummy() = 0; }; struct Impl21 : I21 { INJECT(Impl21(X21, X22, X23, X24, X25, X26, X27, X28, X29, X30)) { } void dummy() override { } };
struct I22 { virtual ~I22() noexcept = default; virtual void dummy() = 0; }; struct Impl22 : I22 { INJECT(Impl22(X22, X23, X24, X25, X26, X27, X28, X29, X30, X31)) { } void dummy() override { } };
struct I23 { virtual ~I23() noexcept = default; virtual void dummy() = 0; }; struct Impl23 : I23 { INJECT(Impl23(X23, X24, X25, X26, X27, X28, X29, X30, X31, X32)) { } void dummy() override { } };
struct I24 { virtual ~I24() noexcept = default; virtual void dummy() = 0; }; struct Impl24 : I24 { INJECT(Impl24(X24, X25, X26, X27, X28, X29, X30, X31, X32, X33)) { } void dummy() override { } };
struct I25 { virtual ~I25() noexcept = default; virtual void dummy() = 0; }; struct Impl25 : I25 { INJECT(Impl25(X25, X26, X27, X28, X29, X30, X31, X32, X33, X34)) { } void dummy() override { } };
struct I26 { virtual ~I26() noexcept = default; virtual void dummy() = 0; }; struct Impl26 : I26 { INJECT(Impl26(X26, X27, X28, X29, X30, X31, X32, X33, X34, X35)) { } void dummy() override { } };
struct I27 { virtual ~I27() noexcept = default; virtual void dummy() = 0; }; struct Impl27 : I27 { INJECT(Impl27(X27, X28, X29, X30, X31, X32, X33, X34, X35, X36)) { } void dummy() override { } };
struct I28 { virtual ~I28() noexcept = default; virtual void dummy() = 0; }; struct Impl28 : I28 { INJECT(Impl28(X28, X29, X30, X31, X32, X33, X34, X35, X36, X37)) { } void dummy() override { } };
struct I29 { virtual ~I29() noexcept = default; virtual void dummy() = 0; }; struct Impl29 : I29 { INJECT(Impl29(X29, X30, X31, X32, X33, X34, X35, X36, X37, X38)) { } void dummy() override { } };
struct I30 { virtual ~I30() noexcept = default; virtual void dummy() = 0; }; struct Impl30 : I30 { INJECT(Impl30(X30, X31, X32, X33, X34, X35, X36, X37, X38, X39)) { } void dummy() override { } };
struct I31 { virtual ~I31() noexcept = default; virtual void dummy() = 0; }; struct Impl31 : I31 { INJECT(Impl31(X31, X32, X33, X34, X35, X36, X37, X38, X39, X40)) { } void dummy() override { } };
struct I32 { virtual ~I32() noexcept = default; virtual void dummy() = 0; }; struct Impl32 : I32 { INJECT(Impl32(X32, X33, X34, X35, X36, X37, X38, X39, X40, X41)) { } void dummy() override { } };
struct I33 { virtual ~I33() noexcept = default; virtual void dummy() = 0; }; struct Impl33 : I33 { INJECT(Impl33(X33, X34, X35, X36, X37, X38, X39, X40, X41, X42)) { } void dummy() override { } };
struct I34 { virtual ~I34() noexcept = default; virtual void dummy() = 0; }; struct Impl34 : I34 { INJECT(Impl34(X34, X35, X36, X37, X38, X39, X40, X41, X42, X43)) { } void dummy() override { } };
struct I35 { virtual ~I35() noexcept = default; virtual void dummy() = 0; }; struct Impl35 : I35 { INJECT(Impl35(X35, X36, X37, X38, X39, X40, X41, X42, X43, X44)) { } void dummy() override { } };
struct I36 { virtual ~I36() noexcept = default; virtual void dummy() = 0; }; struct Impl36 : I36 { INJECT(Impl36(X36, X37, X38, X39, X40, X41, X42, X43, X44, X45)) { } void dummy() override { } };
struct I37 { virtual ~I37() noexcept = default; virtual void dummy() = 0; }; struct Impl37 : I37 { INJECT(Impl37(X37, X38, X39, X40, X41, X42, X43, X44, X45, X46)) { } void dummy() override { } };
struct I38 { virtual ~I38() noexcept = default; virtual void dummy() = 0; }; struct Impl38 : I38 { INJECT(Impl38(X38, X39, X40, X41, X42, X43, X44, X45, X46, X47)) { } void dummy() override { } };
struct I39 { virtual ~I39() noexcept = default; virtual void dummy() = 0; }; struct Impl39 : I39 { INJECT(Impl39(X39, X40, X41, X42, X43, X44, X45, X46, X47, X48)) { } void dummy() override { } };
struct I40 { virtual ~I40() noexcept = default; virtual void dummy() = 0; }; struct Impl40 : I40 { INJECT(Impl40(X40, X41, X42, X43, X44, X45, X46, X47, X48, X49)) { } void dummy() override { } };
struct I41 { virtual ~I41() noexcept = default; virtual void dummy() = 0; }; struct Impl41 : I41 { INJECT(Impl41(X41, X42, X43, X44, X45, X46, X47, X48, X49, X50)) { } void dummy() override { } };
struct I42 { virtual ~I42() noexcept = default; virtual void dummy() = 0; }; struct Impl42 : I42 { INJECT(Impl42(X42, X43, X44, X45, X46, X47, X48, X49, X50, X51)) { } void dummy() override { } };
struct I43 { virtual ~I43() noexcept = default; virtual void dummy() = 0; }; struct Impl43 : I43 { INJECT(Impl43(X43, X44, X45, X46, X47, X48, X49, X50, X51, X52)) { } void dummy() override { } };
struct I44 { virtual ~I44() noexcept = default; virtual void dummy() = 0; }; struct Impl44 : I44 { INJECT(Impl44(X44, X45, X46, X47, X48, X49, X50, X51, X52, X53)) { } void dummy() override { } };
struct I45 { virtual ~I45() noexcept = default; virtual void dummy() = 0; }; struct Impl45 : I45 { INJECT(Impl45(X45, X46, X47, X48, X49, X50, X51, X52, X53, X54)) { } void dummy() override { } };
struct I46 { virtual ~I46() noexcept = default; virtual void dummy() = 0; }; struct Impl46 : I46 { INJECT(Impl46(X46, X47, X48, X49, X50, X51, X52, X53, X54, X55)) { } void dummy() override { } };
struct I47 { virtual ~I47() noexcept = default; virtual void dummy() = 0; }; struct Impl47 : I47 { INJECT(Impl47(X47, X48, X49, X50, X51, X52, X53, X54, X55, X56)) { } void dummy() override { } };
struct I48 { virtual ~I48() noexcept = default; virtual void dummy() = 0; }; struct Impl48 : I48 { INJECT(Impl48(X48, X49, X50, X51, X52, X53, X54, X55, X56, X57)) { } void dummy() override { } };
struct I49 { virtual ~I49() noexcept = default; virtual void dummy() = 0; }; struct Impl49 : I49 { INJECT(Impl49(X49, X50, X51, X52, X53, X54, X55, X56, X57, X58)) { } void dummy() override { } };
struct I50 { virtual ~I50() noexcept = default; virtual void dummy() = 0; }; struct Impl50 : I50 { INJECT(Impl50(X50, X51, X52, X53, X54, X55, X56, X57, X58, X59)) { } void dummy() override { } };
struct I51 { virtual ~I51() noexcept = default; virtual void dummy() = 0; }; struct Impl51 : I51 { INJECT(Impl51(X51, X52, X53, X54, X55, X56, X57, X58, X59, X60)) { } void dummy() override { } };
struct I52 { virtual ~I52() noexcept = default; virtual void dummy() = 0; }; struct Impl52 : I52 { INJECT(Impl52(X52, X53, X54, X55, X56, X57, X58, X59, X60, X61)) { } void dummy() override { } };
struct I53 { virtual ~I53() noexcept = default; virtual void dummy() = 0; }; struct Impl53 : I53 { INJECT(Impl53(X53, X54, X55, X56, X57, X58, X59, X60, X61, X62)) { } void dummy() override { } };
struct I54 { virtual ~I54() noexcept = default; virtual void dummy() = 0; }; struct Impl54 : I54 { INJECT(Impl54(X54, X55, X56, X57, X58, X59, X60, X61, X62, X63)) { } void dummy() override { } };
struct I55 { virtual ~I55() noexcept = default; virtual void dummy() = 0; }; struct Impl55 : I55 { INJECT(Impl55(X55, X56, X57, X58, X59, X60, X61, X62, X63, X64)) { } void dummy() override { } };
struct I56 { virtual ~I56() noexcept = default; virtual void dummy() = 0; }; struct Impl56 : I56 { INJECT(Impl56(X56, X57, X58, X59, X60, X61, X62, X63, X64, X65)) { } void dummy() override { } };
struct I57 { virtual ~I57() noexcept = default; virtual void dummy() = 0; }; struct Impl57 : I57 { INJECT(Impl57(X57, X58, X59, X60, X61, X62, X63, X64, X65, X66)) { } void dummy() override { } };
struct I58 { virtual ~I58() noexcept = default; virtual void dummy() = 0; }; struct Impl58 : I58 { INJECT(Impl58(X58, X59, X60, X61, X62, X63, X64, X65, X66, X67)) { } void dummy() override { } };
struct I59 { virtual ~I59() noexcept = default; virtual void dummy() = 0; }; struct Impl59 : I59 { INJECT(Impl59(X59, X60, X61, X62, X63, X64, X65, X66, X67, X68)) { } void dummy() override { } };
struct I60 { virtual ~I60() noexcept = default; virtual void dummy() = 0; }; struct Impl60 : I60 { INJECT(Impl60(X60, X61, X62, X63, X64, X65, X66, X67, X68, X69)) { } void dummy() override { } };
struct I61 { virtual ~I61() noexcept = default; virtual void dummy() = 0; }; struct Impl61 : I61 { INJECT(Impl61(X61, X62, X63, X64, X65, X66, X67, X68, X69, X70)) { } void dummy() override { } };
struct I62 { virtual ~I62() noexcept = default; virtual void dummy() = 0; }; struct Impl62 : I62 { INJECT(Impl62(X62, X63, X64, X65, X66, X67, X68, X69, X70, X71)) { } void dummy() override { } };
struct I63 { virtual ~I63() noexcept = default; virtual void dummy() = 0; }; struct Impl63 : I63 { INJECT(Impl63(X63, X64, X65, X66, X67, X68, X69, X70, X71, X72)) { } void dummy() override { } };
struct I64 { virtual ~I64() noexcept = default; virtual void dummy() = 0; }; struct Impl64 : I64 { INJECT(Impl64(X64, X65, X66, X67, X68, X69, X70, X71, X72, X73)) { } void dummy() override { } };
struct I65 { virtual ~I65() noexcept = default; virtual void dummy() = 0; }; struct Impl65 : I65 { INJECT(Impl65(X65, X66, X67, X68, X69, X70, X71, X72, X73, X74)) { } void dummy() override { } };
struct I66 { virtual ~I66() noexcept = default; virtual void dummy() = 0; }; struct Impl66 : I66 { INJECT(Impl66(X66, X67, X68, X69, X70, X71, X72, X73, X74, X75)) { } void dummy() override { } };
struct I67 { virtual ~I67() noexcept = default; virtual void dummy() = 0; }; struct Impl67 : I67 { INJECT(Impl67(X67, X68, X69, X70, X71, X72, X73, X74, X75, X76)) { } void dummy() override { } };
struct I68 { virtual ~I68() noexcept = default; virtual void dummy() = 0; }; struct Impl68 : I68 { INJECT(Impl68(X68, X69, X70, X71, X72, X73, X74, X75, X76, X77)) { } void dummy() override { } };
struct I69 { virtual ~I69() noexcept = default; virtual void dummy() = 0; }; struct Impl69 : I69 { INJECT(Impl69(X69, X70, X71, X72, X73, X74, X75, X76, X77, X78)) { } void dummy() override { } };
struct I70 { virtual ~I70() noexcept = default; virtual void dummy() = 0; }; struct Impl70 : I70 { INJECT(Impl70(X70, X71, X72, X73, X74, X75, X76, X77, X78, X79)) { } void dummy() override { } };
struct I71 { virtual ~I71() noexcept = default; virtual void dummy() = 0; }; struct Impl71 : I71 { INJECT(Impl71(X71, X72, X73, X74, X75, X76, X77, X78, X79, X80)) { } void dummy() override { } };
struct I72 { virtual ~I72() noexcept = default; virtual void dummy() = 0; }; struct Impl72 : I72 { INJECT(Impl72(X72, X73, X74, X75, X76, X77, X78, X79, X80, X81)) { } void dummy() override { } };
struct I73 { virtual ~I73() noexcept = default; virtual void dummy() = 0; }; struct Impl73 : I73 { INJECT(Impl73(X73, X74, X75, X76, X77, X78, X79, X80, X81, X82)) { } void dummy() override { } };
struct I74 { virtual ~I74() noexcept = default; virtual void dummy() = 0; }; struct Impl74 : I74 { INJECT(Impl74(X74, X75, X76, X77, X78, X79, X80, X81, X82, X83)) { } void dummy() override { } };
struct I75 { virtual ~I75() noexcept = default; virtual void dummy() = 0; }; struct Impl75 : I75 { INJECT(Impl75(X75, X76, X77, X78, X79, X80, X81, X82, X83, X84)) { } void dummy() override { } };
struct I76 { virtual ~I76() noexcept = default; virtual void dummy() = 0; }; struct Impl76 : I76 { INJECT(Impl76(X76, X77, X78, X79, X80, X81, X82, X83, X84, X85)) { } void dummy() override { } };
struct I77 { virtual ~I77() noexcept = default; virtual void dummy() = 0; }; struct Impl77 : I77 { INJECT(Impl77(X77, X78, X79, X80, X81, X82, X83, X84, X85, X86)) { } void dummy() override { } };
struct I78 { virtual ~I78() noexcept = default; virtual void dummy() = 0; }; struct Impl78 : I78 { INJECT(Impl78(X78, X79, X80, X81, X82, X83, X84, X85, X86, X87)) { } void dummy() override { } };
struct I79 { virtual ~I79() noexcept = default; virtual void dummy() = 0; }; struct Impl79 : I79 { INJECT(Impl79(X79, X80, X81, X82, X83, X84, X85, X86, X87, X88)) { } void dummy() override { } };
struct I80 { virtual ~I80() noexcept = default; virtual void dummy() = 0; }; struct Impl80 : I80 { INJECT(Impl80(X80, X81, X82, X83, X84, X85, X86, X87, X88, X89)) { } void dummy() override { } };
struct I81 { virtual ~I81() noexcept = default; virtual void dummy() = 0; }; struct Impl81 : I81 { INJECT(Impl81(X81, X82, X83, X84, X85, X86, X87, X88, X89, X90)) { } void dummy() override { } };
struct I82 { virtual ~I82() noexcept = default; virtual void dummy() = 0; }; struct Impl82 : I82 { INJECT(Impl82(X82, X83, X84, X85, X86, X87, X88, X89, X90, X91)) { } void dummy() override { } };
struct I83 { virtual ~I83() noexcept = default; virtual void dummy() = 0; }; struct Impl83 : I83 { INJECT(Impl83(X83, X84, X85, X86, X87, X88, X89, X90, X91, X92)) { } void dummy() override { } };
struct I84 { virtual ~I84() noexcept = default; virtual void dummy() = 0; }; struct Impl84 : I84 { INJECT(Impl84(X84, X85, X86, X87, X88, X89, X90, X91, X92, X93)) { } void dummy() override { } };
struct I85 { virtual ~I85() noexcept = default; virtual void dummy() = 0; }; struct Impl85 : I85 { INJECT(Impl85(X85, X86, X87, X88, X89, X90, X91, X92, X93, X94)) { } void dummy() override { } };
struct I86 { virtual ~I86() noexcept = default; virtual void dummy() = 0; }; struct Impl86 : I86 { INJECT(Impl86(X86, X87, X88, X89, X90, X91, X92, X93, X94, X95)) { } void dummy() override { } };
struct I87 { virtual ~I87() noexcept = default; virtual void dummy() = 0; }; struct Impl87 : I87 { INJECT(Impl87(X87, X88, X89, X90, X91, X92, X93, X94, X95, X96)) { } void dummy() override { } };
struct I88 { virtual ~I88() noexcept = default; virtual void dummy() = 0; }; struct Impl88 : I88 { INJECT(Impl88(X88, X89, X90, X91, X92, X93, X94, X95, X96, X97)) { } void dummy() override { } };
struct I89 { virtual ~I89() noexcept = default; virtual void dummy() = 0; }; struct Impl89 : I89 { INJECT(Impl89(X89, X90, X91, X92, X93, X94, X95, X96, X97, X98)) { } void dummy() override { } };
struct I90 { virtual ~I90() noexcept = default; virtual void dummy() = 0; }; struct Impl90 : I90 { INJECT(Impl90(X90, X91, X92, X93, X94, X95, X96, X97, X98, X99)) { } void dummy() override { } };
struct I91 { virtual ~I91() noexcept = default; virtual void dummy() = 0; }; struct Impl91 : I91 { INJECT(Impl91(X91, X92, X93, X94, X95, X96, X97, X98, X99, X00)) { } void dummy() override { } };
struct I92 { virtual ~I92() noexcept = default; virtual void dummy() = 0; }; struct Impl92 : I92 { INJECT(Impl92(X92, X93, X94, X95, X96, X97, X98, X99, X00, X01)) { } void dummy() override { } };
struct I93 { virtual ~I93() noexcept = default; virtual void dummy() = 0; }; struct Impl93 : I93 { INJECT(Impl93(X93, X94, X95, X96, X97, X98, X99, X00, X01, X02)) { } void dummy() override { } };
struct I94 { virtual ~I94() noexcept = default; virtual void dummy() = 0; }; struct Impl94 : I94 { INJECT(Impl94(X94, X95, X96, X97, X98, X99, X00, X01, X02, X03)) { } void dummy() override { } };
struct I95 { virtual ~I95() noexcept = default; virtual void dummy() = 0; }; struct Impl95 : I95 { INJECT(Impl95(X95, X96, X97, X98, X99, X00, X01, X02, X03, X04)) { } void dummy() override { } };
struct I96 { virtual ~I96() noexcept = default; virtual void dummy() = 0; }; struct Impl96 : I96 { INJECT(Impl96(X96, X97, X98, X99, X00, X01, X02, X03, X04, X05)) { } void dummy() override { } };
struct I97 { virtual ~I97() noexcept = default; virtual void dummy() = 0; }; struct Impl97 : I97 { INJECT(Impl97(X97, X98, X99, X00, X01, X02, X03, X04, X05, X06)) { } void dumm
Download .txt
gitextract_euz3n4tr/

├── .appveyor.yml
├── .clang-format
├── .clang-tidy
├── .gitattributes
├── .travis.yml
├── .user-config.jam
├── CMakeLists.txt
├── Makefile
├── README.md
├── benchmark/
│   ├── Makefile
│   ├── bind_error/
│   │   ├── dagger2.java
│   │   ├── di.cpp
│   │   ├── dicpp.cpp
│   │   ├── fruit.cpp
│   │   ├── guice.java
│   │   └── ninject.cs
│   ├── bind_interface/
│   │   ├── dagger2.java
│   │   ├── di.cpp
│   │   ├── dicpp.cpp
│   │   ├── fruit.cpp
│   │   ├── guice.java
│   │   └── ninject.cs
│   ├── bind_value/
│   │   ├── dagger2.java
│   │   ├── di.cpp
│   │   ├── dicpp.cpp
│   │   ├── fruit.cpp
│   │   ├── guice.java
│   │   └── ninject.cs
│   ├── create_complex/
│   │   ├── dagger2.java
│   │   ├── di.cpp
│   │   ├── dicpp.cpp
│   │   ├── fruit.cpp
│   │   ├── guice.java
│   │   └── ninject.cs
│   ├── create_simple/
│   │   ├── dagger2.java
│   │   ├── di.cpp
│   │   ├── dicpp.cpp
│   │   ├── fruit.cpp
│   │   ├── guice.java
│   │   └── ninject.cs
│   ├── generate_test.py
│   └── performance/
│       ├── Makefile
│       ├── di.cpp
│       ├── di.sh
│       └── header.cpp
├── doc/
│   ├── CHANGELOG.md
│   ├── FAQ.md
│   ├── benchmarks.md
│   ├── concepts-driven-design-with-di/
│   │   ├── .gitignore
│   │   ├── .travis.yml
│   │   ├── CONTRIBUTING.md
│   │   ├── Gruntfile.js
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── bower.json
│   │   ├── css/
│   │   │   ├── print/
│   │   │   │   ├── paper.css
│   │   │   │   └── pdf.css
│   │   │   ├── reveal.css
│   │   │   ├── reveal.scss
│   │   │   └── theme/
│   │   │       ├── README.md
│   │   │       ├── beige.css
│   │   │       ├── black.css
│   │   │       ├── blood.css
│   │   │       ├── league.css
│   │   │       ├── moon.css
│   │   │       ├── night.css
│   │   │       ├── serif.css
│   │   │       ├── simple.css
│   │   │       ├── sky.css
│   │   │       ├── solarized.css
│   │   │       ├── source/
│   │   │       │   ├── beige.scss
│   │   │       │   ├── black.scss
│   │   │       │   ├── blood.scss
│   │   │       │   ├── league.scss
│   │   │       │   ├── moon.scss
│   │   │       │   ├── night.scss
│   │   │       │   ├── serif.scss
│   │   │       │   ├── simple.scss
│   │   │       │   ├── sky.scss
│   │   │       │   ├── solarized.scss
│   │   │       │   └── white.scss
│   │   │       ├── template/
│   │   │       │   ├── mixins.scss
│   │   │       │   ├── settings.scss
│   │   │       │   └── theme.scss
│   │   │       └── white.css
│   │   ├── example/
│   │   │   ├── god_object.cpp
│   │   │   ├── static_polymorphism.cpp
│   │   │   └── type_erasure.cpp
│   │   ├── index.html
│   │   ├── js/
│   │   │   └── reveal.js
│   │   ├── lib/
│   │   │   ├── css/
│   │   │   │   └── zenburn.css
│   │   │   ├── font/
│   │   │   │   ├── league-gothic/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   └── league-gothic.css
│   │   │   │   └── source-sans-pro/
│   │   │   │       ├── LICENSE
│   │   │   │       └── source-sans-pro.css
│   │   │   └── js/
│   │   │       ├── classList.js
│   │   │       └── html5shiv.js
│   │   ├── package.json
│   │   ├── plugin/
│   │   │   ├── highlight/
│   │   │   │   └── highlight.js
│   │   │   ├── markdown/
│   │   │   │   ├── example.html
│   │   │   │   ├── example.md
│   │   │   │   ├── markdown.js
│   │   │   │   └── marked.js
│   │   │   ├── math/
│   │   │   │   └── math.js
│   │   │   ├── multiplex/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── master.js
│   │   │   ├── notes/
│   │   │   │   ├── notes.html
│   │   │   │   └── notes.js
│   │   │   ├── notes-server/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── notes.html
│   │   │   ├── print-pdf/
│   │   │   │   └── print-pdf.js
│   │   │   ├── search/
│   │   │   │   └── search.js
│   │   │   └── zoom-js/
│   │   │       └── zoom.js
│   │   ├── test/
│   │   │   ├── examples/
│   │   │   │   ├── barebones.html
│   │   │   │   ├── embedded-media.html
│   │   │   │   ├── math.html
│   │   │   │   ├── slide-backgrounds.html
│   │   │   │   └── slide-transitions.html
│   │   │   ├── qunit-1.12.0.css
│   │   │   ├── qunit-1.12.0.js
│   │   │   ├── test-markdown-element-attributes.html
│   │   │   ├── test-markdown-element-attributes.js
│   │   │   ├── test-markdown-slide-attributes.html
│   │   │   ├── test-markdown-slide-attributes.js
│   │   │   ├── test-markdown.html
│   │   │   ├── test-markdown.js
│   │   │   ├── test-pdf.html
│   │   │   ├── test-pdf.js
│   │   │   ├── test.html
│   │   │   └── test.js
│   │   └── uml/
│   │       ├── app0.uml
│   │       ├── app1.uml
│   │       ├── app2.uml
│   │       ├── app3.uml
│   │       ├── app4.uml
│   │       └── guideline.uml
│   ├── cpp-london-2017/
│   │   ├── .gitignore
│   │   ├── .travis.yml
│   │   ├── CONTRIBUTING.md
│   │   ├── Gruntfile.js
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── bower.json
│   │   ├── css/
│   │   │   ├── print/
│   │   │   │   ├── paper.css
│   │   │   │   └── pdf.css
│   │   │   ├── reveal.css
│   │   │   ├── reveal.scss
│   │   │   └── theme/
│   │   │       ├── README.md
│   │   │       ├── beige.css
│   │   │       ├── black.css
│   │   │       ├── blood.css
│   │   │       ├── league.css
│   │   │       ├── moon.css
│   │   │       ├── night.css
│   │   │       ├── serif.css
│   │   │       ├── simple.css
│   │   │       ├── sky.css
│   │   │       ├── solarized.css
│   │   │       ├── source/
│   │   │       │   ├── beige.scss
│   │   │       │   ├── black.scss
│   │   │       │   ├── blood.scss
│   │   │       │   ├── league.scss
│   │   │       │   ├── moon.scss
│   │   │       │   ├── night.scss
│   │   │       │   ├── serif.scss
│   │   │       │   ├── simple.scss
│   │   │       │   ├── sky.scss
│   │   │       │   ├── solarized.scss
│   │   │       │   └── white.scss
│   │   │       ├── template/
│   │   │       │   ├── mixins.scss
│   │   │       │   ├── settings.scss
│   │   │       │   └── theme.scss
│   │   │       └── white.css
│   │   ├── example/
│   │   │   ├── god_object.cpp
│   │   │   ├── static_polymorphism.cpp
│   │   │   └── type_erasure.cpp
│   │   ├── index.html
│   │   ├── js/
│   │   │   └── reveal.js
│   │   ├── lib/
│   │   │   ├── css/
│   │   │   │   └── zenburn.css
│   │   │   ├── font/
│   │   │   │   ├── league-gothic/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   └── league-gothic.css
│   │   │   │   └── source-sans-pro/
│   │   │   │       ├── LICENSE
│   │   │   │       └── source-sans-pro.css
│   │   │   └── js/
│   │   │       ├── classList.js
│   │   │       └── html5shiv.js
│   │   ├── package.json
│   │   ├── plugin/
│   │   │   ├── highlight/
│   │   │   │   └── highlight.js
│   │   │   ├── markdown/
│   │   │   │   ├── example.html
│   │   │   │   ├── example.md
│   │   │   │   ├── markdown.js
│   │   │   │   └── marked.js
│   │   │   ├── math/
│   │   │   │   └── math.js
│   │   │   ├── multiplex/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── master.js
│   │   │   ├── notes/
│   │   │   │   ├── notes.html
│   │   │   │   └── notes.js
│   │   │   ├── notes-server/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── notes.html
│   │   │   ├── print-pdf/
│   │   │   │   └── print-pdf.js
│   │   │   ├── search/
│   │   │   │   └── search.js
│   │   │   └── zoom-js/
│   │   │       └── zoom.js
│   │   ├── test/
│   │   │   ├── examples/
│   │   │   │   ├── barebones.html
│   │   │   │   ├── embedded-media.html
│   │   │   │   ├── math.html
│   │   │   │   ├── slide-backgrounds.html
│   │   │   │   └── slide-transitions.html
│   │   │   ├── qunit-1.12.0.css
│   │   │   ├── qunit-1.12.0.js
│   │   │   ├── test-markdown-element-attributes.html
│   │   │   ├── test-markdown-element-attributes.js
│   │   │   ├── test-markdown-slide-attributes.html
│   │   │   ├── test-markdown-slide-attributes.js
│   │   │   ├── test-markdown.html
│   │   │   ├── test-markdown.js
│   │   │   ├── test-pdf.html
│   │   │   ├── test-pdf.js
│   │   │   ├── test.html
│   │   │   └── test.js
│   │   └── uml/
│   │       ├── app0.uml
│   │       ├── app1.uml
│   │       ├── app2.uml
│   │       ├── app3.uml
│   │       └── app4.uml
│   ├── cppnow-2016/
│   │   ├── .gitignore
│   │   ├── .travis.yml
│   │   ├── CONTRIBUTING.md
│   │   ├── Gruntfile.js
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── bower.json
│   │   ├── css/
│   │   │   ├── print/
│   │   │   │   ├── paper.css
│   │   │   │   └── pdf.css
│   │   │   ├── reveal.css
│   │   │   ├── reveal.scss
│   │   │   └── theme/
│   │   │       ├── README.md
│   │   │       ├── beige.css
│   │   │       ├── black.css
│   │   │       ├── blood.css
│   │   │       ├── league.css
│   │   │       ├── moon.css
│   │   │       ├── night.css
│   │   │       ├── serif.css
│   │   │       ├── simple.css
│   │   │       ├── sky.css
│   │   │       ├── solarized.css
│   │   │       ├── source/
│   │   │       │   ├── beige.scss
│   │   │       │   ├── black.scss
│   │   │       │   ├── blood.scss
│   │   │       │   ├── league.scss
│   │   │       │   ├── moon.scss
│   │   │       │   ├── night.scss
│   │   │       │   ├── serif.scss
│   │   │       │   ├── simple.scss
│   │   │       │   ├── sky.scss
│   │   │       │   ├── solarized.scss
│   │   │       │   └── white.scss
│   │   │       ├── template/
│   │   │       │   ├── mixins.scss
│   │   │       │   ├── settings.scss
│   │   │       │   └── theme.scss
│   │   │       └── white.css
│   │   ├── example/
│   │   │   ├── ctor1.cpp
│   │   │   ├── ctor2.cpp
│   │   │   ├── ctor3.cpp
│   │   │   ├── ctor4.cpp
│   │   │   ├── resolve.cpp
│   │   │   └── typename_erasure.cpp
│   │   ├── index.html
│   │   ├── js/
│   │   │   └── reveal.js
│   │   ├── lib/
│   │   │   ├── css/
│   │   │   │   └── zenburn.css
│   │   │   ├── font/
│   │   │   │   ├── league-gothic/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   └── league-gothic.css
│   │   │   │   └── source-sans-pro/
│   │   │   │       ├── LICENSE
│   │   │   │       └── source-sans-pro.css
│   │   │   └── js/
│   │   │       ├── classList.js
│   │   │       └── html5shiv.js
│   │   ├── package.json
│   │   ├── plugin/
│   │   │   ├── highlight/
│   │   │   │   └── highlight.js
│   │   │   ├── markdown/
│   │   │   │   ├── example.html
│   │   │   │   ├── example.md
│   │   │   │   ├── markdown.js
│   │   │   │   └── marked.js
│   │   │   ├── math/
│   │   │   │   └── math.js
│   │   │   ├── multiplex/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── master.js
│   │   │   ├── notes/
│   │   │   │   ├── notes.html
│   │   │   │   └── notes.js
│   │   │   ├── notes-server/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── notes.html
│   │   │   ├── print-pdf/
│   │   │   │   └── print-pdf.js
│   │   │   ├── search/
│   │   │   │   └── search.js
│   │   │   └── zoom-js/
│   │   │       └── zoom.js
│   │   └── test/
│   │       ├── examples/
│   │       │   ├── barebones.html
│   │       │   ├── embedded-media.html
│   │       │   ├── math.html
│   │       │   ├── slide-backgrounds.html
│   │       │   └── slide-transitions.html
│   │       ├── qunit-1.12.0.css
│   │       ├── qunit-1.12.0.js
│   │       ├── test-markdown-element-attributes.html
│   │       ├── test-markdown-element-attributes.js
│   │       ├── test-markdown-slide-attributes.html
│   │       ├── test-markdown-slide-attributes.js
│   │       ├── test-markdown.html
│   │       ├── test-markdown.js
│   │       ├── test-pdf.html
│   │       ├── test-pdf.js
│   │       ├── test.html
│   │       └── test.js
│   ├── cppnow-2017/
│   │   ├── .gitignore
│   │   ├── .travis.yml
│   │   ├── CONTRIBUTING.md
│   │   ├── Gruntfile.js
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── bower.json
│   │   ├── css/
│   │   │   ├── print/
│   │   │   │   ├── paper.css
│   │   │   │   └── pdf.css
│   │   │   ├── reveal.css
│   │   │   ├── reveal.scss
│   │   │   └── theme/
│   │   │       ├── README.md
│   │   │       ├── beige.css
│   │   │       ├── black.css
│   │   │       ├── blood.css
│   │   │       ├── league.css
│   │   │       ├── moon.css
│   │   │       ├── night.css
│   │   │       ├── serif.css
│   │   │       ├── simple.css
│   │   │       ├── sky.css
│   │   │       ├── solarized.css
│   │   │       ├── source/
│   │   │       │   ├── beige.scss
│   │   │       │   ├── black.scss
│   │   │       │   ├── blood.scss
│   │   │       │   ├── league.scss
│   │   │       │   ├── moon.scss
│   │   │       │   ├── night.scss
│   │   │       │   ├── serif.scss
│   │   │       │   ├── simple.scss
│   │   │       │   ├── sky.scss
│   │   │       │   ├── solarized.scss
│   │   │       │   └── white.scss
│   │   │       ├── template/
│   │   │       │   ├── mixins.scss
│   │   │       │   ├── settings.scss
│   │   │       │   └── theme.scss
│   │   │       └── white.css
│   │   ├── example/
│   │   │   ├── god_object.cpp
│   │   │   ├── static_polymorphism.cpp
│   │   │   └── type_erasure.cpp
│   │   ├── index.html
│   │   ├── js/
│   │   │   └── reveal.js
│   │   ├── lib/
│   │   │   ├── css/
│   │   │   │   └── zenburn.css
│   │   │   ├── font/
│   │   │   │   ├── league-gothic/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   └── league-gothic.css
│   │   │   │   └── source-sans-pro/
│   │   │   │       ├── LICENSE
│   │   │   │       └── source-sans-pro.css
│   │   │   └── js/
│   │   │       ├── classList.js
│   │   │       └── html5shiv.js
│   │   ├── package.json
│   │   ├── plugin/
│   │   │   ├── highlight/
│   │   │   │   └── highlight.js
│   │   │   ├── markdown/
│   │   │   │   ├── example.html
│   │   │   │   ├── example.md
│   │   │   │   ├── markdown.js
│   │   │   │   └── marked.js
│   │   │   ├── math/
│   │   │   │   └── math.js
│   │   │   ├── multiplex/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── master.js
│   │   │   ├── notes/
│   │   │   │   ├── notes.html
│   │   │   │   └── notes.js
│   │   │   ├── notes-server/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── notes.html
│   │   │   ├── print-pdf/
│   │   │   │   └── print-pdf.js
│   │   │   ├── search/
│   │   │   │   └── search.js
│   │   │   └── zoom-js/
│   │   │       └── zoom.js
│   │   ├── test/
│   │   │   ├── examples/
│   │   │   │   ├── barebones.html
│   │   │   │   ├── embedded-media.html
│   │   │   │   ├── math.html
│   │   │   │   ├── slide-backgrounds.html
│   │   │   │   └── slide-transitions.html
│   │   │   ├── qunit-1.12.0.css
│   │   │   ├── qunit-1.12.0.js
│   │   │   ├── test-markdown-element-attributes.html
│   │   │   ├── test-markdown-element-attributes.js
│   │   │   ├── test-markdown-slide-attributes.html
│   │   │   ├── test-markdown-slide-attributes.js
│   │   │   ├── test-markdown.html
│   │   │   ├── test-markdown.js
│   │   │   ├── test-pdf.html
│   │   │   ├── test-pdf.js
│   │   │   ├── test.html
│   │   │   └── test.js
│   │   └── uml/
│   │       ├── app0.uml
│   │       ├── app1.uml
│   │       ├── app2.uml
│   │       ├── app3.uml
│   │       ├── app4.uml
│   │       └── guideline.uml
│   ├── examples.md
│   ├── extensions.md
│   ├── index.md
│   ├── meetingcpp-2016/
│   │   ├── .gitignore
│   │   ├── .travis.yml
│   │   ├── CONTRIBUTING.md
│   │   ├── Gruntfile.js
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── bower.json
│   │   ├── css/
│   │   │   ├── print/
│   │   │   │   ├── paper.css
│   │   │   │   └── pdf.css
│   │   │   ├── reveal.css
│   │   │   ├── reveal.scss
│   │   │   └── theme/
│   │   │       ├── README.md
│   │   │       ├── beige.css
│   │   │       ├── black.css
│   │   │       ├── blood.css
│   │   │       ├── league.css
│   │   │       ├── moon.css
│   │   │       ├── night.css
│   │   │       ├── serif.css
│   │   │       ├── simple.css
│   │   │       ├── sky.css
│   │   │       ├── solarized.css
│   │   │       ├── source/
│   │   │       │   ├── beige.scss
│   │   │       │   ├── black.scss
│   │   │       │   ├── blood.scss
│   │   │       │   ├── league.scss
│   │   │       │   ├── moon.scss
│   │   │       │   ├── night.scss
│   │   │       │   ├── serif.scss
│   │   │       │   ├── simple.scss
│   │   │       │   ├── sky.scss
│   │   │       │   ├── solarized.scss
│   │   │       │   └── white.scss
│   │   │       ├── template/
│   │   │       │   ├── mixins.scss
│   │   │       │   ├── settings.scss
│   │   │       │   └── theme.scss
│   │   │       └── white.css
│   │   ├── index.html
│   │   ├── js/
│   │   │   └── reveal.js
│   │   ├── lib/
│   │   │   ├── css/
│   │   │   │   └── zenburn.css
│   │   │   ├── font/
│   │   │   │   ├── league-gothic/
│   │   │   │   │   ├── LICENSE
│   │   │   │   │   └── league-gothic.css
│   │   │   │   └── source-sans-pro/
│   │   │   │       ├── LICENSE
│   │   │   │       └── source-sans-pro.css
│   │   │   └── js/
│   │   │       ├── classList.js
│   │   │       └── html5shiv.js
│   │   ├── package.json
│   │   ├── plugin/
│   │   │   ├── highlight/
│   │   │   │   └── highlight.js
│   │   │   ├── markdown/
│   │   │   │   ├── example.html
│   │   │   │   ├── example.md
│   │   │   │   ├── markdown.js
│   │   │   │   └── marked.js
│   │   │   ├── math/
│   │   │   │   └── math.js
│   │   │   ├── multiplex/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── master.js
│   │   │   ├── notes/
│   │   │   │   ├── notes.html
│   │   │   │   └── notes.js
│   │   │   ├── notes-server/
│   │   │   │   ├── client.js
│   │   │   │   ├── index.js
│   │   │   │   └── notes.html
│   │   │   ├── print-pdf/
│   │   │   │   └── print-pdf.js
│   │   │   ├── search/
│   │   │   │   └── search.js
│   │   │   └── zoom-js/
│   │   │       └── zoom.js
│   │   ├── test/
│   │   │   ├── examples/
│   │   │   │   ├── barebones.html
│   │   │   │   ├── embedded-media.html
│   │   │   │   ├── math.html
│   │   │   │   ├── slide-backgrounds.html
│   │   │   │   └── slide-transitions.html
│   │   │   ├── qunit-1.12.0.css
│   │   │   ├── qunit-1.12.0.js
│   │   │   ├── test-markdown-element-attributes.html
│   │   │   ├── test-markdown-element-attributes.js
│   │   │   ├── test-markdown-slide-attributes.html
│   │   │   ├── test-markdown-slide-attributes.js
│   │   │   ├── test-markdown.html
│   │   │   ├── test-markdown.js
│   │   │   ├── test-pdf.html
│   │   │   ├── test-pdf.js
│   │   │   ├── test.html
│   │   │   └── test.js
│   │   └── uml/
│   │       └── game.uml
│   ├── mkdocs.yml
│   ├── overview.md
│   ├── scripts/
│   │   └── update_readme_toc.py
│   ├── themes/
│   │   ├── boost-classic/
│   │   │   ├── README.md
│   │   │   ├── base.html
│   │   │   ├── css/
│   │   │   │   ├── boostbook.css
│   │   │   │   └── github.css
│   │   │   ├── js/
│   │   │   │   └── highlight.pack.js
│   │   │   ├── nav.html
│   │   │   ├── scripts/
│   │   │   │   └── update_markdown.py
│   │   │   └── toc.html
│   │   └── boost-experimental/
│   │       ├── base.html
│   │       ├── breadcrumbs.html
│   │       ├── css/
│   │       │   ├── codemirror.css
│   │       │   ├── highlight.css
│   │       │   ├── mdn-like.css
│   │       │   ├── theme.css
│   │       │   └── theme_extra.css
│   │       ├── footer.html
│   │       ├── js/
│   │       │   ├── codemirror/
│   │       │   │   ├── active-line.js
│   │       │   │   ├── clike.js
│   │       │   │   └── codemirror.js
│   │       │   ├── cpp.js
│   │       │   ├── gitter.js
│   │       │   ├── highlight.pack.js
│   │       │   ├── theme.js
│   │       │   └── utility.js
│   │       ├── license/
│   │       │   └── highlight.js/
│   │       │       └── LICENSE
│   │       ├── search.html
│   │       ├── searchbox.html
│   │       ├── toc.html
│   │       └── versions.html
│   ├── try_it.md
│   ├── tutorial.md
│   ├── uml/
│   │   ├── coffee_maker.uml
│   │   └── di.uml
│   └── user_guide.md
├── example/
│   ├── CMakeLists.txt
│   ├── Jamfile.v2
│   ├── annotations.cpp
│   ├── automatic_injection.cpp
│   ├── bind_non_owning_ptr.cpp
│   ├── bindings.cpp
│   ├── configuration.cpp
│   ├── constructor_injection.cpp
│   ├── constructor_signature.cpp
│   ├── custom_policy.cpp
│   ├── custom_provider.cpp
│   ├── custom_scope.cpp
│   ├── deduce_scope.cpp
│   ├── dynamic_bindings.cpp
│   ├── eager_singletons.cpp
│   ├── errors/
│   │   ├── boundable_type_has_disallowed_qualifiers.cpp
│   │   ├── boundable_type_is_abstract.cpp
│   │   ├── boundable_type_is_bound_more_than_once.cpp
│   │   ├── boundable_type_is_neither_a_dependency_nor_an_injector.cpp
│   │   ├── boundable_type_is_not_related_to.cpp
│   │   ├── callable_requires_call_operator.cpp
│   │   ├── configurable_requires_callable_and_providable.cpp
│   │   ├── constructible_must_be_bound.cpp
│   │   ├── creatable_abstract_type_is_not_bound.cpp
│   │   ├── creatable_expose_abstract_type_is_not_bound.cpp
│   │   ├── creatable_instance_is_not_convertible_to.cpp
│   │   ├── creatable_scoped_is_not_convertible_to.cpp
│   │   ├── creatable_type_has_ambiguous_number_of_constructor_parameters.cpp
│   │   ├── creatable_type_has_to_many_constructor_parameters.cpp
│   │   ├── providable_requires_get.cpp
│   │   └── scopable_requires_create.cpp
│   ├── example.cpp
│   ├── fwd_bindings.cpp
│   ├── modules/
│   │   ├── common.hpp
│   │   ├── config.hpp
│   │   ├── controller.cpp
│   │   ├── controller.hpp
│   │   ├── main.cpp
│   │   ├── model.cpp
│   │   ├── model.hpp
│   │   ├── module_model.cpp
│   │   ├── module_model.hpp
│   │   ├── module_view.cpp
│   │   ├── module_view.hpp
│   │   ├── view.cpp
│   │   └── view.hpp
│   ├── modules.cpp
│   ├── motivation.cpp
│   ├── multiple_bindings.cpp
│   ├── multiple_interfaces.cpp
│   ├── performance/
│   │   ├── create_bound_interface.cpp
│   │   ├── create_bound_interface_via_exposed_module.cpp
│   │   ├── create_bound_interface_via_module.cpp
│   │   ├── create_named_type.cpp
│   │   ├── create_type_with_bound_instance.cpp
│   │   └── create_type_without_bindings.cpp
│   ├── pool_provider.cpp
│   ├── scopes.cpp
│   ├── try_it.cpp
│   ├── tutorial/
│   │   ├── basic_annotations_to_the_rescue.cpp
│   │   ├── basic_create_objects_tree.cpp
│   │   ├── basic_decide_the_life_times.cpp
│   │   ├── basic_first_steps_with_bindings.cpp
│   │   ├── basic_first_steps_with_bindings_override.cpp
│   │   ├── basic_first_steps_with_dynamic_bindings.cpp
│   │   ├── basic_first_steps_with_multiple_bindings.cpp
│   │   ├── basic_first_steps_with_template_bindings.cpp
│   │   ├── basic_split_your_configuration.cpp
│   │   └── basic_split_your_configuration_expose.cpp
│   └── user_guide/
│       ├── annotated_constructor_injection.cpp
│       ├── annotated_constructor_injection_with_constructor_definition.cpp
│       ├── annotated_constructor_injection_with_ctor_traits.cpp
│       ├── annotated_constructor_injection_with_the_same_names.cpp
│       ├── bind_cross_platform.cpp
│       ├── bind_deduce_type_to_value.cpp
│       ├── bind_dynamic_bindings.cpp
│       ├── bind_interface_to_implementation.cpp
│       ├── bind_multiple_bindings.cpp
│       ├── bind_multiple_bindings_initializer_list.cpp
│       ├── bind_multiple_interfaces.cpp
│       ├── bind_type_override.cpp
│       ├── bind_type_to_compile_time_value.cpp
│       ├── bind_type_to_value.cpp
│       ├── constructor_injection_aggregate.cpp
│       ├── constructor_injection_ambiguous_constructors_via_BOOST_DI_INJECT.cpp
│       ├── constructor_injection_ambiguous_constructors_via_BOOST_DI_INJECT_TRAITS.cpp
│       ├── constructor_injection_ambiguous_constructors_via_ctor_traits.cpp
│       ├── constructor_injection_ambiguous_constructors_via_inject.cpp
│       ├── constructor_injection_ambiguous_constructors_via_vaargs.cpp
│       ├── constructor_injection_default_values.cpp
│       ├── constructor_injection_direct.cpp
│       ├── constructor_injection_long_parameter_list.cpp
│       ├── constructor_injection_multiple_constructors.cpp
│       ├── injector_empty.cpp
│       ├── module.cpp
│       ├── module_exposed_annotated_type.cpp
│       ├── module_exposed_complex_types.cpp
│       ├── module_exposed_many_types.cpp
│       ├── module_exposed_type.cpp
│       ├── policies_constructible_global.cpp
│       ├── policies_constructible_local.cpp
│       ├── policies_print_type_extended.cpp
│       ├── policies_print_types.cpp
│       ├── providers_heap.cpp
│       ├── providers_heap_no_throw.cpp
│       ├── providers_stack_over_heap.cpp
│       ├── scopes_custom.cpp
│       ├── scopes_deduce_default.cpp
│       ├── scopes_instance.cpp
│       ├── scopes_singleton.cpp
│       └── scopes_unique.cpp
├── extension/
│   ├── CMakeLists.txt
│   ├── Jamfile.v2
│   ├── bindings/
│   │   ├── constructor_bindings.cpp
│   │   └── contextual_bindings.cpp
│   ├── injections/
│   │   ├── assisted_injection.cpp
│   │   ├── concepts.cpp
│   │   ├── factory.cpp
│   │   ├── generics.cpp
│   │   ├── lazy.cpp
│   │   ├── named_parameters.cpp
│   │   └── xml_injection.cpp
│   ├── policies/
│   │   ├── serialize.cpp
│   │   ├── types_dumper.cpp
│   │   └── uml_dumper.cpp
│   ├── providers/
│   │   └── mocks_provider.cpp
│   └── scopes/
│       ├── scoped_scope.cpp
│       ├── session_scope.cpp
│       └── shared_scope.cpp
├── include/
│   └── boost/
│       ├── di/
│       │   ├── aux_/
│       │   │   ├── compiler.hpp
│       │   │   ├── preprocessor.hpp
│       │   │   ├── type_traits.hpp
│       │   │   └── utility.hpp
│       │   ├── bindings.hpp
│       │   ├── concepts/
│       │   │   ├── boundable.hpp
│       │   │   ├── callable.hpp
│       │   │   ├── configurable.hpp
│       │   │   ├── creatable.hpp
│       │   │   ├── providable.hpp
│       │   │   └── scopable.hpp
│       │   ├── config.hpp
│       │   ├── core/
│       │   │   ├── any_type.hpp
│       │   │   ├── array.hpp
│       │   │   ├── binder.hpp
│       │   │   ├── bindings.hpp
│       │   │   ├── dependency.hpp
│       │   │   ├── injector.hpp
│       │   │   ├── policy.hpp
│       │   │   ├── pool.hpp
│       │   │   ├── provider.hpp
│       │   │   └── wrapper.hpp
│       │   ├── fwd.hpp
│       │   ├── fwd_ext.hpp
│       │   ├── inject.hpp
│       │   ├── injector.hpp
│       │   ├── make_injector.hpp
│       │   ├── policies/
│       │   │   └── constructible.hpp
│       │   ├── providers/
│       │   │   ├── heap.hpp
│       │   │   └── stack_over_heap.hpp
│       │   ├── scopes/
│       │   │   ├── deduce.hpp
│       │   │   ├── instance.hpp
│       │   │   ├── singleton.hpp
│       │   │   └── unique.hpp
│       │   ├── type_traits/
│       │   │   ├── ctor_traits.hpp
│       │   │   ├── memory_traits.hpp
│       │   │   ├── named_traits.hpp
│       │   │   ├── rebind_traits.hpp
│       │   │   └── scope_traits.hpp
│       │   └── wrappers/
│       │       ├── shared.hpp
│       │       └── unique.hpp
│       └── di.hpp
├── meta/
│   └── libraries.json
├── test/
│   ├── CMakeLists.txt
│   ├── Jamfile.v2
│   ├── common/
│   │   ├── common.hpp
│   │   ├── fakes/
│   │   │   ├── fake_config.hpp
│   │   │   ├── fake_dependency.hpp
│   │   │   ├── fake_injector.hpp
│   │   │   ├── fake_policy.hpp
│   │   │   ├── fake_pool.hpp
│   │   │   ├── fake_provider.hpp
│   │   │   ├── fake_scope.hpp
│   │   │   └── fake_wrapper.hpp
│   │   ├── test.hpp
│   │   └── utils.hpp
│   ├── ft/
│   │   ├── di_bind.cpp
│   │   ├── di_config.cpp
│   │   ├── di_config_global_policies.cpp
│   │   ├── di_config_global_provider.cpp
│   │   ├── di_errors.cpp
│   │   ├── di_inject.cpp
│   │   ├── di_injector.cpp
│   │   ├── di_injector_except.cpp
│   │   ├── di_module_1.cpp
│   │   ├── di_module_2.cpp
│   │   ├── di_module_3.cpp
│   │   ├── di_no_memory_inc.cpp
│   │   └── di_no_std_inc.cpp
│   ├── pt/
│   │   ├── di_compile_time.cpp
│   │   └── di_run_time.cpp
│   └── ut/
│       ├── aux_/
│       │   ├── preprocessor.cpp
│       │   ├── type_traits.cpp
│       │   └── utility.cpp
│       ├── bindings.cpp
│       ├── concepts/
│       │   ├── boundable.cpp
│       │   ├── callable.cpp
│       │   ├── configurable.cpp
│       │   ├── creatable.cpp
│       │   ├── providable.cpp
│       │   └── scopable.cpp
│       ├── config.cpp
│       ├── core/
│       │   ├── any_type.cpp
│       │   ├── array.cpp
│       │   ├── binder.cpp
│       │   ├── bindings.cpp
│       │   ├── dependency.cpp
│       │   ├── injector.cpp
│       │   ├── policy.cpp
│       │   ├── pool.cpp
│       │   ├── provider.cpp
│       │   └── wrapper.cpp
│       ├── inject.cpp
│       ├── injector.cpp
│       ├── make_injector.cpp
│       ├── policies/
│       │   └── constructible.cpp
│       ├── providers/
│       │   ├── heap.cpp
│       │   └── stack_over_heap.cpp
│       ├── scopes/
│       │   ├── deduce.cpp
│       │   ├── instance.cpp
│       │   ├── singleton.cpp
│       │   └── unique.cpp
│       ├── type_traits/
│       │   ├── ctor_traits.cpp
│       │   ├── memory_traits.cpp
│       │   ├── named_traits.cpp
│       │   ├── rebind_traits.cpp
│       │   └── scope_traits.cpp
│       └── wrappers/
│           ├── shared.cpp
│           └── unique.cpp
└── tools/
    └── pph.sh
Download .txt
Showing preview only (1,214K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (11331 symbols across 331 files)

FILE: benchmark/bind_error/dagger2.java
  type I (line 10) | interface I {
    method dummy (line 11) | public void dummy();
  class Impl (line 14) | class Impl implements I {
    method Impl (line 15) | @Inject Impl() { }
    method dummy (line 16) | @Override public void dummy() { }
  class AppModule (line 19) | @Module
  type AppComponent (line 24) | @Component(modules = AppModule.class)
    method build (line 26) | I build();
  class dagger2 (line 29) | public class dagger2 {
    method main (line 30) | public static void main(String[] args) {

FILE: benchmark/bind_error/di.cpp
  type I (line 14) | struct I {
  type Impl (line 18) | struct Impl : I {
    method dummy (line 19) | void dummy() override {}
  function main (line 30) | int main() {

FILE: benchmark/bind_error/dicpp.cpp
  type I (line 11) | struct I {
  type Impl (line 15) | struct Impl : I {
    method DI_CONSTRUCTOR (line 16) | DI_CONSTRUCTOR(Impl, ()) {}
    method dummy (line 17) | void dummy() override {}
  function module (line 20) | void module(di::registry& r) {
  function main (line 24) | int main() {

FILE: benchmark/bind_error/fruit.cpp
  type I (line 9) | struct I {
  type Impl (line 13) | struct Impl : I {
    method INJECT (line 14) | INJECT(Impl()) {}
    method dummy (line 15) | void dummy() override {}
  function module (line 18) | fruit::Component<I> module() {
  function main (line 23) | int main() {

FILE: benchmark/bind_error/guice.java
  type I (line 9) | interface I {
    method dummy (line 10) | public void dummy();
  class Impl (line 13) | class Impl implements I {
    method Impl (line 14) | @Inject Impl() { }
    method dummy (line 15) | @Override public void dummy() { }
  class Module (line 18) | class Module extends AbstractModule {
    method configure (line 19) | @Override
  class guice (line 25) | public class guice {
    method main (line 26) | public static void main(String[] args) {

FILE: benchmark/bind_error/ninject.cs
  type I (line 9) | interface I {
    method dummy (line 10) | void dummy();
  class Impl (line 13) | class Impl : I {
    method Impl (line 14) | public Impl() { }
    method dummy (line 15) | void I.dummy() { }
  class Module (line 18) | class Module : Ninject.Modules.NinjectModule {
    method Load (line 19) | public override void Load() {
  class ninject (line 24) | class ninject {
    method Main (line 25) | static void Main(string[] args) {

FILE: benchmark/bind_interface/dagger2.java
  type I (line 10) | interface I {
    method dummy (line 11) | public void dummy();
  class Impl (line 14) | class Impl implements I {
    method Impl (line 15) | @Inject Impl() { }
    method dummy (line 16) | @Override public void dummy() { }
  class AppModule (line 19) | @Module
    method provideI (line 21) | @Provides I provideI(Impl impl) { return impl; }
  type AppComponent (line 24) | @Component(modules = AppModule.class)
    method build (line 26) | I build();
  class dagger2 (line 29) | public class dagger2 {
    method main (line 30) | public static void main(String[] args) {

FILE: benchmark/bind_interface/di.cpp
  type I (line 14) | struct I {
  type Impl (line 18) | struct Impl : I {
    method dummy (line 19) | void dummy() override {}
  function test (line 30) | auto test() {
  function main (line 36) | int main() {}

FILE: benchmark/bind_interface/dicpp.cpp
  type I (line 14) | struct I {
  type Impl (line 18) | struct Impl : I {
    method DI_CONSTRUCTOR (line 19) | DI_CONSTRUCTOR(Impl, ()) {}
    method dummy (line 20) | void dummy() override {}
  function module (line 23) | void module(di::registry& r) {
  function test (line 29) | std::unique_ptr<I> test() {
  function main (line 37) | int main() {}

FILE: benchmark/bind_interface/fruit.cpp
  type I (line 12) | struct I {
  type Impl (line 16) | struct Impl : I {
    method INJECT (line 17) | INJECT(Impl()) {}
    method dummy (line 18) | void dummy() override {}
  function module (line 21) | fruit::Component<I> module() {
  function test (line 28) | std::unique_ptr<I> test() {
  function main (line 36) | int main() {}

FILE: benchmark/bind_interface/guice.java
  type I (line 9) | interface I {
    method dummy (line 10) | public void dummy();
  class Impl (line 13) | class Impl implements I {
    method Impl (line 14) | @Inject Impl() { }
    method dummy (line 15) | @Override public void dummy() { }
  class Module (line 18) | class Module extends AbstractModule {
    method configure (line 19) | @Override
  class guice (line 25) | public class guice {
    method main (line 26) | public static void main(String[] args) {

FILE: benchmark/bind_interface/ninject.cs
  type I (line 9) | interface I {
    method dummy (line 10) | void dummy();
  class Impl (line 13) | class Impl : I {
    method Impl (line 14) | public Impl() { }
    method dummy (line 15) | void I.dummy() { }
  class Module (line 18) | class Module : Ninject.Modules.NinjectModule {
    method Load (line 19) | public override void Load() {
  class ninject (line 24) | class ninject {
    method Main (line 25) | static void Main(string[] args) {

FILE: benchmark/bind_value/dagger2.java
  class AppModule (line 9) | @Module
    method provideint (line 11) | @Provides int provideint() { return 42; }
  type AppComponent (line 14) | @Component(modules = AppModule.class)
    method build (line 16) | int build();
  class dagger2 (line 19) | public class dagger2 {
    method main (line 20) | public static void main(String[] args) {

FILE: benchmark/bind_value/di.cpp
  function test (line 19) | auto test() {
  function main (line 25) | int main() {}

FILE: benchmark/bind_value/dicpp.cpp
  function module (line 10) | void module(di::registry& r) {
  function test (line 16) | auto test() {
  function main (line 23) | int main() {}

FILE: benchmark/bind_value/fruit.cpp
  function module (line 11) | fruit::Component<int> module() {
  function test (line 17) | auto test() {
  function main (line 23) | int main() {}

FILE: benchmark/bind_value/guice.java
  class Module (line 9) | class Module extends AbstractModule {
    method configure (line 10) | @Override
  class guice (line 16) | public class guice {
    method main (line 17) | public static void main(String[] args) {

FILE: benchmark/bind_value/ninject.cs
  class Module (line 9) | class Module : Ninject.Modules.NinjectModule {
    method Load (line 10) | public override void Load() {
  class ninject (line 15) | class ninject {
    method Main (line 16) | static void Main(string[] args) {

FILE: benchmark/create_complex/dagger2.java
  class X00 (line 10) | class X00 { @Inject X00() { } }
    method X00 (line 10) | @Inject X00() { }
  class X01 (line 11) | class X01 { @Inject X01(X00 p1) { } }
    method X01 (line 11) | @Inject X01(X00 p1) { }
  class X02 (line 12) | class X02 { @Inject X02(X00 p1, X01 p2) { } }
    method X02 (line 12) | @Inject X02(X00 p1, X01 p2) { }
  class X03 (line 13) | class X03 { @Inject X03(X00 p1, X01 p2, X02 p3) { } }
    method X03 (line 13) | @Inject X03(X00 p1, X01 p2, X02 p3) { }
  class X04 (line 14) | class X04 { @Inject X04(X00 p1, X01 p2, X02 p3, X03 p4) { } }
    method X04 (line 14) | @Inject X04(X00 p1, X01 p2, X02 p3, X03 p4) { }
  class X05 (line 15) | class X05 { @Inject X05(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5) { } }
    method X05 (line 15) | @Inject X05(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5) { }
  class X06 (line 16) | class X06 { @Inject X06(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6) ...
    method X06 (line 16) | @Inject X06(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6) { }
  class X07 (line 17) | class X07 { @Inject X07(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6, ...
    method X07 (line 17) | @Inject X07(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6, X06 p7) { }
  class X08 (line 18) | class X08 { @Inject X08(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6, ...
    method X08 (line 18) | @Inject X08(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6, X06 p7, X0...
  class X09 (line 19) | class X09 { @Inject X09(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6, ...
    method X09 (line 19) | @Inject X09(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6, X06 p7, X0...
  class X10 (line 20) | class X10 { @Inject X10(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6, ...
    method X10 (line 20) | @Inject X10(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6, X06 p7, X0...
  class X11 (line 21) | class X11 { @Inject X11(X01 p1, X02 p2, X03 p3, X04 p4, X05 p5, X06 p6, ...
    method X11 (line 21) | @Inject X11(X01 p1, X02 p2, X03 p3, X04 p4, X05 p5, X06 p6, X07 p7, X0...
  class X12 (line 22) | class X12 { @Inject X12(X02 p1, X03 p2, X04 p3, X05 p4, X06 p5, X07 p6, ...
    method X12 (line 22) | @Inject X12(X02 p1, X03 p2, X04 p3, X05 p4, X06 p5, X07 p6, X08 p7, X0...
  class X13 (line 23) | class X13 { @Inject X13(X03 p1, X04 p2, X05 p3, X06 p4, X07 p5, X08 p6, ...
    method X13 (line 23) | @Inject X13(X03 p1, X04 p2, X05 p3, X06 p4, X07 p5, X08 p6, X09 p7, X1...
  class X14 (line 24) | class X14 { @Inject X14(X04 p1, X05 p2, X06 p3, X07 p4, X08 p5, X09 p6, ...
    method X14 (line 24) | @Inject X14(X04 p1, X05 p2, X06 p3, X07 p4, X08 p5, X09 p6, X10 p7, X1...
  class X15 (line 25) | class X15 { @Inject X15(X05 p1, X06 p2, X07 p3, X08 p4, X09 p5, X10 p6, ...
    method X15 (line 25) | @Inject X15(X05 p1, X06 p2, X07 p3, X08 p4, X09 p5, X10 p6, X11 p7, X1...
  class X16 (line 26) | class X16 { @Inject X16(X06 p1, X07 p2, X08 p3, X09 p4, X10 p5, X11 p6, ...
    method X16 (line 26) | @Inject X16(X06 p1, X07 p2, X08 p3, X09 p4, X10 p5, X11 p6, X12 p7, X1...
  class X17 (line 27) | class X17 { @Inject X17(X07 p1, X08 p2, X09 p3, X10 p4, X11 p5, X12 p6, ...
    method X17 (line 27) | @Inject X17(X07 p1, X08 p2, X09 p3, X10 p4, X11 p5, X12 p6, X13 p7, X1...
  class X18 (line 28) | class X18 { @Inject X18(X08 p1, X09 p2, X10 p3, X11 p4, X12 p5, X13 p6, ...
    method X18 (line 28) | @Inject X18(X08 p1, X09 p2, X10 p3, X11 p4, X12 p5, X13 p6, X14 p7, X1...
  class X19 (line 29) | class X19 { @Inject X19(X09 p1, X10 p2, X11 p3, X12 p4, X13 p5, X14 p6, ...
    method X19 (line 29) | @Inject X19(X09 p1, X10 p2, X11 p3, X12 p4, X13 p5, X14 p6, X15 p7, X1...
  class X20 (line 30) | class X20 { @Inject X20(X10 p1, X11 p2, X12 p3, X13 p4, X14 p5, X15 p6, ...
    method X20 (line 30) | @Inject X20(X10 p1, X11 p2, X12 p3, X13 p4, X14 p5, X15 p6, X16 p7, X1...
  class X21 (line 31) | class X21 { @Inject X21(X11 p1, X12 p2, X13 p3, X14 p4, X15 p5, X16 p6, ...
    method X21 (line 31) | @Inject X21(X11 p1, X12 p2, X13 p3, X14 p4, X15 p5, X16 p6, X17 p7, X1...
  class X22 (line 32) | class X22 { @Inject X22(X12 p1, X13 p2, X14 p3, X15 p4, X16 p5, X17 p6, ...
    method X22 (line 32) | @Inject X22(X12 p1, X13 p2, X14 p3, X15 p4, X16 p5, X17 p6, X18 p7, X1...
  class X23 (line 33) | class X23 { @Inject X23(X13 p1, X14 p2, X15 p3, X16 p4, X17 p5, X18 p6, ...
    method X23 (line 33) | @Inject X23(X13 p1, X14 p2, X15 p3, X16 p4, X17 p5, X18 p6, X19 p7, X2...
  class X24 (line 34) | class X24 { @Inject X24(X14 p1, X15 p2, X16 p3, X17 p4, X18 p5, X19 p6, ...
    method X24 (line 34) | @Inject X24(X14 p1, X15 p2, X16 p3, X17 p4, X18 p5, X19 p6, X20 p7, X2...
  class X25 (line 35) | class X25 { @Inject X25(X15 p1, X16 p2, X17 p3, X18 p4, X19 p5, X20 p6, ...
    method X25 (line 35) | @Inject X25(X15 p1, X16 p2, X17 p3, X18 p4, X19 p5, X20 p6, X21 p7, X2...
  class X26 (line 36) | class X26 { @Inject X26(X16 p1, X17 p2, X18 p3, X19 p4, X20 p5, X21 p6, ...
    method X26 (line 36) | @Inject X26(X16 p1, X17 p2, X18 p3, X19 p4, X20 p5, X21 p6, X22 p7, X2...
  class X27 (line 37) | class X27 { @Inject X27(X17 p1, X18 p2, X19 p3, X20 p4, X21 p5, X22 p6, ...
    method X27 (line 37) | @Inject X27(X17 p1, X18 p2, X19 p3, X20 p4, X21 p5, X22 p6, X23 p7, X2...
  class X28 (line 38) | class X28 { @Inject X28(X18 p1, X19 p2, X20 p3, X21 p4, X22 p5, X23 p6, ...
    method X28 (line 38) | @Inject X28(X18 p1, X19 p2, X20 p3, X21 p4, X22 p5, X23 p6, X24 p7, X2...
  class X29 (line 39) | class X29 { @Inject X29(X19 p1, X20 p2, X21 p3, X22 p4, X23 p5, X24 p6, ...
    method X29 (line 39) | @Inject X29(X19 p1, X20 p2, X21 p3, X22 p4, X23 p5, X24 p6, X25 p7, X2...
  class X30 (line 40) | class X30 { @Inject X30(X20 p1, X21 p2, X22 p3, X23 p4, X24 p5, X25 p6, ...
    method X30 (line 40) | @Inject X30(X20 p1, X21 p2, X22 p3, X23 p4, X24 p5, X25 p6, X26 p7, X2...
  class X31 (line 41) | class X31 { @Inject X31(X21 p1, X22 p2, X23 p3, X24 p4, X25 p5, X26 p6, ...
    method X31 (line 41) | @Inject X31(X21 p1, X22 p2, X23 p3, X24 p4, X25 p5, X26 p6, X27 p7, X2...
  class X32 (line 42) | class X32 { @Inject X32(X22 p1, X23 p2, X24 p3, X25 p4, X26 p5, X27 p6, ...
    method X32 (line 42) | @Inject X32(X22 p1, X23 p2, X24 p3, X25 p4, X26 p5, X27 p6, X28 p7, X2...
  class X33 (line 43) | class X33 { @Inject X33(X23 p1, X24 p2, X25 p3, X26 p4, X27 p5, X28 p6, ...
    method X33 (line 43) | @Inject X33(X23 p1, X24 p2, X25 p3, X26 p4, X27 p5, X28 p6, X29 p7, X3...
  class X34 (line 44) | class X34 { @Inject X34(X24 p1, X25 p2, X26 p3, X27 p4, X28 p5, X29 p6, ...
    method X34 (line 44) | @Inject X34(X24 p1, X25 p2, X26 p3, X27 p4, X28 p5, X29 p6, X30 p7, X3...
  class X35 (line 45) | class X35 { @Inject X35(X25 p1, X26 p2, X27 p3, X28 p4, X29 p5, X30 p6, ...
    method X35 (line 45) | @Inject X35(X25 p1, X26 p2, X27 p3, X28 p4, X29 p5, X30 p6, X31 p7, X3...
  class X36 (line 46) | class X36 { @Inject X36(X26 p1, X27 p2, X28 p3, X29 p4, X30 p5, X31 p6, ...
    method X36 (line 46) | @Inject X36(X26 p1, X27 p2, X28 p3, X29 p4, X30 p5, X31 p6, X32 p7, X3...
  class X37 (line 47) | class X37 { @Inject X37(X27 p1, X28 p2, X29 p3, X30 p4, X31 p5, X32 p6, ...
    method X37 (line 47) | @Inject X37(X27 p1, X28 p2, X29 p3, X30 p4, X31 p5, X32 p6, X33 p7, X3...
  class X38 (line 48) | class X38 { @Inject X38(X28 p1, X29 p2, X30 p3, X31 p4, X32 p5, X33 p6, ...
    method X38 (line 48) | @Inject X38(X28 p1, X29 p2, X30 p3, X31 p4, X32 p5, X33 p6, X34 p7, X3...
  class X39 (line 49) | class X39 { @Inject X39(X29 p1, X30 p2, X31 p3, X32 p4, X33 p5, X34 p6, ...
    method X39 (line 49) | @Inject X39(X29 p1, X30 p2, X31 p3, X32 p4, X33 p5, X34 p6, X35 p7, X3...
  class X40 (line 50) | class X40 { @Inject X40(X30 p1, X31 p2, X32 p3, X33 p4, X34 p5, X35 p6, ...
    method X40 (line 50) | @Inject X40(X30 p1, X31 p2, X32 p3, X33 p4, X34 p5, X35 p6, X36 p7, X3...
  class X41 (line 51) | class X41 { @Inject X41(X31 p1, X32 p2, X33 p3, X34 p4, X35 p5, X36 p6, ...
    method X41 (line 51) | @Inject X41(X31 p1, X32 p2, X33 p3, X34 p4, X35 p5, X36 p6, X37 p7, X3...
  class X42 (line 52) | class X42 { @Inject X42(X32 p1, X33 p2, X34 p3, X35 p4, X36 p5, X37 p6, ...
    method X42 (line 52) | @Inject X42(X32 p1, X33 p2, X34 p3, X35 p4, X36 p5, X37 p6, X38 p7, X3...
  class X43 (line 53) | class X43 { @Inject X43(X33 p1, X34 p2, X35 p3, X36 p4, X37 p5, X38 p6, ...
    method X43 (line 53) | @Inject X43(X33 p1, X34 p2, X35 p3, X36 p4, X37 p5, X38 p6, X39 p7, X4...
  class X44 (line 54) | class X44 { @Inject X44(X34 p1, X35 p2, X36 p3, X37 p4, X38 p5, X39 p6, ...
    method X44 (line 54) | @Inject X44(X34 p1, X35 p2, X36 p3, X37 p4, X38 p5, X39 p6, X40 p7, X4...
  class X45 (line 55) | class X45 { @Inject X45(X35 p1, X36 p2, X37 p3, X38 p4, X39 p5, X40 p6, ...
    method X45 (line 55) | @Inject X45(X35 p1, X36 p2, X37 p3, X38 p4, X39 p5, X40 p6, X41 p7, X4...
  class X46 (line 56) | class X46 { @Inject X46(X36 p1, X37 p2, X38 p3, X39 p4, X40 p5, X41 p6, ...
    method X46 (line 56) | @Inject X46(X36 p1, X37 p2, X38 p3, X39 p4, X40 p5, X41 p6, X42 p7, X4...
  class X47 (line 57) | class X47 { @Inject X47(X37 p1, X38 p2, X39 p3, X40 p4, X41 p5, X42 p6, ...
    method X47 (line 57) | @Inject X47(X37 p1, X38 p2, X39 p3, X40 p4, X41 p5, X42 p6, X43 p7, X4...
  class X48 (line 58) | class X48 { @Inject X48(X38 p1, X39 p2, X40 p3, X41 p4, X42 p5, X43 p6, ...
    method X48 (line 58) | @Inject X48(X38 p1, X39 p2, X40 p3, X41 p4, X42 p5, X43 p6, X44 p7, X4...
  class X49 (line 59) | class X49 { @Inject X49(X39 p1, X40 p2, X41 p3, X42 p4, X43 p5, X44 p6, ...
    method X49 (line 59) | @Inject X49(X39 p1, X40 p2, X41 p3, X42 p4, X43 p5, X44 p6, X45 p7, X4...
  class X50 (line 60) | class X50 { @Inject X50(X40 p1, X41 p2, X42 p3, X43 p4, X44 p5, X45 p6, ...
    method X50 (line 60) | @Inject X50(X40 p1, X41 p2, X42 p3, X43 p4, X44 p5, X45 p6, X46 p7, X4...
  class X51 (line 61) | class X51 { @Inject X51(X41 p1, X42 p2, X43 p3, X44 p4, X45 p5, X46 p6, ...
    method X51 (line 61) | @Inject X51(X41 p1, X42 p2, X43 p3, X44 p4, X45 p5, X46 p6, X47 p7, X4...
  class X52 (line 62) | class X52 { @Inject X52(X42 p1, X43 p2, X44 p3, X45 p4, X46 p5, X47 p6, ...
    method X52 (line 62) | @Inject X52(X42 p1, X43 p2, X44 p3, X45 p4, X46 p5, X47 p6, X48 p7, X4...
  class X53 (line 63) | class X53 { @Inject X53(X43 p1, X44 p2, X45 p3, X46 p4, X47 p5, X48 p6, ...
    method X53 (line 63) | @Inject X53(X43 p1, X44 p2, X45 p3, X46 p4, X47 p5, X48 p6, X49 p7, X5...
  class X54 (line 64) | class X54 { @Inject X54(X44 p1, X45 p2, X46 p3, X47 p4, X48 p5, X49 p6, ...
    method X54 (line 64) | @Inject X54(X44 p1, X45 p2, X46 p3, X47 p4, X48 p5, X49 p6, X50 p7, X5...
  class X55 (line 65) | class X55 { @Inject X55(X45 p1, X46 p2, X47 p3, X48 p4, X49 p5, X50 p6, ...
    method X55 (line 65) | @Inject X55(X45 p1, X46 p2, X47 p3, X48 p4, X49 p5, X50 p6, X51 p7, X5...
  class X56 (line 66) | class X56 { @Inject X56(X46 p1, X47 p2, X48 p3, X49 p4, X50 p5, X51 p6, ...
    method X56 (line 66) | @Inject X56(X46 p1, X47 p2, X48 p3, X49 p4, X50 p5, X51 p6, X52 p7, X5...
  class X57 (line 67) | class X57 { @Inject X57(X47 p1, X48 p2, X49 p3, X50 p4, X51 p5, X52 p6, ...
    method X57 (line 67) | @Inject X57(X47 p1, X48 p2, X49 p3, X50 p4, X51 p5, X52 p6, X53 p7, X5...
  class X58 (line 68) | class X58 { @Inject X58(X48 p1, X49 p2, X50 p3, X51 p4, X52 p5, X53 p6, ...
    method X58 (line 68) | @Inject X58(X48 p1, X49 p2, X50 p3, X51 p4, X52 p5, X53 p6, X54 p7, X5...
  class X59 (line 69) | class X59 { @Inject X59(X49 p1, X50 p2, X51 p3, X52 p4, X53 p5, X54 p6, ...
    method X59 (line 69) | @Inject X59(X49 p1, X50 p2, X51 p3, X52 p4, X53 p5, X54 p6, X55 p7, X5...
  class X60 (line 70) | class X60 { @Inject X60(X50 p1, X51 p2, X52 p3, X53 p4, X54 p5, X55 p6, ...
    method X60 (line 70) | @Inject X60(X50 p1, X51 p2, X52 p3, X53 p4, X54 p5, X55 p6, X56 p7, X5...
  class X61 (line 71) | class X61 { @Inject X61(X51 p1, X52 p2, X53 p3, X54 p4, X55 p5, X56 p6, ...
    method X61 (line 71) | @Inject X61(X51 p1, X52 p2, X53 p3, X54 p4, X55 p5, X56 p6, X57 p7, X5...
  class X62 (line 72) | class X62 { @Inject X62(X52 p1, X53 p2, X54 p3, X55 p4, X56 p5, X57 p6, ...
    method X62 (line 72) | @Inject X62(X52 p1, X53 p2, X54 p3, X55 p4, X56 p5, X57 p6, X58 p7, X5...
  class X63 (line 73) | class X63 { @Inject X63(X53 p1, X54 p2, X55 p3, X56 p4, X57 p5, X58 p6, ...
    method X63 (line 73) | @Inject X63(X53 p1, X54 p2, X55 p3, X56 p4, X57 p5, X58 p6, X59 p7, X6...
  class X64 (line 74) | class X64 { @Inject X64(X54 p1, X55 p2, X56 p3, X57 p4, X58 p5, X59 p6, ...
    method X64 (line 74) | @Inject X64(X54 p1, X55 p2, X56 p3, X57 p4, X58 p5, X59 p6, X60 p7, X6...
  class X65 (line 75) | class X65 { @Inject X65(X55 p1, X56 p2, X57 p3, X58 p4, X59 p5, X60 p6, ...
    method X65 (line 75) | @Inject X65(X55 p1, X56 p2, X57 p3, X58 p4, X59 p5, X60 p6, X61 p7, X6...
  class X66 (line 76) | class X66 { @Inject X66(X56 p1, X57 p2, X58 p3, X59 p4, X60 p5, X61 p6, ...
    method X66 (line 76) | @Inject X66(X56 p1, X57 p2, X58 p3, X59 p4, X60 p5, X61 p6, X62 p7, X6...
  class X67 (line 77) | class X67 { @Inject X67(X57 p1, X58 p2, X59 p3, X60 p4, X61 p5, X62 p6, ...
    method X67 (line 77) | @Inject X67(X57 p1, X58 p2, X59 p3, X60 p4, X61 p5, X62 p6, X63 p7, X6...
  class X68 (line 78) | class X68 { @Inject X68(X58 p1, X59 p2, X60 p3, X61 p4, X62 p5, X63 p6, ...
    method X68 (line 78) | @Inject X68(X58 p1, X59 p2, X60 p3, X61 p4, X62 p5, X63 p6, X64 p7, X6...
  class X69 (line 79) | class X69 { @Inject X69(X59 p1, X60 p2, X61 p3, X62 p4, X63 p5, X64 p6, ...
    method X69 (line 79) | @Inject X69(X59 p1, X60 p2, X61 p3, X62 p4, X63 p5, X64 p6, X65 p7, X6...
  class X70 (line 80) | class X70 { @Inject X70(X60 p1, X61 p2, X62 p3, X63 p4, X64 p5, X65 p6, ...
    method X70 (line 80) | @Inject X70(X60 p1, X61 p2, X62 p3, X63 p4, X64 p5, X65 p6, X66 p7, X6...
  class X71 (line 81) | class X71 { @Inject X71(X61 p1, X62 p2, X63 p3, X64 p4, X65 p5, X66 p6, ...
    method X71 (line 81) | @Inject X71(X61 p1, X62 p2, X63 p3, X64 p4, X65 p5, X66 p6, X67 p7, X6...
  class X72 (line 82) | class X72 { @Inject X72(X62 p1, X63 p2, X64 p3, X65 p4, X66 p5, X67 p6, ...
    method X72 (line 82) | @Inject X72(X62 p1, X63 p2, X64 p3, X65 p4, X66 p5, X67 p6, X68 p7, X6...
  class X73 (line 83) | class X73 { @Inject X73(X63 p1, X64 p2, X65 p3, X66 p4, X67 p5, X68 p6, ...
    method X73 (line 83) | @Inject X73(X63 p1, X64 p2, X65 p3, X66 p4, X67 p5, X68 p6, X69 p7, X7...
  class X74 (line 84) | class X74 { @Inject X74(X64 p1, X65 p2, X66 p3, X67 p4, X68 p5, X69 p6, ...
    method X74 (line 84) | @Inject X74(X64 p1, X65 p2, X66 p3, X67 p4, X68 p5, X69 p6, X70 p7, X7...
  class X75 (line 85) | class X75 { @Inject X75(X65 p1, X66 p2, X67 p3, X68 p4, X69 p5, X70 p6, ...
    method X75 (line 85) | @Inject X75(X65 p1, X66 p2, X67 p3, X68 p4, X69 p5, X70 p6, X71 p7, X7...
  class X76 (line 86) | class X76 { @Inject X76(X66 p1, X67 p2, X68 p3, X69 p4, X70 p5, X71 p6, ...
    method X76 (line 86) | @Inject X76(X66 p1, X67 p2, X68 p3, X69 p4, X70 p5, X71 p6, X72 p7, X7...
  class X77 (line 87) | class X77 { @Inject X77(X67 p1, X68 p2, X69 p3, X70 p4, X71 p5, X72 p6, ...
    method X77 (line 87) | @Inject X77(X67 p1, X68 p2, X69 p3, X70 p4, X71 p5, X72 p6, X73 p7, X7...
  class X78 (line 88) | class X78 { @Inject X78(X68 p1, X69 p2, X70 p3, X71 p4, X72 p5, X73 p6, ...
    method X78 (line 88) | @Inject X78(X68 p1, X69 p2, X70 p3, X71 p4, X72 p5, X73 p6, X74 p7, X7...
  class X79 (line 89) | class X79 { @Inject X79(X69 p1, X70 p2, X71 p3, X72 p4, X73 p5, X74 p6, ...
    method X79 (line 89) | @Inject X79(X69 p1, X70 p2, X71 p3, X72 p4, X73 p5, X74 p6, X75 p7, X7...
  class X80 (line 90) | class X80 { @Inject X80(X70 p1, X71 p2, X72 p3, X73 p4, X74 p5, X75 p6, ...
    method X80 (line 90) | @Inject X80(X70 p1, X71 p2, X72 p3, X73 p4, X74 p5, X75 p6, X76 p7, X7...
  class X81 (line 91) | class X81 { @Inject X81(X71 p1, X72 p2, X73 p3, X74 p4, X75 p5, X76 p6, ...
    method X81 (line 91) | @Inject X81(X71 p1, X72 p2, X73 p3, X74 p4, X75 p5, X76 p6, X77 p7, X7...
  class X82 (line 92) | class X82 { @Inject X82(X72 p1, X73 p2, X74 p3, X75 p4, X76 p5, X77 p6, ...
    method X82 (line 92) | @Inject X82(X72 p1, X73 p2, X74 p3, X75 p4, X76 p5, X77 p6, X78 p7, X7...
  class X83 (line 93) | class X83 { @Inject X83(X73 p1, X74 p2, X75 p3, X76 p4, X77 p5, X78 p6, ...
    method X83 (line 93) | @Inject X83(X73 p1, X74 p2, X75 p3, X76 p4, X77 p5, X78 p6, X79 p7, X8...
  class X84 (line 94) | class X84 { @Inject X84(X74 p1, X75 p2, X76 p3, X77 p4, X78 p5, X79 p6, ...
    method X84 (line 94) | @Inject X84(X74 p1, X75 p2, X76 p3, X77 p4, X78 p5, X79 p6, X80 p7, X8...
  class X85 (line 95) | class X85 { @Inject X85(X75 p1, X76 p2, X77 p3, X78 p4, X79 p5, X80 p6, ...
    method X85 (line 95) | @Inject X85(X75 p1, X76 p2, X77 p3, X78 p4, X79 p5, X80 p6, X81 p7, X8...
  class X86 (line 96) | class X86 { @Inject X86(X76 p1, X77 p2, X78 p3, X79 p4, X80 p5, X81 p6, ...
    method X86 (line 96) | @Inject X86(X76 p1, X77 p2, X78 p3, X79 p4, X80 p5, X81 p6, X82 p7, X8...
  class X87 (line 97) | class X87 { @Inject X87(X77 p1, X78 p2, X79 p3, X80 p4, X81 p5, X82 p6, ...
    method X87 (line 97) | @Inject X87(X77 p1, X78 p2, X79 p3, X80 p4, X81 p5, X82 p6, X83 p7, X8...
  class X88 (line 98) | class X88 { @Inject X88(X78 p1, X79 p2, X80 p3, X81 p4, X82 p5, X83 p6, ...
    method X88 (line 98) | @Inject X88(X78 p1, X79 p2, X80 p3, X81 p4, X82 p5, X83 p6, X84 p7, X8...
  class X89 (line 99) | class X89 { @Inject X89(X79 p1, X80 p2, X81 p3, X82 p4, X83 p5, X84 p6, ...
    method X89 (line 99) | @Inject X89(X79 p1, X80 p2, X81 p3, X82 p4, X83 p5, X84 p6, X85 p7, X8...
  class X90 (line 100) | class X90 { @Inject X90(X80 p1, X81 p2, X82 p3, X83 p4, X84 p5, X85 p6, ...
    method X90 (line 100) | @Inject X90(X80 p1, X81 p2, X82 p3, X83 p4, X84 p5, X85 p6, X86 p7, X8...
  class X91 (line 101) | class X91 { @Inject X91(X81 p1, X82 p2, X83 p3, X84 p4, X85 p5, X86 p6, ...
    method X91 (line 101) | @Inject X91(X81 p1, X82 p2, X83 p3, X84 p4, X85 p5, X86 p6, X87 p7, X8...
  class X92 (line 102) | class X92 { @Inject X92(X82 p1, X83 p2, X84 p3, X85 p4, X86 p5, X87 p6, ...
    method X92 (line 102) | @Inject X92(X82 p1, X83 p2, X84 p3, X85 p4, X86 p5, X87 p6, X88 p7, X8...
  class X93 (line 103) | class X93 { @Inject X93(X83 p1, X84 p2, X85 p3, X86 p4, X87 p5, X88 p6, ...
    method X93 (line 103) | @Inject X93(X83 p1, X84 p2, X85 p3, X86 p4, X87 p5, X88 p6, X89 p7, X9...
  class X94 (line 104) | class X94 { @Inject X94(X84 p1, X85 p2, X86 p3, X87 p4, X88 p5, X89 p6, ...
    method X94 (line 104) | @Inject X94(X84 p1, X85 p2, X86 p3, X87 p4, X88 p5, X89 p6, X90 p7, X9...
  class X95 (line 105) | class X95 { @Inject X95(X85 p1, X86 p2, X87 p3, X88 p4, X89 p5, X90 p6, ...
    method X95 (line 105) | @Inject X95(X85 p1, X86 p2, X87 p3, X88 p4, X89 p5, X90 p6, X91 p7, X9...
  class X96 (line 106) | class X96 { @Inject X96(X86 p1, X87 p2, X88 p3, X89 p4, X90 p5, X91 p6, ...
    method X96 (line 106) | @Inject X96(X86 p1, X87 p2, X88 p3, X89 p4, X90 p5, X91 p6, X92 p7, X9...
  class X97 (line 107) | class X97 { @Inject X97(X87 p1, X88 p2, X89 p3, X90 p4, X91 p5, X92 p6, ...
    method X97 (line 107) | @Inject X97(X87 p1, X88 p2, X89 p3, X90 p4, X91 p5, X92 p6, X93 p7, X9...
  class X98 (line 108) | class X98 { @Inject X98(X88 p1, X89 p2, X90 p3, X91 p4, X92 p5, X93 p6, ...
    method X98 (line 108) | @Inject X98(X88 p1, X89 p2, X90 p3, X91 p4, X92 p5, X93 p6, X94 p7, X9...
  class X99 (line 109) | class X99 { @Inject X99(X89 p1, X90 p2, X91 p3, X92 p4, X93 p5, X94 p6, ...
    method X99 (line 109) | @Inject X99(X89 p1, X90 p2, X91 p3, X92 p4, X93 p5, X94 p6, X95 p7, X9...
  type I00 (line 110) | interface I00 { public void dummy(); }
    method dummy (line 110) | public void dummy();
  class Impl00 (line 110) | class Impl00 implements I00 { @Inject Impl00(X00 p1, X01 p2, X02 p3, X03...
    method Impl00 (line 110) | @Inject Impl00(X00 p1, X01 p2, X02 p3, X03 p4, X04 p5, X05 p6, X06 p7,...
    method dummy (line 110) | @Override public void dummy() { }
  type I01 (line 111) | interface I01 { public void dummy(); }
    method dummy (line 111) | public void dummy();
  class Impl01 (line 111) | class Impl01 implements I01 { @Inject Impl01(X01 p1, X02 p2, X03 p3, X04...
    method Impl01 (line 111) | @Inject Impl01(X01 p1, X02 p2, X03 p3, X04 p4, X05 p5, X06 p6, X07 p7,...
    method dummy (line 111) | @Override public void dummy() { }
  type I02 (line 112) | interface I02 { public void dummy(); }
    method dummy (line 112) | public void dummy();
  class Impl02 (line 112) | class Impl02 implements I02 { @Inject Impl02(X02 p1, X03 p2, X04 p3, X05...
    method Impl02 (line 112) | @Inject Impl02(X02 p1, X03 p2, X04 p3, X05 p4, X06 p5, X07 p6, X08 p7,...
    method dummy (line 112) | @Override public void dummy() { }
  type I03 (line 113) | interface I03 { public void dummy(); }
    method dummy (line 113) | public void dummy();
  class Impl03 (line 113) | class Impl03 implements I03 { @Inject Impl03(X03 p1, X04 p2, X05 p3, X06...
    method Impl03 (line 113) | @Inject Impl03(X03 p1, X04 p2, X05 p3, X06 p4, X07 p5, X08 p6, X09 p7,...
    method dummy (line 113) | @Override public void dummy() { }
  type I04 (line 114) | interface I04 { public void dummy(); }
    method dummy (line 114) | public void dummy();
  class Impl04 (line 114) | class Impl04 implements I04 { @Inject Impl04(X04 p1, X05 p2, X06 p3, X07...
    method Impl04 (line 114) | @Inject Impl04(X04 p1, X05 p2, X06 p3, X07 p4, X08 p5, X09 p6, X10 p7,...
    method dummy (line 114) | @Override public void dummy() { }
  type I05 (line 115) | interface I05 { public void dummy(); }
    method dummy (line 115) | public void dummy();
  class Impl05 (line 115) | class Impl05 implements I05 { @Inject Impl05(X05 p1, X06 p2, X07 p3, X08...
    method Impl05 (line 115) | @Inject Impl05(X05 p1, X06 p2, X07 p3, X08 p4, X09 p5, X10 p6, X11 p7,...
    method dummy (line 115) | @Override public void dummy() { }
  type I06 (line 116) | interface I06 { public void dummy(); }
    method dummy (line 116) | public void dummy();
  class Impl06 (line 116) | class Impl06 implements I06 { @Inject Impl06(X06 p1, X07 p2, X08 p3, X09...
    method Impl06 (line 116) | @Inject Impl06(X06 p1, X07 p2, X08 p3, X09 p4, X10 p5, X11 p6, X12 p7,...
    method dummy (line 116) | @Override public void dummy() { }
  type I07 (line 117) | interface I07 { public void dummy(); }
    method dummy (line 117) | public void dummy();
  class Impl07 (line 117) | class Impl07 implements I07 { @Inject Impl07(X07 p1, X08 p2, X09 p3, X10...
    method Impl07 (line 117) | @Inject Impl07(X07 p1, X08 p2, X09 p3, X10 p4, X11 p5, X12 p6, X13 p7,...
    method dummy (line 117) | @Override public void dummy() { }
  type I08 (line 118) | interface I08 { public void dummy(); }
    method dummy (line 118) | public void dummy();
  class Impl08 (line 118) | class Impl08 implements I08 { @Inject Impl08(X08 p1, X09 p2, X10 p3, X11...
    method Impl08 (line 118) | @Inject Impl08(X08 p1, X09 p2, X10 p3, X11 p4, X12 p5, X13 p6, X14 p7,...
    method dummy (line 118) | @Override public void dummy() { }
  type I09 (line 119) | interface I09 { public void dummy(); }
    method dummy (line 119) | public void dummy();
  class Impl09 (line 119) | class Impl09 implements I09 { @Inject Impl09(X09 p1, X10 p2, X11 p3, X12...
    method Impl09 (line 119) | @Inject Impl09(X09 p1, X10 p2, X11 p3, X12 p4, X13 p5, X14 p6, X15 p7,...
    method dummy (line 119) | @Override public void dummy() { }
  type I10 (line 120) | interface I10 { public void dummy(); }
    method dummy (line 120) | public void dummy();
  class Impl10 (line 120) | class Impl10 implements I10 { @Inject Impl10(X10 p1, X11 p2, X12 p3, X13...
    method Impl10 (line 120) | @Inject Impl10(X10 p1, X11 p2, X12 p3, X13 p4, X14 p5, X15 p6, X16 p7,...
    method dummy (line 120) | @Override public void dummy() { }
  type I11 (line 121) | interface I11 { public void dummy(); }
    method dummy (line 121) | public void dummy();
  class Impl11 (line 121) | class Impl11 implements I11 { @Inject Impl11(X11 p1, X12 p2, X13 p3, X14...
    method Impl11 (line 121) | @Inject Impl11(X11 p1, X12 p2, X13 p3, X14 p4, X15 p5, X16 p6, X17 p7,...
    method dummy (line 121) | @Override public void dummy() { }
  type I12 (line 122) | interface I12 { public void dummy(); }
    method dummy (line 122) | public void dummy();
  class Impl12 (line 122) | class Impl12 implements I12 { @Inject Impl12(X12 p1, X13 p2, X14 p3, X15...
    method Impl12 (line 122) | @Inject Impl12(X12 p1, X13 p2, X14 p3, X15 p4, X16 p5, X17 p6, X18 p7,...
    method dummy (line 122) | @Override public void dummy() { }
  type I13 (line 123) | interface I13 { public void dummy(); }
    method dummy (line 123) | public void dummy();
  class Impl13 (line 123) | class Impl13 implements I13 { @Inject Impl13(X13 p1, X14 p2, X15 p3, X16...
    method Impl13 (line 123) | @Inject Impl13(X13 p1, X14 p2, X15 p3, X16 p4, X17 p5, X18 p6, X19 p7,...
    method dummy (line 123) | @Override public void dummy() { }
  type I14 (line 124) | interface I14 { public void dummy(); }
    method dummy (line 124) | public void dummy();
  class Impl14 (line 124) | class Impl14 implements I14 { @Inject Impl14(X14 p1, X15 p2, X16 p3, X17...
    method Impl14 (line 124) | @Inject Impl14(X14 p1, X15 p2, X16 p3, X17 p4, X18 p5, X19 p6, X20 p7,...
    method dummy (line 124) | @Override public void dummy() { }
  type I15 (line 125) | interface I15 { public void dummy(); }
    method dummy (line 125) | public void dummy();
  class Impl15 (line 125) | class Impl15 implements I15 { @Inject Impl15(X15 p1, X16 p2, X17 p3, X18...
    method Impl15 (line 125) | @Inject Impl15(X15 p1, X16 p2, X17 p3, X18 p4, X19 p5, X20 p6, X21 p7,...
    method dummy (line 125) | @Override public void dummy() { }
  type I16 (line 126) | interface I16 { public void dummy(); }
    method dummy (line 126) | public void dummy();
  class Impl16 (line 126) | class Impl16 implements I16 { @Inject Impl16(X16 p1, X17 p2, X18 p3, X19...
    method Impl16 (line 126) | @Inject Impl16(X16 p1, X17 p2, X18 p3, X19 p4, X20 p5, X21 p6, X22 p7,...
    method dummy (line 126) | @Override public void dummy() { }
  type I17 (line 127) | interface I17 { public void dummy(); }
    method dummy (line 127) | public void dummy();
  class Impl17 (line 127) | class Impl17 implements I17 { @Inject Impl17(X17 p1, X18 p2, X19 p3, X20...
    method Impl17 (line 127) | @Inject Impl17(X17 p1, X18 p2, X19 p3, X20 p4, X21 p5, X22 p6, X23 p7,...
    method dummy (line 127) | @Override public void dummy() { }
  type I18 (line 128) | interface I18 { public void dummy(); }
    method dummy (line 128) | public void dummy();
  class Impl18 (line 128) | class Impl18 implements I18 { @Inject Impl18(X18 p1, X19 p2, X20 p3, X21...
    method Impl18 (line 128) | @Inject Impl18(X18 p1, X19 p2, X20 p3, X21 p4, X22 p5, X23 p6, X24 p7,...
    method dummy (line 128) | @Override public void dummy() { }
  type I19 (line 129) | interface I19 { public void dummy(); }
    method dummy (line 129) | public void dummy();
  class Impl19 (line 129) | class Impl19 implements I19 { @Inject Impl19(X19 p1, X20 p2, X21 p3, X22...
    method Impl19 (line 129) | @Inject Impl19(X19 p1, X20 p2, X21 p3, X22 p4, X23 p5, X24 p6, X25 p7,...
    method dummy (line 129) | @Override public void dummy() { }
  type I20 (line 130) | interface I20 { public void dummy(); }
    method dummy (line 130) | public void dummy();
  class Impl20 (line 130) | class Impl20 implements I20 { @Inject Impl20(X20 p1, X21 p2, X22 p3, X23...
    method Impl20 (line 130) | @Inject Impl20(X20 p1, X21 p2, X22 p3, X23 p4, X24 p5, X25 p6, X26 p7,...
    method dummy (line 130) | @Override public void dummy() { }
  type I21 (line 131) | interface I21 { public void dummy(); }
    method dummy (line 131) | public void dummy();
  class Impl21 (line 131) | class Impl21 implements I21 { @Inject Impl21(X21 p1, X22 p2, X23 p3, X24...
    method Impl21 (line 131) | @Inject Impl21(X21 p1, X22 p2, X23 p3, X24 p4, X25 p5, X26 p6, X27 p7,...
    method dummy (line 131) | @Override public void dummy() { }
  type I22 (line 132) | interface I22 { public void dummy(); }
    method dummy (line 132) | public void dummy();
  class Impl22 (line 132) | class Impl22 implements I22 { @Inject Impl22(X22 p1, X23 p2, X24 p3, X25...
    method Impl22 (line 132) | @Inject Impl22(X22 p1, X23 p2, X24 p3, X25 p4, X26 p5, X27 p6, X28 p7,...
    method dummy (line 132) | @Override public void dummy() { }
  type I23 (line 133) | interface I23 { public void dummy(); }
    method dummy (line 133) | public void dummy();
  class Impl23 (line 133) | class Impl23 implements I23 { @Inject Impl23(X23 p1, X24 p2, X25 p3, X26...
    method Impl23 (line 133) | @Inject Impl23(X23 p1, X24 p2, X25 p3, X26 p4, X27 p5, X28 p6, X29 p7,...
    method dummy (line 133) | @Override public void dummy() { }
  type I24 (line 134) | interface I24 { public void dummy(); }
    method dummy (line 134) | public void dummy();
  class Impl24 (line 134) | class Impl24 implements I24 { @Inject Impl24(X24 p1, X25 p2, X26 p3, X27...
    method Impl24 (line 134) | @Inject Impl24(X24 p1, X25 p2, X26 p3, X27 p4, X28 p5, X29 p6, X30 p7,...
    method dummy (line 134) | @Override public void dummy() { }
  type I25 (line 135) | interface I25 { public void dummy(); }
    method dummy (line 135) | public void dummy();
  class Impl25 (line 135) | class Impl25 implements I25 { @Inject Impl25(X25 p1, X26 p2, X27 p3, X28...
    method Impl25 (line 135) | @Inject Impl25(X25 p1, X26 p2, X27 p3, X28 p4, X29 p5, X30 p6, X31 p7,...
    method dummy (line 135) | @Override public void dummy() { }
  type I26 (line 136) | interface I26 { public void dummy(); }
    method dummy (line 136) | public void dummy();
  class Impl26 (line 136) | class Impl26 implements I26 { @Inject Impl26(X26 p1, X27 p2, X28 p3, X29...
    method Impl26 (line 136) | @Inject Impl26(X26 p1, X27 p2, X28 p3, X29 p4, X30 p5, X31 p6, X32 p7,...
    method dummy (line 136) | @Override public void dummy() { }
  type I27 (line 137) | interface I27 { public void dummy(); }
    method dummy (line 137) | public void dummy();
  class Impl27 (line 137) | class Impl27 implements I27 { @Inject Impl27(X27 p1, X28 p2, X29 p3, X30...
    method Impl27 (line 137) | @Inject Impl27(X27 p1, X28 p2, X29 p3, X30 p4, X31 p5, X32 p6, X33 p7,...
    method dummy (line 137) | @Override public void dummy() { }
  type I28 (line 138) | interface I28 { public void dummy(); }
    method dummy (line 138) | public void dummy();
  class Impl28 (line 138) | class Impl28 implements I28 { @Inject Impl28(X28 p1, X29 p2, X30 p3, X31...
    method Impl28 (line 138) | @Inject Impl28(X28 p1, X29 p2, X30 p3, X31 p4, X32 p5, X33 p6, X34 p7,...
    method dummy (line 138) | @Override public void dummy() { }
  type I29 (line 139) | interface I29 { public void dummy(); }
    method dummy (line 139) | public void dummy();
  class Impl29 (line 139) | class Impl29 implements I29 { @Inject Impl29(X29 p1, X30 p2, X31 p3, X32...
    method Impl29 (line 139) | @Inject Impl29(X29 p1, X30 p2, X31 p3, X32 p4, X33 p5, X34 p6, X35 p7,...
    method dummy (line 139) | @Override public void dummy() { }
  type I30 (line 140) | interface I30 { public void dummy(); }
    method dummy (line 140) | public void dummy();
  class Impl30 (line 140) | class Impl30 implements I30 { @Inject Impl30(X30 p1, X31 p2, X32 p3, X33...
    method Impl30 (line 140) | @Inject Impl30(X30 p1, X31 p2, X32 p3, X33 p4, X34 p5, X35 p6, X36 p7,...
    method dummy (line 140) | @Override public void dummy() { }
  type I31 (line 141) | interface I31 { public void dummy(); }
    method dummy (line 141) | public void dummy();
  class Impl31 (line 141) | class Impl31 implements I31 { @Inject Impl31(X31 p1, X32 p2, X33 p3, X34...
    method Impl31 (line 141) | @Inject Impl31(X31 p1, X32 p2, X33 p3, X34 p4, X35 p5, X36 p6, X37 p7,...
    method dummy (line 141) | @Override public void dummy() { }
  type I32 (line 142) | interface I32 { public void dummy(); }
    method dummy (line 142) | public void dummy();
  class Impl32 (line 142) | class Impl32 implements I32 { @Inject Impl32(X32 p1, X33 p2, X34 p3, X35...
    method Impl32 (line 142) | @Inject Impl32(X32 p1, X33 p2, X34 p3, X35 p4, X36 p5, X37 p6, X38 p7,...
    method dummy (line 142) | @Override public void dummy() { }
  type I33 (line 143) | interface I33 { public void dummy(); }
    method dummy (line 143) | public void dummy();
  class Impl33 (line 143) | class Impl33 implements I33 { @Inject Impl33(X33 p1, X34 p2, X35 p3, X36...
    method Impl33 (line 143) | @Inject Impl33(X33 p1, X34 p2, X35 p3, X36 p4, X37 p5, X38 p6, X39 p7,...
    method dummy (line 143) | @Override public void dummy() { }
  type I34 (line 144) | interface I34 { public void dummy(); }
    method dummy (line 144) | public void dummy();
  class Impl34 (line 144) | class Impl34 implements I34 { @Inject Impl34(X34 p1, X35 p2, X36 p3, X37...
    method Impl34 (line 144) | @Inject Impl34(X34 p1, X35 p2, X36 p3, X37 p4, X38 p5, X39 p6, X40 p7,...
    method dummy (line 144) | @Override public void dummy() { }
  type I35 (line 145) | interface I35 { public void dummy(); }
    method dummy (line 145) | public void dummy();
  class Impl35 (line 145) | class Impl35 implements I35 { @Inject Impl35(X35 p1, X36 p2, X37 p3, X38...
    method Impl35 (line 145) | @Inject Impl35(X35 p1, X36 p2, X37 p3, X38 p4, X39 p5, X40 p6, X41 p7,...
    method dummy (line 145) | @Override public void dummy() { }
  type I36 (line 146) | interface I36 { public void dummy(); }
    method dummy (line 146) | public void dummy();
  class Impl36 (line 146) | class Impl36 implements I36 { @Inject Impl36(X36 p1, X37 p2, X38 p3, X39...
    method Impl36 (line 146) | @Inject Impl36(X36 p1, X37 p2, X38 p3, X39 p4, X40 p5, X41 p6, X42 p7,...
    method dummy (line 146) | @Override public void dummy() { }
  type I37 (line 147) | interface I37 { public void dummy(); }
    method dummy (line 147) | public void dummy();
  class Impl37 (line 147) | class Impl37 implements I37 { @Inject Impl37(X37 p1, X38 p2, X39 p3, X40...
    method Impl37 (line 147) | @Inject Impl37(X37 p1, X38 p2, X39 p3, X40 p4, X41 p5, X42 p6, X43 p7,...
    method dummy (line 147) | @Override public void dummy() { }
  type I38 (line 148) | interface I38 { public void dummy(); }
    method dummy (line 148) | public void dummy();
  class Impl38 (line 148) | class Impl38 implements I38 { @Inject Impl38(X38 p1, X39 p2, X40 p3, X41...
    method Impl38 (line 148) | @Inject Impl38(X38 p1, X39 p2, X40 p3, X41 p4, X42 p5, X43 p6, X44 p7,...
    method dummy (line 148) | @Override public void dummy() { }
  type I39 (line 149) | interface I39 { public void dummy(); }
    method dummy (line 149) | public void dummy();
  class Impl39 (line 149) | class Impl39 implements I39 { @Inject Impl39(X39 p1, X40 p2, X41 p3, X42...
    method Impl39 (line 149) | @Inject Impl39(X39 p1, X40 p2, X41 p3, X42 p4, X43 p5, X44 p6, X45 p7,...
    method dummy (line 149) | @Override public void dummy() { }
  type I40 (line 150) | interface I40 { public void dummy(); }
    method dummy (line 150) | public void dummy();
  class Impl40 (line 150) | class Impl40 implements I40 { @Inject Impl40(X40 p1, X41 p2, X42 p3, X43...
    method Impl40 (line 150) | @Inject Impl40(X40 p1, X41 p2, X42 p3, X43 p4, X44 p5, X45 p6, X46 p7,...
    method dummy (line 150) | @Override public void dummy() { }
  type I41 (line 151) | interface I41 { public void dummy(); }
    method dummy (line 151) | public void dummy();
  class Impl41 (line 151) | class Impl41 implements I41 { @Inject Impl41(X41 p1, X42 p2, X43 p3, X44...
    method Impl41 (line 151) | @Inject Impl41(X41 p1, X42 p2, X43 p3, X44 p4, X45 p5, X46 p6, X47 p7,...
    method dummy (line 151) | @Override public void dummy() { }
  type I42 (line 152) | interface I42 { public void dummy(); }
    method dummy (line 152) | public void dummy();
  class Impl42 (line 152) | class Impl42 implements I42 { @Inject Impl42(X42 p1, X43 p2, X44 p3, X45...
    method Impl42 (line 152) | @Inject Impl42(X42 p1, X43 p2, X44 p3, X45 p4, X46 p5, X47 p6, X48 p7,...
    method dummy (line 152) | @Override public void dummy() { }
  type I43 (line 153) | interface I43 { public void dummy(); }
    method dummy (line 153) | public void dummy();
  class Impl43 (line 153) | class Impl43 implements I43 { @Inject Impl43(X43 p1, X44 p2, X45 p3, X46...
    method Impl43 (line 153) | @Inject Impl43(X43 p1, X44 p2, X45 p3, X46 p4, X47 p5, X48 p6, X49 p7,...
    method dummy (line 153) | @Override public void dummy() { }
  type I44 (line 154) | interface I44 { public void dummy(); }
    method dummy (line 154) | public void dummy();
  class Impl44 (line 154) | class Impl44 implements I44 { @Inject Impl44(X44 p1, X45 p2, X46 p3, X47...
    method Impl44 (line 154) | @Inject Impl44(X44 p1, X45 p2, X46 p3, X47 p4, X48 p5, X49 p6, X50 p7,...
    method dummy (line 154) | @Override public void dummy() { }
  type I45 (line 155) | interface I45 { public void dummy(); }
    method dummy (line 155) | public void dummy();
  class Impl45 (line 155) | class Impl45 implements I45 { @Inject Impl45(X45 p1, X46 p2, X47 p3, X48...
    method Impl45 (line 155) | @Inject Impl45(X45 p1, X46 p2, X47 p3, X48 p4, X49 p5, X50 p6, X51 p7,...
    method dummy (line 155) | @Override public void dummy() { }
  type I46 (line 156) | interface I46 { public void dummy(); }
    method dummy (line 156) | public void dummy();
  class Impl46 (line 156) | class Impl46 implements I46 { @Inject Impl46(X46 p1, X47 p2, X48 p3, X49...
    method Impl46 (line 156) | @Inject Impl46(X46 p1, X47 p2, X48 p3, X49 p4, X50 p5, X51 p6, X52 p7,...
    method dummy (line 156) | @Override public void dummy() { }
  type I47 (line 157) | interface I47 { public void dummy(); }
    method dummy (line 157) | public void dummy();
  class Impl47 (line 157) | class Impl47 implements I47 { @Inject Impl47(X47 p1, X48 p2, X49 p3, X50...
    method Impl47 (line 157) | @Inject Impl47(X47 p1, X48 p2, X49 p3, X50 p4, X51 p5, X52 p6, X53 p7,...
    method dummy (line 157) | @Override public void dummy() { }
  type I48 (line 158) | interface I48 { public void dummy(); }
    method dummy (line 158) | public void dummy();
  class Impl48 (line 158) | class Impl48 implements I48 { @Inject Impl48(X48 p1, X49 p2, X50 p3, X51...
    method Impl48 (line 158) | @Inject Impl48(X48 p1, X49 p2, X50 p3, X51 p4, X52 p5, X53 p6, X54 p7,...
    method dummy (line 158) | @Override public void dummy() { }
  type I49 (line 159) | interface I49 { public void dummy(); }
    method dummy (line 159) | public void dummy();
  class Impl49 (line 159) | class Impl49 implements I49 { @Inject Impl49(X49 p1, X50 p2, X51 p3, X52...
    method Impl49 (line 159) | @Inject Impl49(X49 p1, X50 p2, X51 p3, X52 p4, X53 p5, X54 p6, X55 p7,...
    method dummy (line 159) | @Override public void dummy() { }
  type I50 (line 160) | interface I50 { public void dummy(); }
    method dummy (line 160) | public void dummy();
  class Impl50 (line 160) | class Impl50 implements I50 { @Inject Impl50(X50 p1, X51 p2, X52 p3, X53...
    method Impl50 (line 160) | @Inject Impl50(X50 p1, X51 p2, X52 p3, X53 p4, X54 p5, X55 p6, X56 p7,...
    method dummy (line 160) | @Override public void dummy() { }
  type I51 (line 161) | interface I51 { public void dummy(); }
    method dummy (line 161) | public void dummy();
  class Impl51 (line 161) | class Impl51 implements I51 { @Inject Impl51(X51 p1, X52 p2, X53 p3, X54...
    method Impl51 (line 161) | @Inject Impl51(X51 p1, X52 p2, X53 p3, X54 p4, X55 p5, X56 p6, X57 p7,...
    method dummy (line 161) | @Override public void dummy() { }
  type I52 (line 162) | interface I52 { public void dummy(); }
    method dummy (line 162) | public void dummy();
  class Impl52 (line 162) | class Impl52 implements I52 { @Inject Impl52(X52 p1, X53 p2, X54 p3, X55...
    method Impl52 (line 162) | @Inject Impl52(X52 p1, X53 p2, X54 p3, X55 p4, X56 p5, X57 p6, X58 p7,...
    method dummy (line 162) | @Override public void dummy() { }
  type I53 (line 163) | interface I53 { public void dummy(); }
    method dummy (line 163) | public void dummy();
  class Impl53 (line 163) | class Impl53 implements I53 { @Inject Impl53(X53 p1, X54 p2, X55 p3, X56...
    method Impl53 (line 163) | @Inject Impl53(X53 p1, X54 p2, X55 p3, X56 p4, X57 p5, X58 p6, X59 p7,...
    method dummy (line 163) | @Override public void dummy() { }
  type I54 (line 164) | interface I54 { public void dummy(); }
    method dummy (line 164) | public void dummy();
  class Impl54 (line 164) | class Impl54 implements I54 { @Inject Impl54(X54 p1, X55 p2, X56 p3, X57...
    method Impl54 (line 164) | @Inject Impl54(X54 p1, X55 p2, X56 p3, X57 p4, X58 p5, X59 p6, X60 p7,...
    method dummy (line 164) | @Override public void dummy() { }
  type I55 (line 165) | interface I55 { public void dummy(); }
    method dummy (line 165) | public void dummy();
  class Impl55 (line 165) | class Impl55 implements I55 { @Inject Impl55(X55 p1, X56 p2, X57 p3, X58...
    method Impl55 (line 165) | @Inject Impl55(X55 p1, X56 p2, X57 p3, X58 p4, X59 p5, X60 p6, X61 p7,...
    method dummy (line 165) | @Override public void dummy() { }
  type I56 (line 166) | interface I56 { public void dummy(); }
    method dummy (line 166) | public void dummy();
  class Impl56 (line 166) | class Impl56 implements I56 { @Inject Impl56(X56 p1, X57 p2, X58 p3, X59...
    method Impl56 (line 166) | @Inject Impl56(X56 p1, X57 p2, X58 p3, X59 p4, X60 p5, X61 p6, X62 p7,...
    method dummy (line 166) | @Override public void dummy() { }
  type I57 (line 167) | interface I57 { public void dummy(); }
    method dummy (line 167) | public void dummy();
  class Impl57 (line 167) | class Impl57 implements I57 { @Inject Impl57(X57 p1, X58 p2, X59 p3, X60...
    method Impl57 (line 167) | @Inject Impl57(X57 p1, X58 p2, X59 p3, X60 p4, X61 p5, X62 p6, X63 p7,...
    method dummy (line 167) | @Override public void dummy() { }
  type I58 (line 168) | interface I58 { public void dummy(); }
    method dummy (line 168) | public void dummy();
  class Impl58 (line 168) | class Impl58 implements I58 { @Inject Impl58(X58 p1, X59 p2, X60 p3, X61...
    method Impl58 (line 168) | @Inject Impl58(X58 p1, X59 p2, X60 p3, X61 p4, X62 p5, X63 p6, X64 p7,...
    method dummy (line 168) | @Override public void dummy() { }
  type I59 (line 169) | interface I59 { public void dummy(); }
    method dummy (line 169) | public void dummy();
  class Impl59 (line 169) | class Impl59 implements I59 { @Inject Impl59(X59 p1, X60 p2, X61 p3, X62...
    method Impl59 (line 169) | @Inject Impl59(X59 p1, X60 p2, X61 p3, X62 p4, X63 p5, X64 p6, X65 p7,...
    method dummy (line 169) | @Override public void dummy() { }
  type I60 (line 170) | interface I60 { public void dummy(); }
    method dummy (line 170) | public void dummy();
  class Impl60 (line 170) | class Impl60 implements I60 { @Inject Impl60(X60 p1, X61 p2, X62 p3, X63...
    method Impl60 (line 170) | @Inject Impl60(X60 p1, X61 p2, X62 p3, X63 p4, X64 p5, X65 p6, X66 p7,...
    method dummy (line 170) | @Override public void dummy() { }
  type I61 (line 171) | interface I61 { public void dummy(); }
    method dummy (line 171) | public void dummy();
  class Impl61 (line 171) | class Impl61 implements I61 { @Inject Impl61(X61 p1, X62 p2, X63 p3, X64...
    method Impl61 (line 171) | @Inject Impl61(X61 p1, X62 p2, X63 p3, X64 p4, X65 p5, X66 p6, X67 p7,...
    method dummy (line 171) | @Override public void dummy() { }
  type I62 (line 172) | interface I62 { public void dummy(); }
    method dummy (line 172) | public void dummy();
  class Impl62 (line 172) | class Impl62 implements I62 { @Inject Impl62(X62 p1, X63 p2, X64 p3, X65...
    method Impl62 (line 172) | @Inject Impl62(X62 p1, X63 p2, X64 p3, X65 p4, X66 p5, X67 p6, X68 p7,...
    method dummy (line 172) | @Override public void dummy() { }
  type I63 (line 173) | interface I63 { public void dummy(); }
    method dummy (line 173) | public void dummy();
  class Impl63 (line 173) | class Impl63 implements I63 { @Inject Impl63(X63 p1, X64 p2, X65 p3, X66...
    method Impl63 (line 173) | @Inject Impl63(X63 p1, X64 p2, X65 p3, X66 p4, X67 p5, X68 p6, X69 p7,...
    method dummy (line 173) | @Override public void dummy() { }
  type I64 (line 174) | interface I64 { public void dummy(); }
    method dummy (line 174) | public void dummy();
  class Impl64 (line 174) | class Impl64 implements I64 { @Inject Impl64(X64 p1, X65 p2, X66 p3, X67...
    method Impl64 (line 174) | @Inject Impl64(X64 p1, X65 p2, X66 p3, X67 p4, X68 p5, X69 p6, X70 p7,...
    method dummy (line 174) | @Override public void dummy() { }
  type I65 (line 175) | interface I65 { public void dummy(); }
    method dummy (line 175) | public void dummy();
  class Impl65 (line 175) | class Impl65 implements I65 { @Inject Impl65(X65 p1, X66 p2, X67 p3, X68...
    method Impl65 (line 175) | @Inject Impl65(X65 p1, X66 p2, X67 p3, X68 p4, X69 p5, X70 p6, X71 p7,...
    method dummy (line 175) | @Override public void dummy() { }
  type I66 (line 176) | interface I66 { public void dummy(); }
    method dummy (line 176) | public void dummy();
  class Impl66 (line 176) | class Impl66 implements I66 { @Inject Impl66(X66 p1, X67 p2, X68 p3, X69...
    method Impl66 (line 176) | @Inject Impl66(X66 p1, X67 p2, X68 p3, X69 p4, X70 p5, X71 p6, X72 p7,...
    method dummy (line 176) | @Override public void dummy() { }
  type I67 (line 177) | interface I67 { public void dummy(); }
    method dummy (line 177) | public void dummy();
  class Impl67 (line 177) | class Impl67 implements I67 { @Inject Impl67(X67 p1, X68 p2, X69 p3, X70...
    method Impl67 (line 177) | @Inject Impl67(X67 p1, X68 p2, X69 p3, X70 p4, X71 p5, X72 p6, X73 p7,...
    method dummy (line 177) | @Override public void dummy() { }
  type I68 (line 178) | interface I68 { public void dummy(); }
    method dummy (line 178) | public void dummy();
  class Impl68 (line 178) | class Impl68 implements I68 { @Inject Impl68(X68 p1, X69 p2, X70 p3, X71...
    method Impl68 (line 178) | @Inject Impl68(X68 p1, X69 p2, X70 p3, X71 p4, X72 p5, X73 p6, X74 p7,...
    method dummy (line 178) | @Override public void dummy() { }
  type I69 (line 179) | interface I69 { public void dummy(); }
    method dummy (line 179) | public void dummy();
  class Impl69 (line 179) | class Impl69 implements I69 { @Inject Impl69(X69 p1, X70 p2, X71 p3, X72...
    method Impl69 (line 179) | @Inject Impl69(X69 p1, X70 p2, X71 p3, X72 p4, X73 p5, X74 p6, X75 p7,...
    method dummy (line 179) | @Override public void dummy() { }
  type I70 (line 180) | interface I70 { public void dummy(); }
    method dummy (line 180) | public void dummy();
  class Impl70 (line 180) | class Impl70 implements I70 { @Inject Impl70(X70 p1, X71 p2, X72 p3, X73...
    method Impl70 (line 180) | @Inject Impl70(X70 p1, X71 p2, X72 p3, X73 p4, X74 p5, X75 p6, X76 p7,...
    method dummy (line 180) | @Override public void dummy() { }
  type I71 (line 181) | interface I71 { public void dummy(); }
    method dummy (line 181) | public void dummy();
  class Impl71 (line 181) | class Impl71 implements I71 { @Inject Impl71(X71 p1, X72 p2, X73 p3, X74...
    method Impl71 (line 181) | @Inject Impl71(X71 p1, X72 p2, X73 p3, X74 p4, X75 p5, X76 p6, X77 p7,...
    method dummy (line 181) | @Override public void dummy() { }
  type I72 (line 182) | interface I72 { public void dummy(); }
    method dummy (line 182) | public void dummy();
  class Impl72 (line 182) | class Impl72 implements I72 { @Inject Impl72(X72 p1, X73 p2, X74 p3, X75...
    method Impl72 (line 182) | @Inject Impl72(X72 p1, X73 p2, X74 p3, X75 p4, X76 p5, X77 p6, X78 p7,...
    method dummy (line 182) | @Override public void dummy() { }
  type I73 (line 183) | interface I73 { public void dummy(); }
    method dummy (line 183) | public void dummy();
  class Impl73 (line 183) | class Impl73 implements I73 { @Inject Impl73(X73 p1, X74 p2, X75 p3, X76...
    method Impl73 (line 183) | @Inject Impl73(X73 p1, X74 p2, X75 p3, X76 p4, X77 p5, X78 p6, X79 p7,...
    method dummy (line 183) | @Override public void dummy() { }
  type I74 (line 184) | interface I74 { public void dummy(); }
    method dummy (line 184) | public void dummy();
  class Impl74 (line 184) | class Impl74 implements I74 { @Inject Impl74(X74 p1, X75 p2, X76 p3, X77...
    method Impl74 (line 184) | @Inject Impl74(X74 p1, X75 p2, X76 p3, X77 p4, X78 p5, X79 p6, X80 p7,...
    method dummy (line 184) | @Override public void dummy() { }
  type I75 (line 185) | interface I75 { public void dummy(); }
    method dummy (line 185) | public void dummy();
  class Impl75 (line 185) | class Impl75 implements I75 { @Inject Impl75(X75 p1, X76 p2, X77 p3, X78...
    method Impl75 (line 185) | @Inject Impl75(X75 p1, X76 p2, X77 p3, X78 p4, X79 p5, X80 p6, X81 p7,...
    method dummy (line 185) | @Override public void dummy() { }
  type I76 (line 186) | interface I76 { public void dummy(); }
    method dummy (line 186) | public void dummy();
  class Impl76 (line 186) | class Impl76 implements I76 { @Inject Impl76(X76 p1, X77 p2, X78 p3, X79...
    method Impl76 (line 186) | @Inject Impl76(X76 p1, X77 p2, X78 p3, X79 p4, X80 p5, X81 p6, X82 p7,...
    method dummy (line 186) | @Override public void dummy() { }
  type I77 (line 187) | interface I77 { public void dummy(); }
    method dummy (line 187) | public void dummy();
  class Impl77 (line 187) | class Impl77 implements I77 { @Inject Impl77(X77 p1, X78 p2, X79 p3, X80...
    method Impl77 (line 187) | @Inject Impl77(X77 p1, X78 p2, X79 p3, X80 p4, X81 p5, X82 p6, X83 p7,...
    method dummy (line 187) | @Override public void dummy() { }
  type I78 (line 188) | interface I78 { public void dummy(); }
    method dummy (line 188) | public void dummy();
  class Impl78 (line 188) | class Impl78 implements I78 { @Inject Impl78(X78 p1, X79 p2, X80 p3, X81...
    method Impl78 (line 188) | @Inject Impl78(X78 p1, X79 p2, X80 p3, X81 p4, X82 p5, X83 p6, X84 p7,...
    method dummy (line 188) | @Override public void dummy() { }
  type I79 (line 189) | interface I79 { public void dummy(); }
    method dummy (line 189) | public void dummy();
  class Impl79 (line 189) | class Impl79 implements I79 { @Inject Impl79(X79 p1, X80 p2, X81 p3, X82...
    method Impl79 (line 189) | @Inject Impl79(X79 p1, X80 p2, X81 p3, X82 p4, X83 p5, X84 p6, X85 p7,...
    method dummy (line 189) | @Override public void dummy() { }
  type I80 (line 190) | interface I80 { public void dummy(); }
    method dummy (line 190) | public void dummy();
  class Impl80 (line 190) | class Impl80 implements I80 { @Inject Impl80(X80 p1, X81 p2, X82 p3, X83...
    method Impl80 (line 190) | @Inject Impl80(X80 p1, X81 p2, X82 p3, X83 p4, X84 p5, X85 p6, X86 p7,...
    method dummy (line 190) | @Override public void dummy() { }
  type I81 (line 191) | interface I81 { public void dummy(); }
    method dummy (line 191) | public void dummy();
  class Impl81 (line 191) | class Impl81 implements I81 { @Inject Impl81(X81 p1, X82 p2, X83 p3, X84...
    method Impl81 (line 191) | @Inject Impl81(X81 p1, X82 p2, X83 p3, X84 p4, X85 p5, X86 p6, X87 p7,...
    method dummy (line 191) | @Override public void dummy() { }
  type I82 (line 192) | interface I82 { public void dummy(); }
    method dummy (line 192) | public void dummy();
  class Impl82 (line 192) | class Impl82 implements I82 { @Inject Impl82(X82 p1, X83 p2, X84 p3, X85...
    method Impl82 (line 192) | @Inject Impl82(X82 p1, X83 p2, X84 p3, X85 p4, X86 p5, X87 p6, X88 p7,...
    method dummy (line 192) | @Override public void dummy() { }
  type I83 (line 193) | interface I83 { public void dummy(); }
    method dummy (line 193) | public void dummy();
  class Impl83 (line 193) | class Impl83 implements I83 { @Inject Impl83(X83 p1, X84 p2, X85 p3, X86...
    method Impl83 (line 193) | @Inject Impl83(X83 p1, X84 p2, X85 p3, X86 p4, X87 p5, X88 p6, X89 p7,...
    method dummy (line 193) | @Override public void dummy() { }
  type I84 (line 194) | interface I84 { public void dummy(); }
    method dummy (line 194) | public void dummy();
  class Impl84 (line 194) | class Impl84 implements I84 { @Inject Impl84(X84 p1, X85 p2, X86 p3, X87...
    method Impl84 (line 194) | @Inject Impl84(X84 p1, X85 p2, X86 p3, X87 p4, X88 p5, X89 p6, X90 p7,...
    method dummy (line 194) | @Override public void dummy() { }
  type I85 (line 195) | interface I85 { public void dummy(); }
    method dummy (line 195) | public void dummy();
  class Impl85 (line 195) | class Impl85 implements I85 { @Inject Impl85(X85 p1, X86 p2, X87 p3, X88...
    method Impl85 (line 195) | @Inject Impl85(X85 p1, X86 p2, X87 p3, X88 p4, X89 p5, X90 p6, X91 p7,...
    method dummy (line 195) | @Override public void dummy() { }
  type I86 (line 196) | interface I86 { public void dummy(); }
    method dummy (line 196) | public void dummy();
  class Impl86 (line 196) | class Impl86 implements I86 { @Inject Impl86(X86 p1, X87 p2, X88 p3, X89...
    method Impl86 (line 196) | @Inject Impl86(X86 p1, X87 p2, X88 p3, X89 p4, X90 p5, X91 p6, X92 p7,...
    method dummy (line 196) | @Override public void dummy() { }
  type I87 (line 197) | interface I87 { public void dummy(); }
    method dummy (line 197) | public void dummy();
  class Impl87 (line 197) | class Impl87 implements I87 { @Inject Impl87(X87 p1, X88 p2, X89 p3, X90...
    method Impl87 (line 197) | @Inject Impl87(X87 p1, X88 p2, X89 p3, X90 p4, X91 p5, X92 p6, X93 p7,...
    method dummy (line 197) | @Override public void dummy() { }
  type I88 (line 198) | interface I88 { public void dummy(); }
    method dummy (line 198) | public void dummy();
  class Impl88 (line 198) | class Impl88 implements I88 { @Inject Impl88(X88 p1, X89 p2, X90 p3, X91...
    method Impl88 (line 198) | @Inject Impl88(X88 p1, X89 p2, X90 p3, X91 p4, X92 p5, X93 p6, X94 p7,...
    method dummy (line 198) | @Override public void dummy() { }
  type I89 (line 199) | interface I89 { public void dummy(); }
    method dummy (line 199) | public void dummy();
  class Impl89 (line 199) | class Impl89 implements I89 { @Inject Impl89(X89 p1, X90 p2, X91 p3, X92...
    method Impl89 (line 199) | @Inject Impl89(X89 p1, X90 p2, X91 p3, X92 p4, X93 p5, X94 p6, X95 p7,...
    method dummy (line 199) | @Override public void dummy() { }
  type I90 (line 200) | interface I90 { public void dummy(); }
    method dummy (line 200) | public void dummy();
  class Impl90 (line 200) | class Impl90 implements I90 { @Inject Impl90(X90 p1, X91 p2, X92 p3, X93...
    method Impl90 (line 200) | @Inject Impl90(X90 p1, X91 p2, X92 p3, X93 p4, X94 p5, X95 p6, X96 p7,...
    method dummy (line 200) | @Override public void dummy() { }
  type I91 (line 201) | interface I91 { public void dummy(); }
    method dummy (line 201) | public void dummy();
  class Impl91 (line 201) | class Impl91 implements I91 { @Inject Impl91(X91 p1, X92 p2, X93 p3, X94...
    method Impl91 (line 201) | @Inject Impl91(X91 p1, X92 p2, X93 p3, X94 p4, X95 p5, X96 p6, X97 p7,...
    method dummy (line 201) | @Override public void dummy() { }
  type I92 (line 202) | interface I92 { public void dummy(); }
    method dummy (line 202) | public void dummy();
  class Impl92 (line 202) | class Impl92 implements I92 { @Inject Impl92(X92 p1, X93 p2, X94 p3, X95...
    method Impl92 (line 202) | @Inject Impl92(X92 p1, X93 p2, X94 p3, X95 p4, X96 p5, X97 p6, X98 p7,...
    method dummy (line 202) | @Override public void dummy() { }
  type I93 (line 203) | interface I93 { public void dummy(); }
    method dummy (line 203) | public void dummy();
  class Impl93 (line 203) | class Impl93 implements I93 { @Inject Impl93(X93 p1, X94 p2, X95 p3, X96...
    method Impl93 (line 203) | @Inject Impl93(X93 p1, X94 p2, X95 p3, X96 p4, X97 p5, X98 p6, X99 p7,...
    method dummy (line 203) | @Override public void dummy() { }
  type I94 (line 204) | interface I94 { public void dummy(); }
    method dummy (line 204) | public void dummy();
  class Impl94 (line 204) | class Impl94 implements I94 { @Inject Impl94(X94 p1, X95 p2, X96 p3, X97...
    method Impl94 (line 204) | @Inject Impl94(X94 p1, X95 p2, X96 p3, X97 p4, X98 p5, X99 p6, X00 p7,...
    method dummy (line 204) | @Override public void dummy() { }
  type I95 (line 205) | interface I95 { public void dummy(); }
    method dummy (line 205) | public void dummy();
  class Impl95 (line 205) | class Impl95 implements I95 { @Inject Impl95(X95 p1, X96 p2, X97 p3, X98...
    method Impl95 (line 205) | @Inject Impl95(X95 p1, X96 p2, X97 p3, X98 p4, X99 p5, X00 p6, X01 p7,...
    method dummy (line 205) | @Override public void dummy() { }
  type I96 (line 206) | interface I96 { public void dummy(); }
    method dummy (line 206) | public void dummy();
  class Impl96 (line 206) | class Impl96 implements I96 { @Inject Impl96(X96 p1, X97 p2, X98 p3, X99...
    method Impl96 (line 206) | @Inject Impl96(X96 p1, X97 p2, X98 p3, X99 p4, X00 p5, X01 p6, X02 p7,...
    method dummy (line 206) | @Override public void dummy() { }
  type I97 (line 207) | interface I97 { public void dummy(); }
    method dummy (line 207) | public void dummy();
  class Impl97 (line 207) | class Impl97 implements I97 { @Inject Impl97(X97 p1, X98 p2, X99 p3, X00...
    method Impl97 (line 207) | @Inject Impl97(X97 p1, X98 p2, X99 p3, X00 p4, X01 p5, X02 p6, X03 p7,...
    method dummy (line 207) | @Override public void dummy() { }
  type I98 (line 208) | interface I98 { public void dummy(); }
    method dummy (line 208) | public void dummy();
  class Impl98 (line 208) | class Impl98 implements I98 { @Inject Impl98(X98 p1, X99 p2, X00 p3, X01...
    method Impl98 (line 208) | @Inject Impl98(X98 p1, X99 p2, X00 p3, X01 p4, X02 p5, X03 p6, X04 p7,...
    method dummy (line 208) | @Override public void dummy() { }
  type I99 (line 209) | interface I99 { public void dummy(); }
    method dummy (line 209) | public void dummy();
  class Impl99 (line 209) | class Impl99 implements I99 { @Inject Impl99(X99 p1, X00 p2, X01 p3, X02...
    method Impl99 (line 209) | @Inject Impl99(X99 p1, X00 p2, X01 p3, X02 p4, X03 p5, X04 p6, X05 p7,...
    method dummy (line 209) | @Override public void dummy() { }
  class C0 (line 210) | class C0 { @Inject C0(I00 p1, I01 p2, I02 p3, I03 p4, I04 p5, I05 p6, I0...
    method C0 (line 210) | @Inject C0(I00 p1, I01 p2, I02 p3, I03 p4, I04 p5, I05 p6, I06 p7, I07...
  class C1 (line 211) | class C1 { @Inject C1(I10 p1, I11 p2, I12 p3, I13 p4, I14 p5, I15 p6, I1...
    method C1 (line 211) | @Inject C1(I10 p1, I11 p2, I12 p3, I13 p4, I14 p5, I15 p6, I16 p7, I17...
  class C2 (line 212) | class C2 { @Inject C2(I20 p1, I21 p2, I22 p3, I23 p4, I24 p5, I25 p6, I2...
    method C2 (line 212) | @Inject C2(I20 p1, I21 p2, I22 p3, I23 p4, I24 p5, I25 p6, I26 p7, I27...
  class C3 (line 213) | class C3 { @Inject C3(I30 p1, I31 p2, I32 p3, I33 p4, I34 p5, I35 p6, I3...
    method C3 (line 213) | @Inject C3(I30 p1, I31 p2, I32 p3, I33 p4, I34 p5, I35 p6, I36 p7, I37...
  class C4 (line 214) | class C4 { @Inject C4(I40 p1, I41 p2, I42 p3, I43 p4, I44 p5, I45 p6, I4...
    method C4 (line 214) | @Inject C4(I40 p1, I41 p2, I42 p3, I43 p4, I44 p5, I45 p6, I46 p7, I47...
  class C5 (line 215) | class C5 { @Inject C5(I50 p1, I51 p2, I52 p3, I53 p4, I54 p5, I55 p6, I5...
    method C5 (line 215) | @Inject C5(I50 p1, I51 p2, I52 p3, I53 p4, I54 p5, I55 p6, I56 p7, I57...
  class C6 (line 216) | class C6 { @Inject C6(I60 p1, I61 p2, I62 p3, I63 p4, I64 p5, I65 p6, I6...
    method C6 (line 216) | @Inject C6(I60 p1, I61 p2, I62 p3, I63 p4, I64 p5, I65 p6, I66 p7, I67...
  class C7 (line 217) | class C7 { @Inject C7(I70 p1, I71 p2, I72 p3, I73 p4, I74 p5, I75 p6, I7...
    method C7 (line 217) | @Inject C7(I70 p1, I71 p2, I72 p3, I73 p4, I74 p5, I75 p6, I76 p7, I77...
  class C8 (line 218) | class C8 { @Inject C8(I80 p1, I81 p2, I82 p3, I83 p4, I84 p5, I85 p6, I8...
    method C8 (line 218) | @Inject C8(I80 p1, I81 p2, I82 p3, I83 p4, I84 p5, I85 p6, I86 p7, I87...
  class C9 (line 219) | class C9 { @Inject C9(I90 p1, I91 p2, I92 p3, I93 p4, I94 p5, I95 p6, I9...
    method C9 (line 219) | @Inject C9(I90 p1, I91 p2, I92 p3, I93 p4, I94 p5, I95 p6, I96 p7, I97...
  class Complex (line 220) | class Complex { @Inject Complex(C0 p1, C1 p2, C2 p3, C3 p4, C4 p5, C5 p6...
    method Complex (line 220) | @Inject Complex(C0 p1, C1 p2, C2 p3, C3 p4, C4 p5, C5 p6, C6 p7, C7 p8...
  class AppModule (line 222) | @Module
    method provideI00 (line 224) | @Provides I00 provideI00(Impl00 impl) { return impl; }
    method provideI01 (line 225) | @Provides I01 provideI01(Impl01 impl) { return impl; }
    method provideI02 (line 226) | @Provides I02 provideI02(Impl02 impl) { return impl; }
    method provideI03 (line 227) | @Provides I03 provideI03(Impl03 impl) { return impl; }
    method provideI04 (line 228) | @Provides I04 provideI04(Impl04 impl) { return impl; }
    method provideI05 (line 229) | @Provides I05 provideI05(Impl05 impl) { return impl; }
    method provideI06 (line 230) | @Provides I06 provideI06(Impl06 impl) { return impl; }
    method provideI07 (line 231) | @Provides I07 provideI07(Impl07 impl) { return impl; }
    method provideI08 (line 232) | @Provides I08 provideI08(Impl08 impl) { return impl; }
    method provideI09 (line 233) | @Provides I09 provideI09(Impl09 impl) { return impl; }
    method provideI10 (line 234) | @Provides I10 provideI10(Impl10 impl) { return impl; }
    method provideI11 (line 235) | @Provides I11 provideI11(Impl11 impl) { return impl; }
    method provideI12 (line 236) | @Provides I12 provideI12(Impl12 impl) { return impl; }
    method provideI13 (line 237) | @Provides I13 provideI13(Impl13 impl) { return impl; }
    method provideI14 (line 238) | @Provides I14 provideI14(Impl14 impl) { return impl; }
    method provideI15 (line 239) | @Provides I15 provideI15(Impl15 impl) { return impl; }
    method provideI16 (line 240) | @Provides I16 provideI16(Impl16 impl) { return impl; }
    method provideI17 (line 241) | @Provides I17 provideI17(Impl17 impl) { return impl; }
    method provideI18 (line 242) | @Provides I18 provideI18(Impl18 impl) { return impl; }
    method provideI19 (line 243) | @Provides I19 provideI19(Impl19 impl) { return impl; }
    method provideI20 (line 244) | @Provides I20 provideI20(Impl20 impl) { return impl; }
    method provideI21 (line 245) | @Provides I21 provideI21(Impl21 impl) { return impl; }
    method provideI22 (line 246) | @Provides I22 provideI22(Impl22 impl) { return impl; }
    method provideI23 (line 247) | @Provides I23 provideI23(Impl23 impl) { return impl; }
    method provideI24 (line 248) | @Provides I24 provideI24(Impl24 impl) { return impl; }
    method provideI25 (line 249) | @Provides I25 provideI25(Impl25 impl) { return impl; }
    method provideI26 (line 250) | @Provides I26 provideI26(Impl26 impl) { return impl; }
    method provideI27 (line 251) | @Provides I27 provideI27(Impl27 impl) { return impl; }
    method provideI28 (line 252) | @Provides I28 provideI28(Impl28 impl) { return impl; }
    method provideI29 (line 253) | @Provides I29 provideI29(Impl29 impl) { return impl; }
    method provideI30 (line 254) | @Provides I30 provideI30(Impl30 impl) { return impl; }
    method provideI31 (line 255) | @Provides I31 provideI31(Impl31 impl) { return impl; }
    method provideI32 (line 256) | @Provides I32 provideI32(Impl32 impl) { return impl; }
    method provideI33 (line 257) | @Provides I33 provideI33(Impl33 impl) { return impl; }
    method provideI34 (line 258) | @Provides I34 provideI34(Impl34 impl) { return impl; }
    method provideI35 (line 259) | @Provides I35 provideI35(Impl35 impl) { return impl; }
    method provideI36 (line 260) | @Provides I36 provideI36(Impl36 impl) { return impl; }
    method provideI37 (line 261) | @Provides I37 provideI37(Impl37 impl) { return impl; }
    method provideI38 (line 262) | @Provides I38 provideI38(Impl38 impl) { return impl; }
    method provideI39 (line 263) | @Provides I39 provideI39(Impl39 impl) { return impl; }
    method provideI40 (line 264) | @Provides I40 provideI40(Impl40 impl) { return impl; }
    method provideI41 (line 265) | @Provides I41 provideI41(Impl41 impl) { return impl; }
    method provideI42 (line 266) | @Provides I42 provideI42(Impl42 impl) { return impl; }
    method provideI43 (line 267) | @Provides I43 provideI43(Impl43 impl) { return impl; }
    method provideI44 (line 268) | @Provides I44 provideI44(Impl44 impl) { return impl; }
    method provideI45 (line 269) | @Provides I45 provideI45(Impl45 impl) { return impl; }
    method provideI46 (line 270) | @Provides I46 provideI46(Impl46 impl) { return impl; }
    method provideI47 (line 271) | @Provides I47 provideI47(Impl47 impl) { return impl; }
    method provideI48 (line 272) | @Provides I48 provideI48(Impl48 impl) { return impl; }
    method provideI49 (line 273) | @Provides I49 provideI49(Impl49 impl) { return impl; }
    method provideI50 (line 274) | @Provides I50 provideI50(Impl50 impl) { return impl; }
    method provideI51 (line 275) | @Provides I51 provideI51(Impl51 impl) { return impl; }
    method provideI52 (line 276) | @Provides I52 provideI52(Impl52 impl) { return impl; }
    method provideI53 (line 277) | @Provides I53 provideI53(Impl53 impl) { return impl; }
    method provideI54 (line 278) | @Provides I54 provideI54(Impl54 impl) { return impl; }
    method provideI55 (line 279) | @Provides I55 provideI55(Impl55 impl) { return impl; }
    method provideI56 (line 280) | @Provides I56 provideI56(Impl56 impl) { return impl; }
    method provideI57 (line 281) | @Provides I57 provideI57(Impl57 impl) { return impl; }
    method provideI58 (line 282) | @Provides I58 provideI58(Impl58 impl) { return impl; }
    method provideI59 (line 283) | @Provides I59 provideI59(Impl59 impl) { return impl; }
    method provideI60 (line 284) | @Provides I60 provideI60(Impl60 impl) { return impl; }
    method provideI61 (line 285) | @Provides I61 provideI61(Impl61 impl) { return impl; }
    method provideI62 (line 286) | @Provides I62 provideI62(Impl62 impl) { return impl; }
    method provideI63 (line 287) | @Provides I63 provideI63(Impl63 impl) { return impl; }
    method provideI64 (line 288) | @Provides I64 provideI64(Impl64 impl) { return impl; }
    method provideI65 (line 289) | @Provides I65 provideI65(Impl65 impl) { return impl; }
    method provideI66 (line 290) | @Provides I66 provideI66(Impl66 impl) { return impl; }
    method provideI67 (line 291) | @Provides I67 provideI67(Impl67 impl) { return impl; }
    method provideI68 (line 292) | @Provides I68 provideI68(Impl68 impl) { return impl; }
    method provideI69 (line 293) | @Provides I69 provideI69(Impl69 impl) { return impl; }
    method provideI70 (line 294) | @Provides I70 provideI70(Impl70 impl) { return impl; }
    method provideI71 (line 295) | @Provides I71 provideI71(Impl71 impl) { return impl; }
    method provideI72 (line 296) | @Provides I72 provideI72(Impl72 impl) { return impl; }
    method provideI73 (line 297) | @Provides I73 provideI73(Impl73 impl) { return impl; }
    method provideI74 (line 298) | @Provides I74 provideI74(Impl74 impl) { return impl; }
    method provideI75 (line 299) | @Provides I75 provideI75(Impl75 impl) { return impl; }
    method provideI76 (line 300) | @Provides I76 provideI76(Impl76 impl) { return impl; }
    method provideI77 (line 301) | @Provides I77 provideI77(Impl77 impl) { return impl; }
    method provideI78 (line 302) | @Provides I78 provideI78(Impl78 impl) { return impl; }
    method provideI79 (line 303) | @Provides I79 provideI79(Impl79 impl) { return impl; }
    method provideI80 (line 304) | @Provides I80 provideI80(Impl80 impl) { return impl; }
    method provideI81 (line 305) | @Provides I81 provideI81(Impl81 impl) { return impl; }
    method provideI82 (line 306) | @Provides I82 provideI82(Impl82 impl) { return impl; }
    method provideI83 (line 307) | @Provides I83 provideI83(Impl83 impl) { return impl; }
    method provideI84 (line 308) | @Provides I84 provideI84(Impl84 impl) { return impl; }
    method provideI85 (line 309) | @Provides I85 provideI85(Impl85 impl) { return impl; }
    method provideI86 (line 310) | @Provides I86 provideI86(Impl86 impl) { return impl; }
    method provideI87 (line 311) | @Provides I87 provideI87(Impl87 impl) { return impl; }
    method provideI88 (line 312) | @Provides I88 provideI88(Impl88 impl) { return impl; }
    method provideI89 (line 313) | @Provides I89 provideI89(Impl89 impl) { return impl; }
    method provideI90 (line 314) | @Provides I90 provideI90(Impl90 impl) { return impl; }
    method provideI91 (line 315) | @Provides I91 provideI91(Impl91 impl) { return impl; }
    method provideI92 (line 316) | @Provides I92 provideI92(Impl92 impl) { return impl; }
    method provideI93 (line 317) | @Provides I93 provideI93(Impl93 impl) { return impl; }
    method provideI94 (line 318) | @Provides I94 provideI94(Impl94 impl) { return impl; }
    method provideI95 (line 319) | @Provides I95 provideI95(Impl95 impl) { return impl; }
    method provideI96 (line 320) | @Provides I96 provideI96(Impl96 impl) { return impl; }
    method provideI97 (line 321) | @Provides I97 provideI97(Impl97 impl) { return impl; }
    method provideI98 (line 322) | @Provides I98 provideI98(Impl98 impl) { return impl; }
    method provideI99 (line 323) | @Provides I99 provideI99(Impl99 impl) { return impl; }
  type AppComponent (line 326) | @Component(modules = AppModule.class)
    method build (line 328) | Complex build();
  class dagger2 (line 331) | public class dagger2 {
    method main (line 332) | public static void main(String[] args) {

FILE: benchmark/create_complex/di.cpp
  type X00 (line 13) | struct X00 { BOOST_DI_INJECT(X00) { } }
    method BOOST_DI_INJECT (line 13) | BOOST_DI_INJECT(X00) { }
  type X01 (line 14) | struct X01 { BOOST_DI_INJECT(X01, X00) { } }
    method BOOST_DI_INJECT (line 14) | BOOST_DI_INJECT(X01, X00) { }
  type X02 (line 15) | struct X02 { BOOST_DI_INJECT(X02, X00, X01) { } }
    method BOOST_DI_INJECT (line 15) | BOOST_DI_INJECT(X02, X00, X01) { }
  type X03 (line 16) | struct X03 { BOOST_DI_INJECT(X03, X00, X01, X02) { } }
    method BOOST_DI_INJECT (line 16) | BOOST_DI_INJECT(X03, X00, X01, X02) { }
  type X04 (line 17) | struct X04 { BOOST_DI_INJECT(X04, X00, X01, X02, X03) { } }
    method BOOST_DI_INJECT (line 17) | BOOST_DI_INJECT(X04, X00, X01, X02, X03) { }
  type X05 (line 18) | struct X05 { BOOST_DI_INJECT(X05, X00, X01, X02, X03, X04) { } }
    method BOOST_DI_INJECT (line 18) | BOOST_DI_INJECT(X05, X00, X01, X02, X03, X04) { }
  type X06 (line 19) | struct X06 { BOOST_DI_INJECT(X06, X00, X01, X02, X03, X04, X05) { } }
    method BOOST_DI_INJECT (line 19) | BOOST_DI_INJECT(X06, X00, X01, X02, X03, X04, X05) { }
  type X07 (line 20) | struct X07 { BOOST_DI_INJECT(X07, X00, X01, X02, X03, X04, X05, X06) { } }
    method BOOST_DI_INJECT (line 20) | BOOST_DI_INJECT(X07, X00, X01, X02, X03, X04, X05, X06) { }
  type X08 (line 21) | struct X08 { BOOST_DI_INJECT(X08, X00, X01, X02, X03, X04, X05, X06, X07...
    method BOOST_DI_INJECT (line 21) | BOOST_DI_INJECT(X08, X00, X01, X02, X03, X04, X05, X06, X07) { }
  type X09 (line 22) | struct X09 { BOOST_DI_INJECT(X09, X00, X01, X02, X03, X04, X05, X06, X07...
    method BOOST_DI_INJECT (line 22) | BOOST_DI_INJECT(X09, X00, X01, X02, X03, X04, X05, X06, X07, X08) { }
  type X10 (line 23) | struct X10 { BOOST_DI_INJECT(X10, X00, X01, X02, X03, X04, X05, X06, X07...
    method BOOST_DI_INJECT (line 23) | BOOST_DI_INJECT(X10, X00, X01, X02, X03, X04, X05, X06, X07, X08, X09)...
  type X11 (line 24) | struct X11 { BOOST_DI_INJECT(X11, X01, X02, X03, X04, X05, X06, X07, X08...
    method BOOST_DI_INJECT (line 24) | BOOST_DI_INJECT(X11, X01, X02, X03, X04, X05, X06, X07, X08, X09, X10)...
  type X12 (line 25) | struct X12 { BOOST_DI_INJECT(X12, X02, X03, X04, X05, X06, X07, X08, X09...
    method BOOST_DI_INJECT (line 25) | BOOST_DI_INJECT(X12, X02, X03, X04, X05, X06, X07, X08, X09, X10, X11)...
  type X13 (line 26) | struct X13 { BOOST_DI_INJECT(X13, X03, X04, X05, X06, X07, X08, X09, X10...
    method BOOST_DI_INJECT (line 26) | BOOST_DI_INJECT(X13, X03, X04, X05, X06, X07, X08, X09, X10, X11, X12)...
  type X14 (line 27) | struct X14 { BOOST_DI_INJECT(X14, X04, X05, X06, X07, X08, X09, X10, X11...
    method BOOST_DI_INJECT (line 27) | BOOST_DI_INJECT(X14, X04, X05, X06, X07, X08, X09, X10, X11, X12, X13)...
  type X15 (line 28) | struct X15 { BOOST_DI_INJECT(X15, X05, X06, X07, X08, X09, X10, X11, X12...
    method BOOST_DI_INJECT (line 28) | BOOST_DI_INJECT(X15, X05, X06, X07, X08, X09, X10, X11, X12, X13, X14)...
  type X16 (line 29) | struct X16 { BOOST_DI_INJECT(X16, X06, X07, X08, X09, X10, X11, X12, X13...
    method BOOST_DI_INJECT (line 29) | BOOST_DI_INJECT(X16, X06, X07, X08, X09, X10, X11, X12, X13, X14, X15)...
  type X17 (line 30) | struct X17 { BOOST_DI_INJECT(X17, X07, X08, X09, X10, X11, X12, X13, X14...
    method BOOST_DI_INJECT (line 30) | BOOST_DI_INJECT(X17, X07, X08, X09, X10, X11, X12, X13, X14, X15, X16)...
  type X18 (line 31) | struct X18 { BOOST_DI_INJECT(X18, X08, X09, X10, X11, X12, X13, X14, X15...
    method BOOST_DI_INJECT (line 31) | BOOST_DI_INJECT(X18, X08, X09, X10, X11, X12, X13, X14, X15, X16, X17)...
  type X19 (line 32) | struct X19 { BOOST_DI_INJECT(X19, X09, X10, X11, X12, X13, X14, X15, X16...
    method BOOST_DI_INJECT (line 32) | BOOST_DI_INJECT(X19, X09, X10, X11, X12, X13, X14, X15, X16, X17, X18)...
  type X20 (line 33) | struct X20 { BOOST_DI_INJECT(X20, X10, X11, X12, X13, X14, X15, X16, X17...
    method BOOST_DI_INJECT (line 33) | BOOST_DI_INJECT(X20, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19)...
  type X21 (line 34) | struct X21 { BOOST_DI_INJECT(X21, X11, X12, X13, X14, X15, X16, X17, X18...
    method BOOST_DI_INJECT (line 34) | BOOST_DI_INJECT(X21, X11, X12, X13, X14, X15, X16, X17, X18, X19, X20)...
  type X22 (line 35) | struct X22 { BOOST_DI_INJECT(X22, X12, X13, X14, X15, X16, X17, X18, X19...
    method BOOST_DI_INJECT (line 35) | BOOST_DI_INJECT(X22, X12, X13, X14, X15, X16, X17, X18, X19, X20, X21)...
  type X23 (line 36) | struct X23 { BOOST_DI_INJECT(X23, X13, X14, X15, X16, X17, X18, X19, X20...
    method BOOST_DI_INJECT (line 36) | BOOST_DI_INJECT(X23, X13, X14, X15, X16, X17, X18, X19, X20, X21, X22)...
  type X24 (line 37) | struct X24 { BOOST_DI_INJECT(X24, X14, X15, X16, X17, X18, X19, X20, X21...
    method BOOST_DI_INJECT (line 37) | BOOST_DI_INJECT(X24, X14, X15, X16, X17, X18, X19, X20, X21, X22, X23)...
  type X25 (line 38) | struct X25 { BOOST_DI_INJECT(X25, X15, X16, X17, X18, X19, X20, X21, X22...
    method BOOST_DI_INJECT (line 38) | BOOST_DI_INJECT(X25, X15, X16, X17, X18, X19, X20, X21, X22, X23, X24)...
  type X26 (line 39) | struct X26 { BOOST_DI_INJECT(X26, X16, X17, X18, X19, X20, X21, X22, X23...
    method BOOST_DI_INJECT (line 39) | BOOST_DI_INJECT(X26, X16, X17, X18, X19, X20, X21, X22, X23, X24, X25)...
  type X27 (line 40) | struct X27 { BOOST_DI_INJECT(X27, X17, X18, X19, X20, X21, X22, X23, X24...
    method BOOST_DI_INJECT (line 40) | BOOST_DI_INJECT(X27, X17, X18, X19, X20, X21, X22, X23, X24, X25, X26)...
  type X28 (line 41) | struct X28 { BOOST_DI_INJECT(X28, X18, X19, X20, X21, X22, X23, X24, X25...
    method BOOST_DI_INJECT (line 41) | BOOST_DI_INJECT(X28, X18, X19, X20, X21, X22, X23, X24, X25, X26, X27)...
  type X29 (line 42) | struct X29 { BOOST_DI_INJECT(X29, X19, X20, X21, X22, X23, X24, X25, X26...
    method BOOST_DI_INJECT (line 42) | BOOST_DI_INJECT(X29, X19, X20, X21, X22, X23, X24, X25, X26, X27, X28)...
  type X30 (line 43) | struct X30 { BOOST_DI_INJECT(X30, X20, X21, X22, X23, X24, X25, X26, X27...
    method BOOST_DI_INJECT (line 43) | BOOST_DI_INJECT(X30, X20, X21, X22, X23, X24, X25, X26, X27, X28, X29)...
  type X31 (line 44) | struct X31 { BOOST_DI_INJECT(X31, X21, X22, X23, X24, X25, X26, X27, X28...
    method BOOST_DI_INJECT (line 44) | BOOST_DI_INJECT(X31, X21, X22, X23, X24, X25, X26, X27, X28, X29, X30)...
  type X32 (line 45) | struct X32 { BOOST_DI_INJECT(X32, X22, X23, X24, X25, X26, X27, X28, X29...
    method BOOST_DI_INJECT (line 45) | BOOST_DI_INJECT(X32, X22, X23, X24, X25, X26, X27, X28, X29, X30, X31)...
  type X33 (line 46) | struct X33 { BOOST_DI_INJECT(X33, X23, X24, X25, X26, X27, X28, X29, X30...
    method BOOST_DI_INJECT (line 46) | BOOST_DI_INJECT(X33, X23, X24, X25, X26, X27, X28, X29, X30, X31, X32)...
  type X34 (line 47) | struct X34 { BOOST_DI_INJECT(X34, X24, X25, X26, X27, X28, X29, X30, X31...
    method BOOST_DI_INJECT (line 47) | BOOST_DI_INJECT(X34, X24, X25, X26, X27, X28, X29, X30, X31, X32, X33)...
  type X35 (line 48) | struct X35 { BOOST_DI_INJECT(X35, X25, X26, X27, X28, X29, X30, X31, X32...
    method BOOST_DI_INJECT (line 48) | BOOST_DI_INJECT(X35, X25, X26, X27, X28, X29, X30, X31, X32, X33, X34)...
  type X36 (line 49) | struct X36 { BOOST_DI_INJECT(X36, X26, X27, X28, X29, X30, X31, X32, X33...
    method BOOST_DI_INJECT (line 49) | BOOST_DI_INJECT(X36, X26, X27, X28, X29, X30, X31, X32, X33, X34, X35)...
  type X37 (line 50) | struct X37 { BOOST_DI_INJECT(X37, X27, X28, X29, X30, X31, X32, X33, X34...
    method BOOST_DI_INJECT (line 50) | BOOST_DI_INJECT(X37, X27, X28, X29, X30, X31, X32, X33, X34, X35, X36)...
  type X38 (line 51) | struct X38 { BOOST_DI_INJECT(X38, X28, X29, X30, X31, X32, X33, X34, X35...
    method BOOST_DI_INJECT (line 51) | BOOST_DI_INJECT(X38, X28, X29, X30, X31, X32, X33, X34, X35, X36, X37)...
  type X39 (line 52) | struct X39 { BOOST_DI_INJECT(X39, X29, X30, X31, X32, X33, X34, X35, X36...
    method BOOST_DI_INJECT (line 52) | BOOST_DI_INJECT(X39, X29, X30, X31, X32, X33, X34, X35, X36, X37, X38)...
  type X40 (line 53) | struct X40 { BOOST_DI_INJECT(X40, X30, X31, X32, X33, X34, X35, X36, X37...
    method BOOST_DI_INJECT (line 53) | BOOST_DI_INJECT(X40, X30, X31, X32, X33, X34, X35, X36, X37, X38, X39)...
  type X41 (line 54) | struct X41 { BOOST_DI_INJECT(X41, X31, X32, X33, X34, X35, X36, X37, X38...
    method BOOST_DI_INJECT (line 54) | BOOST_DI_INJECT(X41, X31, X32, X33, X34, X35, X36, X37, X38, X39, X40)...
  type X42 (line 55) | struct X42 { BOOST_DI_INJECT(X42, X32, X33, X34, X35, X36, X37, X38, X39...
    method BOOST_DI_INJECT (line 55) | BOOST_DI_INJECT(X42, X32, X33, X34, X35, X36, X37, X38, X39, X40, X41)...
  type X43 (line 56) | struct X43 { BOOST_DI_INJECT(X43, X33, X34, X35, X36, X37, X38, X39, X40...
    method BOOST_DI_INJECT (line 56) | BOOST_DI_INJECT(X43, X33, X34, X35, X36, X37, X38, X39, X40, X41, X42)...
  type X44 (line 57) | struct X44 { BOOST_DI_INJECT(X44, X34, X35, X36, X37, X38, X39, X40, X41...
    method BOOST_DI_INJECT (line 57) | BOOST_DI_INJECT(X44, X34, X35, X36, X37, X38, X39, X40, X41, X42, X43)...
  type X45 (line 58) | struct X45 { BOOST_DI_INJECT(X45, X35, X36, X37, X38, X39, X40, X41, X42...
    method BOOST_DI_INJECT (line 58) | BOOST_DI_INJECT(X45, X35, X36, X37, X38, X39, X40, X41, X42, X43, X44)...
  type X46 (line 59) | struct X46 { BOOST_DI_INJECT(X46, X36, X37, X38, X39, X40, X41, X42, X43...
    method BOOST_DI_INJECT (line 59) | BOOST_DI_INJECT(X46, X36, X37, X38, X39, X40, X41, X42, X43, X44, X45)...
  type X47 (line 60) | struct X47 { BOOST_DI_INJECT(X47, X37, X38, X39, X40, X41, X42, X43, X44...
    method BOOST_DI_INJECT (line 60) | BOOST_DI_INJECT(X47, X37, X38, X39, X40, X41, X42, X43, X44, X45, X46)...
  type X48 (line 61) | struct X48 { BOOST_DI_INJECT(X48, X38, X39, X40, X41, X42, X43, X44, X45...
    method BOOST_DI_INJECT (line 61) | BOOST_DI_INJECT(X48, X38, X39, X40, X41, X42, X43, X44, X45, X46, X47)...
  type X49 (line 62) | struct X49 { BOOST_DI_INJECT(X49, X39, X40, X41, X42, X43, X44, X45, X46...
    method BOOST_DI_INJECT (line 62) | BOOST_DI_INJECT(X49, X39, X40, X41, X42, X43, X44, X45, X46, X47, X48)...
  type X50 (line 63) | struct X50 { BOOST_DI_INJECT(X50, X40, X41, X42, X43, X44, X45, X46, X47...
    method BOOST_DI_INJECT (line 63) | BOOST_DI_INJECT(X50, X40, X41, X42, X43, X44, X45, X46, X47, X48, X49)...
  type X51 (line 64) | struct X51 { BOOST_DI_INJECT(X51, X41, X42, X43, X44, X45, X46, X47, X48...
    method BOOST_DI_INJECT (line 64) | BOOST_DI_INJECT(X51, X41, X42, X43, X44, X45, X46, X47, X48, X49, X50)...
  type X52 (line 65) | struct X52 { BOOST_DI_INJECT(X52, X42, X43, X44, X45, X46, X47, X48, X49...
    method BOOST_DI_INJECT (line 65) | BOOST_DI_INJECT(X52, X42, X43, X44, X45, X46, X47, X48, X49, X50, X51)...
  type X53 (line 66) | struct X53 { BOOST_DI_INJECT(X53, X43, X44, X45, X46, X47, X48, X49, X50...
    method BOOST_DI_INJECT (line 66) | BOOST_DI_INJECT(X53, X43, X44, X45, X46, X47, X48, X49, X50, X51, X52)...
  type X54 (line 67) | struct X54 { BOOST_DI_INJECT(X54, X44, X45, X46, X47, X48, X49, X50, X51...
    method BOOST_DI_INJECT (line 67) | BOOST_DI_INJECT(X54, X44, X45, X46, X47, X48, X49, X50, X51, X52, X53)...
  type X55 (line 68) | struct X55 { BOOST_DI_INJECT(X55, X45, X46, X47, X48, X49, X50, X51, X52...
    method BOOST_DI_INJECT (line 68) | BOOST_DI_INJECT(X55, X45, X46, X47, X48, X49, X50, X51, X52, X53, X54)...
  type X56 (line 69) | struct X56 { BOOST_DI_INJECT(X56, X46, X47, X48, X49, X50, X51, X52, X53...
    method BOOST_DI_INJECT (line 69) | BOOST_DI_INJECT(X56, X46, X47, X48, X49, X50, X51, X52, X53, X54, X55)...
  type X57 (line 70) | struct X57 { BOOST_DI_INJECT(X57, X47, X48, X49, X50, X51, X52, X53, X54...
    method BOOST_DI_INJECT (line 70) | BOOST_DI_INJECT(X57, X47, X48, X49, X50, X51, X52, X53, X54, X55, X56)...
  type X58 (line 71) | struct X58 { BOOST_DI_INJECT(X58, X48, X49, X50, X51, X52, X53, X54, X55...
    method BOOST_DI_INJECT (line 71) | BOOST_DI_INJECT(X58, X48, X49, X50, X51, X52, X53, X54, X55, X56, X57)...
  type X59 (line 72) | struct X59 { BOOST_DI_INJECT(X59, X49, X50, X51, X52, X53, X54, X55, X56...
    method BOOST_DI_INJECT (line 72) | BOOST_DI_INJECT(X59, X49, X50, X51, X52, X53, X54, X55, X56, X57, X58)...
  type X60 (line 73) | struct X60 { BOOST_DI_INJECT(X60, X50, X51, X52, X53, X54, X55, X56, X57...
    method BOOST_DI_INJECT (line 73) | BOOST_DI_INJECT(X60, X50, X51, X52, X53, X54, X55, X56, X57, X58, X59)...
  type X61 (line 74) | struct X61 { BOOST_DI_INJECT(X61, X51, X52, X53, X54, X55, X56, X57, X58...
    method BOOST_DI_INJECT (line 74) | BOOST_DI_INJECT(X61, X51, X52, X53, X54, X55, X56, X57, X58, X59, X60)...
  type X62 (line 75) | struct X62 { BOOST_DI_INJECT(X62, X52, X53, X54, X55, X56, X57, X58, X59...
    method BOOST_DI_INJECT (line 75) | BOOST_DI_INJECT(X62, X52, X53, X54, X55, X56, X57, X58, X59, X60, X61)...
  type X63 (line 76) | struct X63 { BOOST_DI_INJECT(X63, X53, X54, X55, X56, X57, X58, X59, X60...
    method BOOST_DI_INJECT (line 76) | BOOST_DI_INJECT(X63, X53, X54, X55, X56, X57, X58, X59, X60, X61, X62)...
  type X64 (line 77) | struct X64 { BOOST_DI_INJECT(X64, X54, X55, X56, X57, X58, X59, X60, X61...
    method BOOST_DI_INJECT (line 77) | BOOST_DI_INJECT(X64, X54, X55, X56, X57, X58, X59, X60, X61, X62, X63)...
  type X65 (line 78) | struct X65 { BOOST_DI_INJECT(X65, X55, X56, X57, X58, X59, X60, X61, X62...
    method BOOST_DI_INJECT (line 78) | BOOST_DI_INJECT(X65, X55, X56, X57, X58, X59, X60, X61, X62, X63, X64)...
  type X66 (line 79) | struct X66 { BOOST_DI_INJECT(X66, X56, X57, X58, X59, X60, X61, X62, X63...
    method BOOST_DI_INJECT (line 79) | BOOST_DI_INJECT(X66, X56, X57, X58, X59, X60, X61, X62, X63, X64, X65)...
  type X67 (line 80) | struct X67 { BOOST_DI_INJECT(X67, X57, X58, X59, X60, X61, X62, X63, X64...
    method BOOST_DI_INJECT (line 80) | BOOST_DI_INJECT(X67, X57, X58, X59, X60, X61, X62, X63, X64, X65, X66)...
  type X68 (line 81) | struct X68 { BOOST_DI_INJECT(X68, X58, X59, X60, X61, X62, X63, X64, X65...
    method BOOST_DI_INJECT (line 81) | BOOST_DI_INJECT(X68, X58, X59, X60, X61, X62, X63, X64, X65, X66, X67)...
  type X69 (line 82) | struct X69 { BOOST_DI_INJECT(X69, X59, X60, X61, X62, X63, X64, X65, X66...
    method BOOST_DI_INJECT (line 82) | BOOST_DI_INJECT(X69, X59, X60, X61, X62, X63, X64, X65, X66, X67, X68)...
  type X70 (line 83) | struct X70 { BOOST_DI_INJECT(X70, X60, X61, X62, X63, X64, X65, X66, X67...
    method BOOST_DI_INJECT (line 83) | BOOST_DI_INJECT(X70, X60, X61, X62, X63, X64, X65, X66, X67, X68, X69)...
  type X71 (line 84) | struct X71 { BOOST_DI_INJECT(X71, X61, X62, X63, X64, X65, X66, X67, X68...
    method BOOST_DI_INJECT (line 84) | BOOST_DI_INJECT(X71, X61, X62, X63, X64, X65, X66, X67, X68, X69, X70)...
  type X72 (line 85) | struct X72 { BOOST_DI_INJECT(X72, X62, X63, X64, X65, X66, X67, X68, X69...
    method BOOST_DI_INJECT (line 85) | BOOST_DI_INJECT(X72, X62, X63, X64, X65, X66, X67, X68, X69, X70, X71)...
  type X73 (line 86) | struct X73 { BOOST_DI_INJECT(X73, X63, X64, X65, X66, X67, X68, X69, X70...
    method BOOST_DI_INJECT (line 86) | BOOST_DI_INJECT(X73, X63, X64, X65, X66, X67, X68, X69, X70, X71, X72)...
  type X74 (line 87) | struct X74 { BOOST_DI_INJECT(X74, X64, X65, X66, X67, X68, X69, X70, X71...
    method BOOST_DI_INJECT (line 87) | BOOST_DI_INJECT(X74, X64, X65, X66, X67, X68, X69, X70, X71, X72, X73)...
  type X75 (line 88) | struct X75 { BOOST_DI_INJECT(X75, X65, X66, X67, X68, X69, X70, X71, X72...
    method BOOST_DI_INJECT (line 88) | BOOST_DI_INJECT(X75, X65, X66, X67, X68, X69, X70, X71, X72, X73, X74)...
  type X76 (line 89) | struct X76 { BOOST_DI_INJECT(X76, X66, X67, X68, X69, X70, X71, X72, X73...
    method BOOST_DI_INJECT (line 89) | BOOST_DI_INJECT(X76, X66, X67, X68, X69, X70, X71, X72, X73, X74, X75)...
  type X77 (line 90) | struct X77 { BOOST_DI_INJECT(X77, X67, X68, X69, X70, X71, X72, X73, X74...
    method BOOST_DI_INJECT (line 90) | BOOST_DI_INJECT(X77, X67, X68, X69, X70, X71, X72, X73, X74, X75, X76)...
  type X78 (line 91) | struct X78 { BOOST_DI_INJECT(X78, X68, X69, X70, X71, X72, X73, X74, X75...
    method BOOST_DI_INJECT (line 91) | BOOST_DI_INJECT(X78, X68, X69, X70, X71, X72, X73, X74, X75, X76, X77)...
  type X79 (line 92) | struct X79 { BOOST_DI_INJECT(X79, X69, X70, X71, X72, X73, X74, X75, X76...
    method BOOST_DI_INJECT (line 92) | BOOST_DI_INJECT(X79, X69, X70, X71, X72, X73, X74, X75, X76, X77, X78)...
  type X80 (line 93) | struct X80 { BOOST_DI_INJECT(X80, X70, X71, X72, X73, X74, X75, X76, X77...
    method BOOST_DI_INJECT (line 93) | BOOST_DI_INJECT(X80, X70, X71, X72, X73, X74, X75, X76, X77, X78, X79)...
  type X81 (line 94) | struct X81 { BOOST_DI_INJECT(X81, X71, X72, X73, X74, X75, X76, X77, X78...
    method BOOST_DI_INJECT (line 94) | BOOST_DI_INJECT(X81, X71, X72, X73, X74, X75, X76, X77, X78, X79, X80)...
  type X82 (line 95) | struct X82 { BOOST_DI_INJECT(X82, X72, X73, X74, X75, X76, X77, X78, X79...
    method BOOST_DI_INJECT (line 95) | BOOST_DI_INJECT(X82, X72, X73, X74, X75, X76, X77, X78, X79, X80, X81)...
  type X83 (line 96) | struct X83 { BOOST_DI_INJECT(X83, X73, X74, X75, X76, X77, X78, X79, X80...
    method BOOST_DI_INJECT (line 96) | BOOST_DI_INJECT(X83, X73, X74, X75, X76, X77, X78, X79, X80, X81, X82)...
  type X84 (line 97) | struct X84 { BOOST_DI_INJECT(X84, X74, X75, X76, X77, X78, X79, X80, X81...
    method BOOST_DI_INJECT (line 97) | BOOST_DI_INJECT(X84, X74, X75, X76, X77, X78, X79, X80, X81, X82, X83)...
  type X85 (line 98) | struct X85 { BOOST_DI_INJECT(X85, X75, X76, X77, X78, X79, X80, X81, X82...
    method BOOST_DI_INJECT (line 98) | BOOST_DI_INJECT(X85, X75, X76, X77, X78, X79, X80, X81, X82, X83, X84)...
  type X86 (line 99) | struct X86 { BOOST_DI_INJECT(X86, X76, X77, X78, X79, X80, X81, X82, X83...
    method BOOST_DI_INJECT (line 99) | BOOST_DI_INJECT(X86, X76, X77, X78, X79, X80, X81, X82, X83, X84, X85)...
  type X87 (line 100) | struct X87 { BOOST_DI_INJECT(X87, X77, X78, X79, X80, X81, X82, X83, X84...
    method BOOST_DI_INJECT (line 100) | BOOST_DI_INJECT(X87, X77, X78, X79, X80, X81, X82, X83, X84, X85, X86)...
  type X88 (line 101) | struct X88 { BOOST_DI_INJECT(X88, X78, X79, X80, X81, X82, X83, X84, X85...
    method BOOST_DI_INJECT (line 101) | BOOST_DI_INJECT(X88, X78, X79, X80, X81, X82, X83, X84, X85, X86, X87)...
  type X89 (line 102) | struct X89 { BOOST_DI_INJECT(X89, X79, X80, X81, X82, X83, X84, X85, X86...
    method BOOST_DI_INJECT (line 102) | BOOST_DI_INJECT(X89, X79, X80, X81, X82, X83, X84, X85, X86, X87, X88)...
  type X90 (line 103) | struct X90 { BOOST_DI_INJECT(X90, X80, X81, X82, X83, X84, X85, X86, X87...
    method BOOST_DI_INJECT (line 103) | BOOST_DI_INJECT(X90, X80, X81, X82, X83, X84, X85, X86, X87, X88, X89)...
  type X91 (line 104) | struct X91 { BOOST_DI_INJECT(X91, X81, X82, X83, X84, X85, X86, X87, X88...
    method BOOST_DI_INJECT (line 104) | BOOST_DI_INJECT(X91, X81, X82, X83, X84, X85, X86, X87, X88, X89, X90)...
  type X92 (line 105) | struct X92 { BOOST_DI_INJECT(X92, X82, X83, X84, X85, X86, X87, X88, X89...
    method BOOST_DI_INJECT (line 105) | BOOST_DI_INJECT(X92, X82, X83, X84, X85, X86, X87, X88, X89, X90, X91)...
  type X93 (line 106) | struct X93 { BOOST_DI_INJECT(X93, X83, X84, X85, X86, X87, X88, X89, X90...
    method BOOST_DI_INJECT (line 106) | BOOST_DI_INJECT(X93, X83, X84, X85, X86, X87, X88, X89, X90, X91, X92)...
  type X94 (line 107) | struct X94 { BOOST_DI_INJECT(X94, X84, X85, X86, X87, X88, X89, X90, X91...
    method BOOST_DI_INJECT (line 107) | BOOST_DI_INJECT(X94, X84, X85, X86, X87, X88, X89, X90, X91, X92, X93)...
  type X95 (line 108) | struct X95 { BOOST_DI_INJECT(X95, X85, X86, X87, X88, X89, X90, X91, X92...
    method BOOST_DI_INJECT (line 108) | BOOST_DI_INJECT(X95, X85, X86, X87, X88, X89, X90, X91, X92, X93, X94)...
  type X96 (line 109) | struct X96 { BOOST_DI_INJECT(X96, X86, X87, X88, X89, X90, X91, X92, X93...
    method BOOST_DI_INJECT (line 109) | BOOST_DI_INJECT(X96, X86, X87, X88, X89, X90, X91, X92, X93, X94, X95)...
  type X97 (line 110) | struct X97 { BOOST_DI_INJECT(X97, X87, X88, X89, X90, X91, X92, X93, X94...
    method BOOST_DI_INJECT (line 110) | BOOST_DI_INJECT(X97, X87, X88, X89, X90, X91, X92, X93, X94, X95, X96)...
  type X98 (line 111) | struct X98 { BOOST_DI_INJECT(X98, X88, X89, X90, X91, X92, X93, X94, X95...
    method BOOST_DI_INJECT (line 111) | BOOST_DI_INJECT(X98, X88, X89, X90, X91, X92, X93, X94, X95, X96, X97)...
  type X99 (line 112) | struct X99 { BOOST_DI_INJECT(X99, X89, X90, X91, X92, X93, X94, X95, X96...
    method BOOST_DI_INJECT (line 112) | BOOST_DI_INJECT(X99, X89, X90, X91, X92, X93, X94, X95, X96, X97, X98)...
  type I00 (line 113) | struct I00 { virtual ~I00() noexcept = default; virtual void dummy() = 0; }
  type Impl00 (line 113) | struct Impl00 : I00 { BOOST_DI_INJECT(Impl00, X00, X01, X02, X03, X04, X...
    method BOOST_DI_INJECT (line 113) | BOOST_DI_INJECT(Impl00, X00, X01, X02, X03, X04, X05, X06, X07, X08, X...
    method dummy (line 113) | void dummy() override { }
  type I01 (line 114) | struct I01 { virtual ~I01() noexcept = default; virtual void dummy() = 0; }
  type Impl01 (line 114) | struct Impl01 : I01 { BOOST_DI_INJECT(Impl01, X01, X02, X03, X04, X05, X...
    method BOOST_DI_INJECT (line 114) | BOOST_DI_INJECT(Impl01, X01, X02, X03, X04, X05, X06, X07, X08, X09, X...
    method dummy (line 114) | void dummy() override { }
  type I02 (line 115) | struct I02 { virtual ~I02() noexcept = default; virtual void dummy() = 0; }
  type Impl02 (line 115) | struct Impl02 : I02 { BOOST_DI_INJECT(Impl02, X02, X03, X04, X05, X06, X...
    method BOOST_DI_INJECT (line 115) | BOOST_DI_INJECT(Impl02, X02, X03, X04, X05, X06, X07, X08, X09, X10, X...
    method dummy (line 115) | void dummy() override { }
  type I03 (line 116) | struct I03 { virtual ~I03() noexcept = default; virtual void dummy() = 0; }
  type Impl03 (line 116) | struct Impl03 : I03 { BOOST_DI_INJECT(Impl03, X03, X04, X05, X06, X07, X...
    method BOOST_DI_INJECT (line 116) | BOOST_DI_INJECT(Impl03, X03, X04, X05, X06, X07, X08, X09, X10, X11, X...
    method dummy (line 116) | void dummy() override { }
  type I04 (line 117) | struct I04 { virtual ~I04() noexcept = default; virtual void dummy() = 0; }
  type Impl04 (line 117) | struct Impl04 : I04 { BOOST_DI_INJECT(Impl04, X04, X05, X06, X07, X08, X...
    method BOOST_DI_INJECT (line 117) | BOOST_DI_INJECT(Impl04, X04, X05, X06, X07, X08, X09, X10, X11, X12, X...
    method dummy (line 117) | void dummy() override { }
  type I05 (line 118) | struct I05 { virtual ~I05() noexcept = default; virtual void dummy() = 0; }
  type Impl05 (line 118) | struct Impl05 : I05 { BOOST_DI_INJECT(Impl05, X05, X06, X07, X08, X09, X...
    method BOOST_DI_INJECT (line 118) | BOOST_DI_INJECT(Impl05, X05, X06, X07, X08, X09, X10, X11, X12, X13, X...
    method dummy (line 118) | void dummy() override { }
  type I06 (line 119) | struct I06 { virtual ~I06() noexcept = default; virtual void dummy() = 0; }
  type Impl06 (line 119) | struct Impl06 : I06 { BOOST_DI_INJECT(Impl06, X06, X07, X08, X09, X10, X...
    method BOOST_DI_INJECT (line 119) | BOOST_DI_INJECT(Impl06, X06, X07, X08, X09, X10, X11, X12, X13, X14, X...
    method dummy (line 119) | void dummy() override { }
  type I07 (line 120) | struct I07 { virtual ~I07() noexcept = default; virtual void dummy() = 0; }
  type Impl07 (line 120) | struct Impl07 : I07 { BOOST_DI_INJECT(Impl07, X07, X08, X09, X10, X11, X...
    method BOOST_DI_INJECT (line 120) | BOOST_DI_INJECT(Impl07, X07, X08, X09, X10, X11, X12, X13, X14, X15, X...
    method dummy (line 120) | void dummy() override { }
  type I08 (line 121) | struct I08 { virtual ~I08() noexcept = default; virtual void dummy() = 0; }
  type Impl08 (line 121) | struct Impl08 : I08 { BOOST_DI_INJECT(Impl08, X08, X09, X10, X11, X12, X...
    method BOOST_DI_INJECT (line 121) | BOOST_DI_INJECT(Impl08, X08, X09, X10, X11, X12, X13, X14, X15, X16, X...
    method dummy (line 121) | void dummy() override { }
  type I09 (line 122) | struct I09 { virtual ~I09() noexcept = default; virtual void dummy() = 0; }
  type Impl09 (line 122) | struct Impl09 : I09 { BOOST_DI_INJECT(Impl09, X09, X10, X11, X12, X13, X...
    method BOOST_DI_INJECT (line 122) | BOOST_DI_INJECT(Impl09, X09, X10, X11, X12, X13, X14, X15, X16, X17, X...
    method dummy (line 122) | void dummy() override { }
  type I10 (line 123) | struct I10 { virtual ~I10() noexcept = default; virtual void dummy() = 0; }
  type Impl10 (line 123) | struct Impl10 : I10 { BOOST_DI_INJECT(Impl10, X10, X11, X12, X13, X14, X...
    method BOOST_DI_INJECT (line 123) | BOOST_DI_INJECT(Impl10, X10, X11, X12, X13, X14, X15, X16, X17, X18, X...
    method dummy (line 123) | void dummy() override { }
  type I11 (line 124) | struct I11 { virtual ~I11() noexcept = default; virtual void dummy() = 0; }
  type Impl11 (line 124) | struct Impl11 : I11 { BOOST_DI_INJECT(Impl11, X11, X12, X13, X14, X15, X...
    method BOOST_DI_INJECT (line 124) | BOOST_DI_INJECT(Impl11, X11, X12, X13, X14, X15, X16, X17, X18, X19, X...
    method dummy (line 124) | void dummy() override { }
  type I12 (line 125) | struct I12 { virtual ~I12() noexcept = default; virtual void dummy() = 0; }
  type Impl12 (line 125) | struct Impl12 : I12 { BOOST_DI_INJECT(Impl12, X12, X13, X14, X15, X16, X...
    method BOOST_DI_INJECT (line 125) | BOOST_DI_INJECT(Impl12, X12, X13, X14, X15, X16, X17, X18, X19, X20, X...
    method dummy (line 125) | void dummy() override { }
  type I13 (line 126) | struct I13 { virtual ~I13() noexcept = default; virtual void dummy() = 0; }
  type Impl13 (line 126) | struct Impl13 : I13 { BOOST_DI_INJECT(Impl13, X13, X14, X15, X16, X17, X...
    method BOOST_DI_INJECT (line 126) | BOOST_DI_INJECT(Impl13, X13, X14, X15, X16, X17, X18, X19, X20, X21, X...
    method dummy (line 126) | void dummy() override { }
  type I14 (line 127) | struct I14 { virtual ~I14() noexcept = default; virtual void dummy() = 0; }
  type Impl14 (line 127) | struct Impl14 : I14 { BOOST_DI_INJECT(Impl14, X14, X15, X16, X17, X18, X...
    method BOOST_DI_INJECT (line 127) | BOOST_DI_INJECT(Impl14, X14, X15, X16, X17, X18, X19, X20, X21, X22, X...
    method dummy (line 127) | void dummy() override { }
  type I15 (line 128) | struct I15 { virtual ~I15() noexcept = default; virtual void dummy() = 0; }
  type Impl15 (line 128) | struct Impl15 : I15 { BOOST_DI_INJECT(Impl15, X15, X16, X17, X18, X19, X...
    method BOOST_DI_INJECT (line 128) | BOOST_DI_INJECT(Impl15, X15, X16, X17, X18, X19, X20, X21, X22, X23, X...
    method dummy (line 128) | void dummy() override { }
  type I16 (line 129) | struct I16 { virtual ~I16() noexcept = default; virtual void dummy() = 0; }
  type Impl16 (line 129) | struct Impl16 : I16 { BOOST_DI_INJECT(Impl16, X16, X17, X18, X19, X20, X...
    method BOOST_DI_INJECT (line 129) | BOOST_DI_INJECT(Impl16, X16, X17, X18, X19, X20, X21, X22, X23, X24, X...
    method dummy (line 129) | void dummy() override { }
  type I17 (line 130) | struct I17 { virtual ~I17() noexcept = default; virtual void dummy() = 0; }
  type Impl17 (line 130) | struct Impl17 : I17 { BOOST_DI_INJECT(Impl17, X17, X18, X19, X20, X21, X...
    method BOOST_DI_INJECT (line 130) | BOOST_DI_INJECT(Impl17, X17, X18, X19, X20, X21, X22, X23, X24, X25, X...
    method dummy (line 130) | void dummy() override { }
  type I18 (line 131) | struct I18 { virtual ~I18() noexcept = default; virtual void dummy() = 0; }
  type Impl18 (line 131) | struct Impl18 : I18 { BOOST_DI_INJECT(Impl18, X18, X19, X20, X21, X22, X...
    method BOOST_DI_INJECT (line 131) | BOOST_DI_INJECT(Impl18, X18, X19, X20, X21, X22, X23, X24, X25, X26, X...
    method dummy (line 131) | void dummy() override { }
  type I19 (line 132) | struct I19 { virtual ~I19() noexcept = default; virtual void dummy() = 0; }
  type Impl19 (line 132) | struct Impl19 : I19 { BOOST_DI_INJECT(Impl19, X19, X20, X21, X22, X23, X...
    method BOOST_DI_INJECT (line 132) | BOOST_DI_INJECT(Impl19, X19, X20, X21, X22, X23, X24, X25, X26, X27, X...
    method dummy (line 132) | void dummy() override { }
  type I20 (line 133) | struct I20 { virtual ~I20() noexcept = default; virtual void dummy() = 0; }
  type Impl20 (line 133) | struct Impl20 : I20 { BOOST_DI_INJECT(Impl20, X20, X21, X22, X23, X24, X...
    method BOOST_DI_INJECT (line 133) | BOOST_DI_INJECT(Impl20, X20, X21, X22, X23, X24, X25, X26, X27, X28, X...
    method dummy (line 133) | void dummy() override { }
  type I21 (line 134) | struct I21 { virtual ~I21() noexcept = default; virtual void dummy() = 0; }
  type Impl21 (line 134) | struct Impl21 : I21 { BOOST_DI_INJECT(Impl21, X21, X22, X23, X24, X25, X...
    method BOOST_DI_INJECT (line 134) | BOOST_DI_INJECT(Impl21, X21, X22, X23, X24, X25, X26, X27, X28, X29, X...
    method dummy (line 134) | void dummy() override { }
  type I22 (line 135) | struct I22 { virtual ~I22() noexcept = default; virtual void dummy() = 0; }
  type Impl22 (line 135) | struct Impl22 : I22 { BOOST_DI_INJECT(Impl22, X22, X23, X24, X25, X26, X...
    method BOOST_DI_INJECT (line 135) | BOOST_DI_INJECT(Impl22, X22, X23, X24, X25, X26, X27, X28, X29, X30, X...
    method dummy (line 135) | void dummy() override { }
  type I23 (line 136) | struct I23 { virtual ~I23() noexcept = default; virtual void dummy() = 0; }
  type Impl23 (line 136) | struct Impl23 : I23 { BOOST_DI_INJECT(Impl23, X23, X24, X25, X26, X27, X...
    method BOOST_DI_INJECT (line 136) | BOOST_DI_INJECT(Impl23, X23, X24, X25, X26, X27, X28, X29, X30, X31, X...
    method dummy (line 136) | void dummy() override { }
  type I24 (line 137) | struct I24 { virtual ~I24() noexcept = default; virtual void dummy() = 0; }
  type Impl24 (line 137) | struct Impl24 : I24 { BOOST_DI_INJECT(Impl24, X24, X25, X26, X27, X28, X...
    method BOOST_DI_INJECT (line 137) | BOOST_DI_INJECT(Impl24, X24, X25, X26, X27, X28, X29, X30, X31, X32, X...
    method dummy (line 137) | void dummy() override { }
  type I25 (line 138) | struct I25 { virtual ~I25() noexcept = default; virtual void dummy() = 0; }
  type Impl25 (line 138) | struct Impl25 : I25 { BOOST_DI_INJECT(Impl25, X25, X26, X27, X28, X29, X...
    method BOOST_DI_INJECT (line 138) | BOOST_DI_INJECT(Impl25, X25, X26, X27, X28, X29, X30, X31, X32, X33, X...
    method dummy (line 138) | void dummy() override { }
  type I26 (line 139) | struct I26 { virtual ~I26() noexcept = default; virtual void dummy() = 0; }
  type Impl26 (line 139) | struct Impl26 : I26 { BOOST_DI_INJECT(Impl26, X26, X27, X28, X29, X30, X...
    method BOOST_DI_INJECT (line 139) | BOOST_DI_INJECT(Impl26, X26, X27, X28, X29, X30, X31, X32, X33, X34, X...
    method dummy (line 139) | void dummy() override { }
  type I27 (line 140) | struct I27 { virtual ~I27() noexcept = default; virtual void dummy() = 0; }
  type Impl27 (line 140) | struct Impl27 : I27 { BOOST_DI_INJECT(Impl27, X27, X28, X29, X30, X31, X...
    method BOOST_DI_INJECT (line 140) | BOOST_DI_INJECT(Impl27, X27, X28, X29, X30, X31, X32, X33, X34, X35, X...
    method dummy (line 140) | void dummy() override { }
  type I28 (line 141) | struct I28 { virtual ~I28() noexcept = default; virtual void dummy() = 0; }
  type Impl28 (line 141) | struct Impl28 : I28 { BOOST_DI_INJECT(Impl28, X28, X29, X30, X31, X32, X...
    method BOOST_DI_INJECT (line 141) | BOOST_DI_INJECT(Impl28, X28, X29, X30, X31, X32, X33, X34, X35, X36, X...
    method dummy (line 141) | void dummy() override { }
  type I29 (line 142) | struct I29 { virtual ~I29() noexcept = default; virtual void dummy() = 0; }
  type Impl29 (line 142) | struct Impl29 : I29 { BOOST_DI_INJECT(Impl29, X29, X30, X31, X32, X33, X...
    method BOOST_DI_INJECT (line 142) | BOOST_DI_INJECT(Impl29, X29, X30, X31, X32, X33, X34, X35, X36, X37, X...
    method dummy (line 142) | void dummy() override { }
  type I30 (line 143) | struct I30 { virtual ~I30() noexcept = default; virtual void dummy() = 0; }
  type Impl30 (line 143) | struct Impl30 : I30 { BOOST_DI_INJECT(Impl30, X30, X31, X32, X33, X34, X...
    method BOOST_DI_INJECT (line 143) | BOOST_DI_INJECT(Impl30, X30, X31, X32, X33, X34, X35, X36, X37, X38, X...
    method dummy (line 143) | void dummy() override { }
  type I31 (line 144) | struct I31 { virtual ~I31() noexcept = default; virtual void dummy() = 0; }
  type Impl31 (line 144) | struct Impl31 : I31 { BOOST_DI_INJECT(Impl31, X31, X32, X33, X34, X35, X...
    method BOOST_DI_INJECT (line 144) | BOOST_DI_INJECT(Impl31, X31, X32, X33, X34, X35, X36, X37, X38, X39, X...
    method dummy (line 144) | void dummy() override { }
  type I32 (line 145) | struct I32 { virtual ~I32() noexcept = default; virtual void dummy() = 0; }
  type Impl32 (line 145) | struct Impl32 : I32 { BOOST_DI_INJECT(Impl32, X32, X33, X34, X35, X36, X...
    method BOOST_DI_INJECT (line 145) | BOOST_DI_INJECT(Impl32, X32, X33, X34, X35, X36, X37, X38, X39, X40, X...
    method dummy (line 145) | void dummy() override { }
  type I33 (line 146) | struct I33 { virtual ~I33() noexcept = default; virtual void dummy() = 0; }
  type Impl33 (line 146) | struct Impl33 : I33 { BOOST_DI_INJECT(Impl33, X33, X34, X35, X36, X37, X...
    method BOOST_DI_INJECT (line 146) | BOOST_DI_INJECT(Impl33, X33, X34, X35, X36, X37, X38, X39, X40, X41, X...
    method dummy (line 146) | void dummy() override { }
  type I34 (line 147) | struct I34 { virtual ~I34() noexcept = default; virtual void dummy() = 0; }
  type Impl34 (line 147) | struct Impl34 : I34 { BOOST_DI_INJECT(Impl34, X34, X35, X36, X37, X38, X...
    method BOOST_DI_INJECT (line 147) | BOOST_DI_INJECT(Impl34, X34, X35, X36, X37, X38, X39, X40, X41, X42, X...
    method dummy (line 147) | void dummy() override { }
  type I35 (line 148) | struct I35 { virtual ~I35() noexcept = default; virtual void dummy() = 0; }
  type Impl35 (line 148) | struct Impl35 : I35 { BOOST_DI_INJECT(Impl35, X35, X36, X37, X38, X39, X...
    method BOOST_DI_INJECT (line 148) | BOOST_DI_INJECT(Impl35, X35, X36, X37, X38, X39, X40, X41, X42, X43, X...
    method dummy (line 148) | void dummy() override { }
  type I36 (line 149) | struct I36 { virtual ~I36() noexcept = default; virtual void dummy() = 0; }
  type Impl36 (line 149) | struct Impl36 : I36 { BOOST_DI_INJECT(Impl36, X36, X37, X38, X39, X40, X...
    method BOOST_DI_INJECT (line 149) | BOOST_DI_INJECT(Impl36, X36, X37, X38, X39, X40, X41, X42, X43, X44, X...
    method dummy (line 149) | void dummy() override { }
  type I37 (line 150) | struct I37 { virtual ~I37() noexcept = default; virtual void dummy() = 0; }
  type Impl37 (line 150) | struct Impl37 : I37 { BOOST_DI_INJECT(Impl37, X37, X38, X39, X40, X41, X...
    method BOOST_DI_INJECT (line 150) | BOOST_DI_INJECT(Impl37, X37, X38, X39, X40, X41, X42, X43, X44, X45, X...
    method dummy (line 150) | void dummy() override { }
  type I38 (line 151) | struct I38 { virtual ~I38() noexcept = default; virtual void dummy() = 0; }
  type Impl38 (line 151) | struct Impl38 : I38 { BOOST_DI_INJECT(Impl38, X38, X39, X40, X41, X42, X...
    method BOOST_DI_INJECT (line 151) | BOOST_DI_INJECT(Impl38, X38, X39, X40, X41, X42, X43, X44, X45, X46, X...
    method dummy (line 151) | void dummy() override { }
  type I39 (line 152) | struct I39 { virtual ~I39() noexcept = default; virtual void dummy() = 0; }
  type Impl39 (line 152) | struct Impl39 : I39 { BOOST_DI_INJECT(Impl39, X39, X40, X41, X42, X43, X...
    method BOOST_DI_INJECT (line 152) | BOOST_DI_INJECT(Impl39, X39, X40, X41, X42, X43, X44, X45, X46, X47, X...
    method dummy (line 152) | void dummy() override { }
  type I40 (line 153) | struct I40 { virtual ~I40() noexcept = default; virtual void dummy() = 0; }
  type Impl40 (line 153) | struct Impl40 : I40 { BOOST_DI_INJECT(Impl40, X40, X41, X42, X43, X44, X...
    method BOOST_DI_INJECT (line 153) | BOOST_DI_INJECT(Impl40, X40, X41, X42, X43, X44, X45, X46, X47, X48, X...
    method dummy (line 153) | void dummy() override { }
  type I41 (line 154) | struct I41 { virtual ~I41() noexcept = default; virtual void dummy() = 0; }
  type Impl41 (line 154) | struct Impl41 : I41 { BOOST_DI_INJECT(Impl41, X41, X42, X43, X44, X45, X...
    method BOOST_DI_INJECT (line 154) | BOOST_DI_INJECT(Impl41, X41, X42, X43, X44, X45, X46, X47, X48, X49, X...
    method dummy (line 154) | void dummy() override { }
  type I42 (line 155) | struct I42 { virtual ~I42() noexcept = default; virtual void dummy() = 0; }
  type Impl42 (line 155) | struct Impl42 : I42 { BOOST_DI_INJECT(Impl42, X42, X43, X44, X45, X46, X...
    method BOOST_DI_INJECT (line 155) | BOOST_DI_INJECT(Impl42, X42, X43, X44, X45, X46, X47, X48, X49, X50, X...
    method dummy (line 155) | void dummy() override { }
  type I43 (line 156) | struct I43 { virtual ~I43() noexcept = default; virtual void dummy() = 0; }
  type Impl43 (line 156) | struct Impl43 : I43 { BOOST_DI_INJECT(Impl43, X43, X44, X45, X46, X47, X...
    method BOOST_DI_INJECT (line 156) | BOOST_DI_INJECT(Impl43, X43, X44, X45, X46, X47, X48, X49, X50, X51, X...
    method dummy (line 156) | void dummy() override { }
  type I44 (line 157) | struct I44 { virtual ~I44() noexcept = default; virtual void dummy() = 0; }
  type Impl44 (line 157) | struct Impl44 : I44 { BOOST_DI_INJECT(Impl44, X44, X45, X46, X47, X48, X...
    method BOOST_DI_INJECT (line 157) | BOOST_DI_INJECT(Impl44, X44, X45, X46, X47, X48, X49, X50, X51, X52, X...
    method dummy (line 157) | void dummy() override { }
  type I45 (line 158) | struct I45 { virtual ~I45() noexcept = default; virtual void dummy() = 0; }
  type Impl45 (line 158) | struct Impl45 : I45 { BOOST_DI_INJECT(Impl45, X45, X46, X47, X48, X49, X...
    method BOOST_DI_INJECT (line 158) | BOOST_DI_INJECT(Impl45, X45, X46, X47, X48, X49, X50, X51, X52, X53, X...
    method dummy (line 158) | void dummy() override { }
  type I46 (line 159) | struct I46 { virtual ~I46() noexcept = default; virtual void dummy() = 0; }
  type Impl46 (line 159) | struct Impl46 : I46 { BOOST_DI_INJECT(Impl46, X46, X47, X48, X49, X50, X...
    method BOOST_DI_INJECT (line 159) | BOOST_DI_INJECT(Impl46, X46, X47, X48, X49, X50, X51, X52, X53, X54, X...
    method dummy (line 159) | void dummy() override { }
  type I47 (line 160) | struct I47 { virtual ~I47() noexcept = default; virtual void dummy() = 0; }
  type Impl47 (line 160) | struct Impl47 : I47 { BOOST_DI_INJECT(Impl47, X47, X48, X49, X50, X51, X...
    method BOOST_DI_INJECT (line 160) | BOOST_DI_INJECT(Impl47, X47, X48, X49, X50, X51, X52, X53, X54, X55, X...
    method dummy (line 160) | void dummy() override { }
  type I48 (line 161) | struct I48 { virtual ~I48() noexcept = default; virtual void dummy() = 0; }
  type Impl48 (line 161) | struct Impl48 : I48 { BOOST_DI_INJECT(Impl48, X48, X49, X50, X51, X52, X...
    method BOOST_DI_INJECT (line 161) | BOOST_DI_INJECT(Impl48, X48, X49, X50, X51, X52, X53, X54, X55, X56, X...
    method dummy (line 161) | void dummy() override { }
  type I49 (line 162) | struct I49 { virtual ~I49() noexcept = default; virtual void dummy() = 0; }
  type Impl49 (line 162) | struct Impl49 : I49 { BOOST_DI_INJECT(Impl49, X49, X50, X51, X52, X53, X...
    method BOOST_DI_INJECT (line 162) | BOOST_DI_INJECT(Impl49, X49, X50, X51, X52, X53, X54, X55, X56, X57, X...
    method dummy (line 162) | void dummy() override { }
  type I50 (line 163) | struct I50 { virtual ~I50() noexcept = default; virtual void dummy() = 0; }
  type Impl50 (line 163) | struct Impl50 : I50 { BOOST_DI_INJECT(Impl50, X50, X51, X52, X53, X54, X...
    method BOOST_DI_INJECT (line 163) | BOOST_DI_INJECT(Impl50, X50, X51, X52, X53, X54, X55, X56, X57, X58, X...
    method dummy (line 163) | void dummy() override { }
  type I51 (line 164) | struct I51 { virtual ~I51() noexcept = default; virtual void dummy() = 0; }
  type Impl51 (line 164) | struct Impl51 : I51 { BOOST_DI_INJECT(Impl51, X51, X52, X53, X54, X55, X...
    method BOOST_DI_INJECT (line 164) | BOOST_DI_INJECT(Impl51, X51, X52, X53, X54, X55, X56, X57, X58, X59, X...
    method dummy (line 164) | void dummy() override { }
  type I52 (line 165) | struct I52 { virtual ~I52() noexcept = default; virtual void dummy() = 0; }
  type Impl52 (line 165) | struct Impl52 : I52 { BOOST_DI_INJECT(Impl52, X52, X53, X54, X55, X56, X...
    method BOOST_DI_INJECT (line 165) | BOOST_DI_INJECT(Impl52, X52, X53, X54, X55, X56, X57, X58, X59, X60, X...
    method dummy (line 165) | void dummy() override { }
  type I53 (line 166) | struct I53 { virtual ~I53() noexcept = default; virtual void dummy() = 0; }
  type Impl53 (line 166) | struct Impl53 : I53 { BOOST_DI_INJECT(Impl53, X53, X54, X55, X56, X57, X...
    method BOOST_DI_INJECT (line 166) | BOOST_DI_INJECT(Impl53, X53, X54, X55, X56, X57, X58, X59, X60, X61, X...
    method dummy (line 166) | void dummy() override { }
  type I54 (line 167) | struct I54 { virtual ~I54() noexcept = default; virtual void dummy() = 0; }
  type Impl54 (line 167) | struct Impl54 : I54 { BOOST_DI_INJECT(Impl54, X54, X55, X56, X57, X58, X...
    method BOOST_DI_INJECT (line 167) | BOOST_DI_INJECT(Impl54, X54, X55, X56, X57, X58, X59, X60, X61, X62, X...
    method dummy (line 167) | void dummy() override { }
  type I55 (line 168) | struct I55 { virtual ~I55() noexcept = default; virtual void dummy() = 0; }
  type Impl55 (line 168) | struct Impl55 : I55 { BOOST_DI_INJECT(Impl55, X55, X56, X57, X58, X59, X...
    method BOOST_DI_INJECT (line 168) | BOOST_DI_INJECT(Impl55, X55, X56, X57, X58, X59, X60, X61, X62, X63, X...
    method dummy (line 168) | void dummy() override { }
  type I56 (line 169) | struct I56 { virtual ~I56() noexcept = default; virtual void dummy() = 0; }
  type Impl56 (line 169) | struct Impl56 : I56 { BOOST_DI_INJECT(Impl56, X56, X57, X58, X59, X60, X...
    method BOOST_DI_INJECT (line 169) | BOOST_DI_INJECT(Impl56, X56, X57, X58, X59, X60, X61, X62, X63, X64, X...
    method dummy (line 169) | void dummy() override { }
  type I57 (line 170) | struct I57 { virtual ~I57() noexcept = default; virtual void dummy() = 0; }
  type Impl57 (line 170) | struct Impl57 : I57 { BOOST_DI_INJECT(Impl57, X57, X58, X59, X60, X61, X...
    method BOOST_DI_INJECT (line 170) | BOOST_DI_INJECT(Impl57, X57, X58, X59, X60, X61, X62, X63, X64, X65, X...
    method dummy (line 170) | void dummy() override { }
  type I58 (line 171) | struct I58 { virtual ~I58() noexcept = default; virtual void dummy() = 0; }
  type Impl58 (line 171) | struct Impl58 : I58 { BOOST_DI_INJECT(Impl58, X58, X59, X60, X61, X62, X...
    method BOOST_DI_INJECT (line 171) | BOOST_DI_INJECT(Impl58, X58, X59, X60, X61, X62, X63, X64, X65, X66, X...
    method dummy (line 171) | void dummy() override { }
  type I59 (line 172) | struct I59 { virtual ~I59() noexcept = default; virtual void dummy() = 0; }
  type Impl59 (line 172) | struct Impl59 : I59 { BOOST_DI_INJECT(Impl59, X59, X60, X61, X62, X63, X...
    method BOOST_DI_INJECT (line 172) | BOOST_DI_INJECT(Impl59, X59, X60, X61, X62, X63, X64, X65, X66, X67, X...
    method dummy (line 172) | void dummy() override { }
  type I60 (line 173) | struct I60 { virtual ~I60() noexcept = default; virtual void dummy() = 0; }
  type Impl60 (line 173) | struct Impl60 : I60 { BOOST_DI_INJECT(Impl60, X60, X61, X62, X63, X64, X...
    method BOOST_DI_INJECT (line 173) | BOOST_DI_INJECT(Impl60, X60, X61, X62, X63, X64, X65, X66, X67, X68, X...
    method dummy (line 173) | void dummy() override { }
  type I61 (line 174) | struct I61 { virtual ~I61() noexcept = default; virtual void dummy() = 0; }
  type Impl61 (line 174) | struct Impl61 : I61 { BOOST_DI_INJECT(Impl61, X61, X62, X63, X64, X65, X...
    method BOOST_DI_INJECT (line 174) | BOOST_DI_INJECT(Impl61, X61, X62, X63, X64, X65, X66, X67, X68, X69, X...
    method dummy (line 174) | void dummy() override { }
  type I62 (line 175) | struct I62 { virtual ~I62() noexcept = default; virtual void dummy() = 0; }
  type Impl62 (line 175) | struct Impl62 : I62 { BOOST_DI_INJECT(Impl62, X62, X63, X64, X65, X66, X...
    method BOOST_DI_INJECT (line 175) | BOOST_DI_INJECT(Impl62, X62, X63, X64, X65, X66, X67, X68, X69, X70, X...
    method dummy (line 175) | void dummy() override { }
  type I63 (line 176) | struct I63 { virtual ~I63() noexcept = default; virtual void dummy() = 0; }
  type Impl63 (line 176) | struct Impl63 : I63 { BOOST_DI_INJECT(Impl63, X63, X64, X65, X66, X67, X...
    method BOOST_DI_INJECT (line 176) | BOOST_DI_INJECT(Impl63, X63, X64, X65, X66, X67, X68, X69, X70, X71, X...
    method dummy (line 176) | void dummy() override { }
  type I64 (line 177) | struct I64 { virtual ~I64() noexcept = default; virtual void dummy() = 0; }
  type Impl64 (line 177) | struct Impl64 : I64 { BOOST_DI_INJECT(Impl64, X64, X65, X66, X67, X68, X...
    method BOOST_DI_INJECT (line 177) | BOOST_DI_INJECT(Impl64, X64, X65, X66, X67, X68, X69, X70, X71, X72, X...
    method dummy (line 177) | void dummy() override { }
  type I65 (line 178) | struct I65 { virtual ~I65() noexcept = default; virtual void dummy() = 0; }
  type Impl65 (line 178) | struct Impl65 : I65 { BOOST_DI_INJECT(Impl65, X65, X66, X67, X68, X69, X...
    method BOOST_DI_INJECT (line 178) | BOOST_DI_INJECT(Impl65, X65, X66, X67, X68, X69, X70, X71, X72, X73, X...
    method dummy (line 178) | void dummy() override { }
  type I66 (line 179) | struct I66 { virtual ~I66() noexcept = default; virtual void dummy() = 0; }
  type Impl66 (line 179) | struct Impl66 : I66 { BOOST_DI_INJECT(Impl66, X66, X67, X68, X69, X70, X...
    method BOOST_DI_INJECT (line 179) | BOOST_DI_INJECT(Impl66, X66, X67, X68, X69, X70, X71, X72, X73, X74, X...
    method dummy (line 179) | void dummy() override { }
  type I67 (line 180) | struct I67 { virtual ~I67() noexcept = default; virtual void dummy() = 0; }
  type Impl67 (line 180) | struct Impl67 : I67 { BOOST_DI_INJECT(Impl67, X67, X68, X69, X70, X71, X...
    method BOOST_DI_INJECT (line 180) | BOOST_DI_INJECT(Impl67, X67, X68, X69, X70, X71, X72, X73, X74, X75, X...
    method dummy (line 180) | void dummy() override { }
  type I68 (line 181) | struct I68 { virtual ~I68() noexcept = default; virtual void dummy() = 0; }
  type Impl68 (line 181) | struct Impl68 : I68 { BOOST_DI_INJECT(Impl68, X68, X69, X70, X71, X72, X...
    method BOOST_DI_INJECT (line 181) | BOOST_DI_INJECT(Impl68, X68, X69, X70, X71, X72, X73, X74, X75, X76, X...
    method dummy (line 181) | void dummy() override { }
  type I69 (line 182) | struct I69 { virtual ~I69() noexcept = default; virtual void dummy() = 0; }
  type Impl69 (line 182) | struct Impl69 : I69 { BOOST_DI_INJECT(Impl69, X69, X70, X71, X72, X73, X...
    method BOOST_DI_INJECT (line 182) | BOOST_DI_INJECT(Impl69, X69, X70, X71, X72, X73, X74, X75, X76, X77, X...
    method dummy (line 182) | void dummy() override { }
  type I70 (line 183) | struct I70 { virtual ~I70() noexcept = default; virtual void dummy() = 0; }
  type Impl70 (line 183) | struct Impl70 : I70 { BOOST_DI_INJECT(Impl70, X70, X71, X72, X73, X74, X...
    method BOOST_DI_INJECT (line 183) | BOOST_DI_INJECT(Impl70, X70, X71, X72, X73, X74, X75, X76, X77, X78, X...
    method dummy (line 183) | void dummy() override { }
  type I71 (line 184) | struct I71 { virtual ~I71() noexcept = default; virtual void dummy() = 0; }
  type Impl71 (line 184) | struct Impl71 : I71 { BOOST_DI_INJECT(Impl71, X71, X72, X73, X74, X75, X...
    method BOOST_DI_INJECT (line 184) | BOOST_DI_INJECT(Impl71, X71, X72, X73, X74, X75, X76, X77, X78, X79, X...
    method dummy (line 184) | void dummy() override { }
  type I72 (line 185) | struct I72 { virtual ~I72() noexcept = default; virtual void dummy() = 0; }
  type Impl72 (line 185) | struct Impl72 : I72 { BOOST_DI_INJECT(Impl72, X72, X73, X74, X75, X76, X...
    method BOOST_DI_INJECT (line 185) | BOOST_DI_INJECT(Impl72, X72, X73, X74, X75, X76, X77, X78, X79, X80, X...
    method dummy (line 185) | void dummy() override { }
  type I73 (line 186) | struct I73 { virtual ~I73() noexcept = default; virtual void dummy() = 0; }
  type Impl73 (line 186) | struct Impl73 : I73 { BOOST_DI_INJECT(Impl73, X73, X74, X75, X76, X77, X...
    method BOOST_DI_INJECT (line 186) | BOOST_DI_INJECT(Impl73, X73, X74, X75, X76, X77, X78, X79, X80, X81, X...
    method dummy (line 186) | void dummy() override { }
  type I74 (line 187) | struct I74 { virtual ~I74() noexcept = default; virtual void dummy() = 0; }
  type Impl74 (line 187) | struct Impl74 : I74 { BOOST_DI_INJECT(Impl74, X74, X75, X76, X77, X78, X...
    method BOOST_DI_INJECT (line 187) | BOOST_DI_INJECT(Impl74, X74, X75, X76, X77, X78, X79, X80, X81, X82, X...
    method dummy (line 187) | void dummy() override { }
  type I75 (line 188) | struct I75 { virtual ~I75() noexcept = default; virtual void dummy() = 0; }
  type Impl75 (line 188) | struct Impl75 : I75 { BOOST_DI_INJECT(Impl75, X75, X76, X77, X78, X79, X...
    method BOOST_DI_INJECT (line 188) | BOOST_DI_INJECT(Impl75, X75, X76, X77, X78, X79, X80, X81, X82, X83, X...
    method dummy (line 188) | void dummy() override { }
  type I76 (line 189) | struct I76 { virtual ~I76() noexcept = default; virtual void dummy() = 0; }
  type Impl76 (line 189) | struct Impl76 : I76 { BOOST_DI_INJECT(Impl76, X76, X77, X78, X79, X80, X...
    method BOOST_DI_INJECT (line 189) | BOOST_DI_INJECT(Impl76, X76, X77, X78, X79, X80, X81, X82, X83, X84, X...
    method dummy (line 189) | void dummy() override { }
  type I77 (line 190) | struct I77 { virtual ~I77() noexcept = default; virtual void dummy() = 0; }
  type Impl77 (line 190) | struct Impl77 : I77 { BOOST_DI_INJECT(Impl77, X77, X78, X79, X80, X81, X...
    method BOOST_DI_INJECT (line 190) | BOOST_DI_INJECT(Impl77, X77, X78, X79, X80, X81, X82, X83, X84, X85, X...
    method dummy (line 190) | void dummy() override { }
  type I78 (line 191) | struct I78 { virtual ~I78() noexcept = default; virtual void dummy() = 0; }
  type Impl78 (line 191) | struct Impl78 : I78 { BOOST_DI_INJECT(Impl78, X78, X79, X80, X81, X82, X...
    method BOOST_DI_INJECT (line 191) | BOOST_DI_INJECT(Impl78, X78, X79, X80, X81, X82, X83, X84, X85, X86, X...
    method dummy (line 191) | void dummy() override { }
  type I79 (line 192) | struct I79 { virtual ~I79() noexcept = default; virtual void dummy() = 0; }
  type Impl79 (line 192) | struct Impl79 : I79 { BOOST_DI_INJECT(Impl79, X79, X80, X81, X82, X83, X...
    method BOOST_DI_INJECT (line 192) | BOOST_DI_INJECT(Impl79, X79, X80, X81, X82, X83, X84, X85, X86, X87, X...
    method dummy (line 192) | void dummy() override { }
  type I80 (line 193) | struct I80 { virtual ~I80() noexcept = default; virtual void dummy() = 0; }
  type Impl80 (line 193) | struct Impl80 : I80 { BOOST_DI_INJECT(Impl80, X80, X81, X82, X83, X84, X...
    method BOOST_DI_INJECT (line 193) | BOOST_DI_INJECT(Impl80, X80, X81, X82, X83, X84, X85, X86, X87, X88, X...
    method dummy (line 193) | void dummy() override { }
  type I81 (line 194) | struct I81 { virtual ~I81() noexcept = default; virtual void dummy() = 0; }
  type Impl81 (line 194) | struct Impl81 : I81 { BOOST_DI_INJECT(Impl81, X81, X82, X83, X84, X85, X...
    method BOOST_DI_INJECT (line 194) | BOOST_DI_INJECT(Impl81, X81, X82, X83, X84, X85, X86, X87, X88, X89, X...
    method dummy (line 194) | void dummy() override { }
  type I82 (line 195) | struct I82 { virtual ~I82() noexcept = default; virtual void dummy() = 0; }
  type Impl82 (line 195) | struct Impl82 : I82 { BOOST_DI_INJECT(Impl82, X82, X83, X84, X85, X86, X...
    method BOOST_DI_INJECT (line 195) | BOOST_DI_INJECT(Impl82, X82, X83, X84, X85, X86, X87, X88, X89, X90, X...
    method dummy (line 195) | void dummy() override { }
  type I83 (line 196) | struct I83 { virtual ~I83() noexcept = default; virtual void dummy() = 0; }
  type Impl83 (line 196) | struct Impl83 : I83 { BOOST_DI_INJECT(Impl83, X83, X84, X85, X86, X87, X...
    method BOOST_DI_INJECT (line 196) | BOOST_DI_INJECT(Impl83, X83, X84, X85, X86, X87, X88, X89, X90, X91, X...
    method dummy (line 196) | void dummy() override { }
  type I84 (line 197) | struct I84 { virtual ~I84() noexcept = default; virtual void dummy() = 0; }
  type Impl84 (line 197) | struct Impl84 : I84 { BOOST_DI_INJECT(Impl84, X84, X85, X86, X87, X88, X...
    method BOOST_DI_INJECT (line 197) | BOOST_DI_INJECT(Impl84, X84, X85, X86, X87, X88, X89, X90, X91, X92, X...
    method dummy (line 197) | void dummy() override { }
  type I85 (line 198) | struct I85 { virtual ~I85() noexcept = default; virtual void dummy() = 0; }
  type Impl85 (line 198) | struct Impl85 : I85 { BOOST_DI_INJECT(Impl85, X85, X86, X87, X88, X89, X...
    method BOOST_DI_INJECT (line 198) | BOOST_DI_INJECT(Impl85, X85, X86, X87, X88, X89, X90, X91, X92, X93, X...
    method dummy (line 198) | void dummy() override { }
  type I86 (line 199) | struct I86 { virtual ~I86() noexcept = default; virtual void dummy() = 0; }
  type Impl86 (line 199) | struct Impl86 : I86 { BOOST_DI_INJECT(Impl86, X86, X87, X88, X89, X90, X...
    method BOOST_DI_INJECT (line 199) | BOOST_DI_INJECT(Impl86, X86, X87, X88, X89, X90, X91, X92, X93, X94, X...
    method dummy (line 199) | void dummy() override { }
  type I87 (line 200) | struct I87 { virtual ~I87() noexcept = default; virtual void dummy() = 0; }
  type Impl87 (line 200) | struct Impl87 : I87 { BOOST_DI_INJECT(Impl87, X87, X88, X89, X90, X91, X...
    method BOOST_DI_INJECT (line 200) | BOOST_DI_INJECT(Impl87, X87, X88, X89, X90, X91, X92, X93, X94, X95, X...
    method dummy (line 200) | void dummy() override { }
  type I88 (line 201) | struct I88 { virtual ~I88() noexcept = default; virtual void dummy() = 0; }
  type Impl88 (line 201) | struct Impl88 : I88 { BOOST_DI_INJECT(Impl88, X88, X89, X90, X91, X92, X...
    method BOOST_DI_INJECT (line 201) | BOOST_DI_INJECT(Impl88, X88, X89, X90, X91, X92, X93, X94, X95, X96, X...
    method dummy (line 201) | void dummy() override { }
  type I89 (line 202) | struct I89 { virtual ~I89() noexcept = default; virtual void dummy() = 0; }
  type Impl89 (line 202) | struct Impl89 : I89 { BOOST_DI_INJECT(Impl89, X89, X90, X91, X92, X93, X...
    method BOOST_DI_INJECT (line 202) | BOOST_DI_INJECT(Impl89, X89, X90, X91, X92, X93, X94, X95, X96, X97, X...
    method dummy (line 202) | void dummy() override { }
  type I90 (line 203) | struct I90 { virtual ~I90() noexcept = default; virtual void dummy() = 0; }
  type Impl90 (line 203) | struct Impl90 : I90 { BOOST_DI_INJECT(Impl90, X90, X91, X92, X93, X94, X...
    method BOOST_DI_INJECT (line 203) | BOOST_DI_INJECT(Impl90, X90, X91, X92, X93, X94, X95, X96, X97, X98, X...
    method dummy (line 203) | void dummy() override { }
  type I91 (line 204) | struct I91 { virtual ~I91() noexcept = default; virtual void dummy() = 0; }
  type Impl91 (line 204) | struct Impl91 : I91 { BOOST_DI_INJECT(Impl91, X91, X92, X93, X94, X95, X...
    method BOOST_DI_INJECT (line 204) | BOOST_DI_INJECT(Impl91, X91, X92, X93, X94, X95, X96, X97, X98, X99, X...
    method dummy (line 204) | void dummy() override { }
  type I92 (line 205) | struct I92 { virtual ~I92() noexcept = default; virtual void dummy() = 0; }
  type Impl92 (line 205) | struct Impl92 : I92 { BOOST_DI_INJECT(Impl92, X92, X93, X94, X95, X96, X...
    method BOOST_DI_INJECT (line 205) | BOOST_DI_INJECT(Impl92, X92, X93, X94, X95, X96, X97, X98, X99, X00, X...
    method dummy (line 205) | void dummy() override { }
  type I93 (line 206) | struct I93 { virtual ~I93() noexcept = default; virtual void dummy() = 0; }
  type Impl93 (line 206) | struct Impl93 : I93 { BOOST_DI_INJECT(Impl93, X93, X94, X95, X96, X97, X...
    method BOOST_DI_INJECT (line 206) | BOOST_DI_INJECT(Impl93, X93, X94, X95, X96, X97, X98, X99, X00, X01, X...
    method dummy (line 206) | void dummy() override { }
  type I94 (line 207) | struct I94 { virtual ~I94() noexcept = default; virtual void dummy() = 0; }
  type Impl94 (line 207) | struct Impl94 : I94 { BOOST_DI_INJECT(Impl94, X94, X95, X96, X97, X98, X...
    method BOOST_DI_INJECT (line 207) | BOOST_DI_INJECT(Impl94, X94, X95, X96, X97, X98, X99, X00, X01, X02, X...
    method dummy (line 207) | void dummy() override { }
  type I95 (line 208) | struct I95 { virtual ~I95() noexcept = default; virtual void dummy() = 0; }
  type Impl95 (line 208) | struct Impl95 : I95 { BOOST_DI_INJECT(Impl95, X95, X96, X97, X98, X99, X...
    method BOOST_DI_INJECT (line 208) | BOOST_DI_INJECT(Impl95, X95, X96, X97, X98, X99, X00, X01, X02, X03, X...
    method dummy (line 208) | void dummy() override { }
  type I96 (line 209) | struct I96 { virtual ~I96() noexcept = default; virtual void dummy() = 0; }
  type Impl96 (line 209) | struct Impl96 : I96 { BOOST_DI_INJECT(Impl96, X96, X97, X98, X99, X00, X...
    method BOOST_DI_INJECT (line 209) | BOOST_DI_INJECT(Impl96, X96, X97, X98, X99, X00, X01, X02, X03, X04, X...
    method dummy (line 209) | void dummy() override { }
  type I97 (line 210) | struct I97 { virtual ~I97() noexcept = default; virtual void dummy() = 0; }
  type Impl97 (line 210) | struct Impl97 : I97 { BOOST_DI_INJECT(Impl97, X97, X98, X99, X00, X01, X...
    method BOOST_DI_INJECT (line 210) | BOOST_DI_INJECT(Impl97, X97, X98, X99, X00, X01, X02, X03, X04, X05, X...
    method dummy (line 210) | void dummy() override { }
  type I98 (line 211) | struct I98 { virtual ~I98() noexcept = default; virtual void dummy() = 0; }
  type Impl98 (line 211) | struct Impl98 : I98 { BOOST_DI_INJECT(Impl98, X98, X99, X00, X01, X02, X...
    method BOOST_DI_INJECT (line 211) | BOOST_DI_INJECT(Impl98, X98, X99, X00, X01, X02, X03, X04, X05, X06, X...
    method dummy (line 211) | void dummy() override { }
  type I99 (line 212) | struct I99 { virtual ~I99() noexcept = default; virtual void dummy() = 0; }
  type Impl99 (line 212) | struct Impl99 : I99 { BOOST_DI_INJECT(Impl99, X99, X00, X01, X02, X03, X...
    method BOOST_DI_INJECT (line 212) | BOOST_DI_INJECT(Impl99, X99, X00, X01, X02, X03, X04, X05, X06, X07, X...
    method dummy (line 212) | void dummy() override { }
  type C0 (line 213) | struct C0 { BOOST_DI_INJECT(C0, std::unique_ptr<I00>, std::unique_ptr<I0...
    method BOOST_DI_INJECT (line 213) | BOOST_DI_INJECT(C0, std::unique_ptr<I00>, std::unique_ptr<I01>, std::u...
  type C1 (line 214) | struct C1 { BOOST_DI_INJECT(C1, std::unique_ptr<I10>, std::unique_ptr<I1...
    method BOOST_DI_INJECT (line 214) | BOOST_DI_INJECT(C1, std::unique_ptr<I10>, std::unique_ptr<I11>, std::u...
  type C2 (line 215) | struct C2 { BOOST_DI_INJECT(C2, std::unique_ptr<I20>, std::unique_ptr<I2...
    method BOOST_DI_INJECT (line 215) | BOOST_DI_INJECT(C2, std::unique_ptr<I20>, std::unique_ptr<I21>, std::u...
  type C3 (line 216) | struct C3 { BOOST_DI_INJECT(C3, std::unique_ptr<I30>, std::unique_ptr<I3...
    method BOOST_DI_INJECT (line 216) | BOOST_DI_INJECT(C3, std::unique_ptr<I30>, std::unique_ptr<I31>, std::u...
  type C4 (line 217) | struct C4 { BOOST_DI_INJECT(C4, std::unique_ptr<I40>, std::unique_ptr<I4...
    method BOOST_DI_INJECT (line 217) | BOOST_DI_INJECT(C4, std::unique_ptr<I40>, std::unique_ptr<I41>, std::u...
  type C5 (line 218) | struct C5 { BOOST_DI_INJECT(C5, std::unique_ptr<I50>, std::unique_ptr<I5...
    method BOOST_DI_INJECT (line 218) | BOOST_DI_INJECT(C5, std::unique_ptr<I50>, std::unique_ptr<I51>, std::u...
  type C6 (line 219) | struct C6 { BOOST_DI_INJECT(C6, std::unique_ptr<I60>, std::unique_ptr<I6...
    method BOOST_DI_INJECT (line 219) | BOOST_DI_INJECT(C6, std::unique_ptr<I60>, std::unique_ptr<I61>, std::u...
  type C7 (line 220) | struct C7 { BOOST_DI_INJECT(C7, std::unique_ptr<I70>, std::unique_ptr<I7...
    method BOOST_DI_INJECT (line 220) | BOOST_DI_INJECT(C7, std::unique_ptr<I70>, std::unique_ptr<I71>, std::u...
  type C8 (line 221) | struct C8 { BOOST_DI_INJECT(C8, std::unique_ptr<I80>, std::unique_ptr<I8...
    method BOOST_DI_INJECT (line 221) | BOOST_DI_INJECT(C8, std::unique_ptr<I80>, std::unique_ptr<I81>, std::u...
  type C9 (line 222) | struct C9 { BOOST_DI_INJECT(C9, std::unique_ptr<I90>, std::unique_ptr<I9...
    method BOOST_DI_INJECT (line 222) | BOOST_DI_INJECT(C9, std::unique_ptr<I90>, std::unique_ptr<I91>, std::u...
  type Complex (line 223) | struct Complex { BOOST_DI_INJECT(Complex, C0, C1, C2, C3, C4, C5, C6, C7...
    method BOOST_DI_INJECT (line 223) | BOOST_DI_INJECT(Complex, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9) { }
  type m (line 333) | struct m : injector_t {
  function main (line 339) | int main() {

FILE: benchmark/create_complex/dicpp.cpp
  type X00 (line 13) | struct X00 { DI_CONSTRUCTOR(X00, ()) { } }
    method DI_CONSTRUCTOR (line 13) | DI_CONSTRUCTOR(X00, ()) { }
  type X01 (line 14) | struct X01 { DI_CONSTRUCTOR(X01, (X00)) { } }
    method DI_CONSTRUCTOR (line 14) | DI_CONSTRUCTOR(X01, (X00)) { }
  type X02 (line 15) | struct X02 { DI_CONSTRUCTOR(X02, (X00, X01)) { } }
    method DI_CONSTRUCTOR (line 15) | DI_CONSTRUCTOR(X02, (X00, X01)) { }
  type X03 (line 16) | struct X03 { DI_CONSTRUCTOR(X03, (X00, X01, X02)) { } }
    method DI_CONSTRUCTOR (line 16) | DI_CONSTRUCTOR(X03, (X00, X01, X02)) { }
  type X04 (line 17) | struct X04 { DI_CONSTRUCTOR(X04, (X00, X01, X02, X03)) { } }
    method DI_CONSTRUCTOR (line 17) | DI_CONSTRUCTOR(X04, (X00, X01, X02, X03)) { }
  type X05 (line 18) | struct X05 { DI_CONSTRUCTOR(X05, (X00, X01, X02, X03, X04)) { } }
    method DI_CONSTRUCTOR (line 18) | DI_CONSTRUCTOR(X05, (X00, X01, X02, X03, X04)) { }
  type X06 (line 19) | struct X06 { DI_CONSTRUCTOR(X06, (X00, X01, X02, X03, X04, X05)) { } }
    method DI_CONSTRUCTOR (line 19) | DI_CONSTRUCTOR(X06, (X00, X01, X02, X03, X04, X05)) { }
  type X07 (line 20) | struct X07 { DI_CONSTRUCTOR(X07, (X00, X01, X02, X03, X04, X05, X06)) { } }
    method DI_CONSTRUCTOR (line 20) | DI_CONSTRUCTOR(X07, (X00, X01, X02, X03, X04, X05, X06)) { }
  type X08 (line 21) | struct X08 { DI_CONSTRUCTOR(X08, (X00, X01, X02, X03, X04, X05, X06, X07...
    method DI_CONSTRUCTOR (line 21) | DI_CONSTRUCTOR(X08, (X00, X01, X02, X03, X04, X05, X06, X07)) { }
  type X09 (line 22) | struct X09 { DI_CONSTRUCTOR(X09, (X00, X01, X02, X03, X04, X05, X06, X07...
    method DI_CONSTRUCTOR (line 22) | DI_CONSTRUCTOR(X09, (X00, X01, X02, X03, X04, X05, X06, X07, X08)) { }
  type X10 (line 23) | struct X10 { DI_CONSTRUCTOR(X10, (X00, X01, X02, X03, X04, X05, X06, X07...
    method DI_CONSTRUCTOR (line 23) | DI_CONSTRUCTOR(X10, (X00, X01, X02, X03, X04, X05, X06, X07, X08, X09)...
  type X11 (line 24) | struct X11 { DI_CONSTRUCTOR(X11, (X01, X02, X03, X04, X05, X06, X07, X08...
    method DI_CONSTRUCTOR (line 24) | DI_CONSTRUCTOR(X11, (X01, X02, X03, X04, X05, X06, X07, X08, X09, X10)...
  type X12 (line 25) | struct X12 { DI_CONSTRUCTOR(X12, (X02, X03, X04, X05, X06, X07, X08, X09...
    method DI_CONSTRUCTOR (line 25) | DI_CONSTRUCTOR(X12, (X02, X03, X04, X05, X06, X07, X08, X09, X10, X11)...
  type X13 (line 26) | struct X13 { DI_CONSTRUCTOR(X13, (X03, X04, X05, X06, X07, X08, X09, X10...
    method DI_CONSTRUCTOR (line 26) | DI_CONSTRUCTOR(X13, (X03, X04, X05, X06, X07, X08, X09, X10, X11, X12)...
  type X14 (line 27) | struct X14 { DI_CONSTRUCTOR(X14, (X04, X05, X06, X07, X08, X09, X10, X11...
    method DI_CONSTRUCTOR (line 27) | DI_CONSTRUCTOR(X14, (X04, X05, X06, X07, X08, X09, X10, X11, X12, X13)...
  type X15 (line 28) | struct X15 { DI_CONSTRUCTOR(X15, (X05, X06, X07, X08, X09, X10, X11, X12...
    method DI_CONSTRUCTOR (line 28) | DI_CONSTRUCTOR(X15, (X05, X06, X07, X08, X09, X10, X11, X12, X13, X14)...
  type X16 (line 29) | struct X16 { DI_CONSTRUCTOR(X16, (X06, X07, X08, X09, X10, X11, X12, X13...
    method DI_CONSTRUCTOR (line 29) | DI_CONSTRUCTOR(X16, (X06, X07, X08, X09, X10, X11, X12, X13, X14, X15)...
  type X17 (line 30) | struct X17 { DI_CONSTRUCTOR(X17, (X07, X08, X09, X10, X11, X12, X13, X14...
    method DI_CONSTRUCTOR (line 30) | DI_CONSTRUCTOR(X17, (X07, X08, X09, X10, X11, X12, X13, X14, X15, X16)...
  type X18 (line 31) | struct X18 { DI_CONSTRUCTOR(X18, (X08, X09, X10, X11, X12, X13, X14, X15...
    method DI_CONSTRUCTOR (line 31) | DI_CONSTRUCTOR(X18, (X08, X09, X10, X11, X12, X13, X14, X15, X16, X17)...
  type X19 (line 32) | struct X19 { DI_CONSTRUCTOR(X19, (X09, X10, X11, X12, X13, X14, X15, X16...
    method DI_CONSTRUCTOR (line 32) | DI_CONSTRUCTOR(X19, (X09, X10, X11, X12, X13, X14, X15, X16, X17, X18)...
  type X20 (line 33) | struct X20 { DI_CONSTRUCTOR(X20, (X10, X11, X12, X13, X14, X15, X16, X17...
    method DI_CONSTRUCTOR (line 33) | DI_CONSTRUCTOR(X20, (X10, X11, X12, X13, X14, X15, X16, X17, X18, X19)...
  type X21 (line 34) | struct X21 { DI_CONSTRUCTOR(X21, (X11, X12, X13, X14, X15, X16, X17, X18...
    method DI_CONSTRUCTOR (line 34) | DI_CONSTRUCTOR(X21, (X11, X12, X13, X14, X15, X16, X17, X18, X19, X20)...
  type X22 (line 35) | struct X22 { DI_CONSTRUCTOR(X22, (X12, X13, X14, X15, X16, X17, X18, X19...
    method DI_CONSTRUCTOR (line 35) | DI_CONSTRUCTOR(X22, (X12, X13, X14, X15, X16, X17, X18, X19, X20, X21)...
  type X23 (line 36) | struct X23 { DI_CONSTRUCTOR(X23, (X13, X14, X15, X16, X17, X18, X19, X20...
    method DI_CONSTRUCTOR (line 36) | DI_CONSTRUCTOR(X23, (X13, X14, X15, X16, X17, X18, X19, X20, X21, X22)...
  type X24 (line 37) | struct X24 { DI_CONSTRUCTOR(X24, (X14, X15, X16, X17, X18, X19, X20, X21...
    method DI_CONSTRUCTOR (line 37) | DI_CONSTRUCTOR(X24, (X14, X15, X16, X17, X18, X19, X20, X21, X22, X23)...
  type X25 (line 38) | struct X25 { DI_CONSTRUCTOR(X25, (X15, X16, X17, X18, X19, X20, X21, X22...
    method DI_CONSTRUCTOR (line 38) | DI_CONSTRUCTOR(X25, (X15, X16, X17, X18, X19, X20, X21, X22, X23, X24)...
  type X26 (line 39) | struct X26 { DI_CONSTRUCTOR(X26, (X16, X17, X18, X19, X20, X21, X22, X23...
    method DI_CONSTRUCTOR (line 39) | DI_CONSTRUCTOR(X26, (X16, X17, X18, X19, X20, X21, X22, X23, X24, X25)...
  type X27 (line 40) | struct X27 { DI_CONSTRUCTOR(X27, (X17, X18, X19, X20, X21, X22, X23, X24...
    method DI_CONSTRUCTOR (line 40) | DI_CONSTRUCTOR(X27, (X17, X18, X19, X20, X21, X22, X23, X24, X25, X26)...
  type X28 (line 41) | struct X28 { DI_CONSTRUCTOR(X28, (X18, X19, X20, X21, X22, X23, X24, X25...
    method DI_CONSTRUCTOR (line 41) | DI_CONSTRUCTOR(X28, (X18, X19, X20, X21, X22, X23, X24, X25, X26, X27)...
  type X29 (line 42) | struct X29 { DI_CONSTRUCTOR(X29, (X19, X20, X21, X22, X23, X24, X25, X26...
    method DI_CONSTRUCTOR (line 42) | DI_CONSTRUCTOR(X29, (X19, X20, X21, X22, X23, X24, X25, X26, X27, X28)...
  type X30 (line 43) | struct X30 { DI_CONSTRUCTOR(X30, (X20, X21, X22, X23, X24, X25, X26, X27...
    method DI_CONSTRUCTOR (line 43) | DI_CONSTRUCTOR(X30, (X20, X21, X22, X23, X24, X25, X26, X27, X28, X29)...
  type X31 (line 44) | struct X31 { DI_CONSTRUCTOR(X31, (X21, X22, X23, X24, X25, X26, X27, X28...
    method DI_CONSTRUCTOR (line 44) | DI_CONSTRUCTOR(X31, (X21, X22, X23, X24, X25, X26, X27, X28, X29, X30)...
  type X32 (line 45) | struct X32 { DI_CONSTRUCTOR(X32, (X22, X23, X24, X25, X26, X27, X28, X29...
    method DI_CONSTRUCTOR (line 45) | DI_CONSTRUCTOR(X32, (X22, X23, X24, X25, X26, X27, X28, X29, X30, X31)...
  type X33 (line 46) | struct X33 { DI_CONSTRUCTOR(X33, (X23, X24, X25, X26, X27, X28, X29, X30...
    method DI_CONSTRUCTOR (line 46) | DI_CONSTRUCTOR(X33, (X23, X24, X25, X26, X27, X28, X29, X30, X31, X32)...
  type X34 (line 47) | struct X34 { DI_CONSTRUCTOR(X34, (X24, X25, X26, X27, X28, X29, X30, X31...
    method DI_CONSTRUCTOR (line 47) | DI_CONSTRUCTOR(X34, (X24, X25, X26, X27, X28, X29, X30, X31, X32, X33)...
  type X35 (line 48) | struct X35 { DI_CONSTRUCTOR(X35, (X25, X26, X27, X28, X29, X30, X31, X32...
    method DI_CONSTRUCTOR (line 48) | DI_CONSTRUCTOR(X35, (X25, X26, X27, X28, X29, X30, X31, X32, X33, X34)...
  type X36 (line 49) | struct X36 { DI_CONSTRUCTOR(X36, (X26, X27, X28, X29, X30, X31, X32, X33...
    method DI_CONSTRUCTOR (line 49) | DI_CONSTRUCTOR(X36, (X26, X27, X28, X29, X30, X31, X32, X33, X34, X35)...
  type X37 (line 50) | struct X37 { DI_CONSTRUCTOR(X37, (X27, X28, X29, X30, X31, X32, X33, X34...
    method DI_CONSTRUCTOR (line 50) | DI_CONSTRUCTOR(X37, (X27, X28, X29, X30, X31, X32, X33, X34, X35, X36)...
  type X38 (line 51) | struct X38 { DI_CONSTRUCTOR(X38, (X28, X29, X30, X31, X32, X33, X34, X35...
    method DI_CONSTRUCTOR (line 51) | DI_CONSTRUCTOR(X38, (X28, X29, X30, X31, X32, X33, X34, X35, X36, X37)...
  type X39 (line 52) | struct X39 { DI_CONSTRUCTOR(X39, (X29, X30, X31, X32, X33, X34, X35, X36...
    method DI_CONSTRUCTOR (line 52) | DI_CONSTRUCTOR(X39, (X29, X30, X31, X32, X33, X34, X35, X36, X37, X38)...
  type X40 (line 53) | struct X40 { DI_CONSTRUCTOR(X40, (X30, X31, X32, X33, X34, X35, X36, X37...
    method DI_CONSTRUCTOR (line 53) | DI_CONSTRUCTOR(X40, (X30, X31, X32, X33, X34, X35, X36, X37, X38, X39)...
  type X41 (line 54) | struct X41 { DI_CONSTRUCTOR(X41, (X31, X32, X33, X34, X35, X36, X37, X38...
    method DI_CONSTRUCTOR (line 54) | DI_CONSTRUCTOR(X41, (X31, X32, X33, X34, X35, X36, X37, X38, X39, X40)...
  type X42 (line 55) | struct X42 { DI_CONSTRUCTOR(X42, (X32, X33, X34, X35, X36, X37, X38, X39...
    method DI_CONSTRUCTOR (line 55) | DI_CONSTRUCTOR(X42, (X32, X33, X34, X35, X36, X37, X38, X39, X40, X41)...
  type X43 (line 56) | struct X43 { DI_CONSTRUCTOR(X43, (X33, X34, X35, X36, X37, X38, X39, X40...
    method DI_CONSTRUCTOR (line 56) | DI_CONSTRUCTOR(X43, (X33, X34, X35, X36, X37, X38, X39, X40, X41, X42)...
  type X44 (line 57) | struct X44 { DI_CONSTRUCTOR(X44, (X34, X35, X36, X37, X38, X39, X40, X41...
    method DI_CONSTRUCTOR (line 57) | DI_CONSTRUCTOR(X44, (X34, X35, X36, X37, X38, X39, X40, X41, X42, X43)...
  type X45 (line 58) | struct X45 { DI_CONSTRUCTOR(X45, (X35, X36, X37, X38, X39, X40, X41, X42...
    method DI_CONSTRUCTOR (line 58) | DI_CONSTRUCTOR(X45, (X35, X36, X37, X38, X39, X40, X41, X42, X43, X44)...
  type X46 (line 59) | struct X46 { DI_CONSTRUCTOR(X46, (X36, X37, X38, X39, X40, X41, X42, X43...
    method DI_CONSTRUCTOR (line 59) | DI_CONSTRUCTOR(X46, (X36, X37, X38, X39, X40, X41, X42, X43, X44, X45)...
  type X47 (line 60) | struct X47 { DI_CONSTRUCTOR(X47, (X37, X38, X39, X40, X41, X42, X43, X44...
    method DI_CONSTRUCTOR (line 60) | DI_CONSTRUCTOR(X47, (X37, X38, X39, X40, X41, X42, X43, X44, X45, X46)...
  type X48 (line 61) | struct X48 { DI_CONSTRUCTOR(X48, (X38, X39, X40, X41, X42, X43, X44, X45...
    method DI_CONSTRUCTOR (line 61) | DI_CONSTRUCTOR(X48, (X38, X39, X40, X41, X42, X43, X44, X45, X46, X47)...
  type X49 (line 62) | struct X49 { DI_CONSTRUCTOR(X49, (X39, X40, X41, X42, X43, X44, X45, X46...
    method DI_CONSTRUCTOR (line 62) | DI_CONSTRUCTOR(X49, (X39, X40, X41, X42, X43, X44, X45, X46, X47, X48)...
  type X50 (line 63) | struct X50 { DI_CONSTRUCTOR(X50, (X40, X41, X42, X43, X44, X45, X46, X47...
    method DI_CONSTRUCTOR (line 63) | DI_CONSTRUCTOR(X50, (X40, X41, X42, X43, X44, X45, X46, X47, X48, X49)...
  type X51 (line 64) | struct X51 { DI_CONSTRUCTOR(X51, (X41, X42, X43, X44, X45, X46, X47, X48...
    method DI_CONSTRUCTOR (line 64) | DI_CONSTRUCTOR(X51, (X41, X42, X43, X44, X45, X46, X47, X48, X49, X50)...
  type X52 (line 65) | struct X52 { DI_CONSTRUCTOR(X52, (X42, X43, X44, X45, X46, X47, X48, X49...
    method DI_CONSTRUCTOR (line 65) | DI_CONSTRUCTOR(X52, (X42, X43, X44, X45, X46, X47, X48, X49, X50, X51)...
  type X53 (line 66) | struct X53 { DI_CONSTRUCTOR(X53, (X43, X44, X45, X46, X47, X48, X49, X50...
    method DI_CONSTRUCTOR (line 66) | DI_CONSTRUCTOR(X53, (X43, X44, X45, X46, X47, X48, X49, X50, X51, X52)...
  type X54 (line 67) | struct X54 { DI_CONSTRUCTOR(X54, (X44, X45, X46, X47, X48, X49, X50, X51...
    method DI_CONSTRUCTOR (line 67) | DI_CONSTRUCTOR(X54, (X44, X45, X46, X47, X48, X49, X50, X51, X52, X53)...
  type X55 (line 68) | struct X55 { DI_CONSTRUCTOR(X55, (X45, X46, X47, X48, X49, X50, X51, X52...
    method DI_CONSTRUCTOR (line 68) | DI_CONSTRUCTOR(X55, (X45, X46, X47, X48, X49, X50, X51, X52, X53, X54)...
  type X56 (line 69) | struct X56 { DI_CONSTRUCTOR(X56, (X46, X47, X48, X49, X50, X51, X52, X53...
    method DI_CONSTRUCTOR (line 69) | DI_CONSTRUCTOR(X56, (X46, X47, X48, X49, X50, X51, X52, X53, X54, X55)...
  type X57 (line 70) | struct X57 { DI_CONSTRUCTOR(X57, (X47, X48, X49, X50, X51, X52, X53, X54...
    method DI_CONSTRUCTOR (line 70) | DI_CONSTRUCTOR(X57, (X47, X48, X49, X50, X51, X52, X53, X54, X55, X56)...
  type X58 (line 71) | struct X58 { DI_CONSTRUCTOR(X58, (X48, X49, X50, X51, X52, X53, X54, X55...
    method DI_CONSTRUCTOR (line 71) | DI_CONSTRUCTOR(X58, (X48, X49, X50, X51, X52, X53, X54, X55, X56, X57)...
  type X59 (line 72) | struct X59 { DI_CONSTRUCTOR(X59, (X49, X50, X51, X52, X53, X54, X55, X56...
    method DI_CONSTRUCTOR (line 72) | DI_CONSTRUCTOR(X59, (X49, X50, X51, X52, X53, X54, X55, X56, X57, X58)...
  type X60 (line 73) | struct X60 { DI_CONSTRUCTOR(X60, (X50, X51, X52, X53, X54, X55, X56, X57...
    method DI_CONSTRUCTOR (line 73) | DI_CONSTRUCTOR(X60, (X50, X51, X52, X53, X54, X55, X56, X57, X58, X59)...
  type X61 (line 74) | struct X61 { DI_CONSTRUCTOR(X61, (X51, X52, X53, X54, X55, X56, X57, X58...
    method DI_CONSTRUCTOR (line 74) | DI_CONSTRUCTOR(X61, (X51, X52, X53, X54, X55, X56, X57, X58, X59, X60)...
  type X62 (line 75) | struct X62 { DI_CONSTRUCTOR(X62, (X52, X53, X54, X55, X56, X57, X58, X59...
    method DI_CONSTRUCTOR (line 75) | DI_CONSTRUCTOR(X62, (X52, X53, X54, X55, X56, X57, X58, X59, X60, X61)...
  type X63 (line 76) | struct X63 { DI_CONSTRUCTOR(X63, (X53, X54, X55, X56, X57, X58, X59, X60...
    method DI_CONSTRUCTOR (line 76) | DI_CONSTRUCTOR(X63, (X53, X54, X55, X56, X57, X58, X59, X60, X61, X62)...
  type X64 (line 77) | struct X64 { DI_CONSTRUCTOR(X64, (X54, X55, X56, X57, X58, X59, X60, X61...
    method DI_CONSTRUCTOR (line 77) | DI_CONSTRUCTOR(X64, (X54, X55, X56, X57, X58, X59, X60, X61, X62, X63)...
  type X65 (line 78) | struct X65 { DI_CONSTRUCTOR(X65, (X55, X56, X57, X58, X59, X60, X61, X62...
    method DI_CONSTRUCTOR (line 78) | DI_CONSTRUCTOR(X65, (X55, X56, X57, X58, X59, X60, X61, X62, X63, X64)...
  type X66 (line 79) | struct X66 { DI_CONSTRUCTOR(X66, (X56, X57, X58, X59, X60, X61, X62, X63...
    method DI_CONSTRUCTOR (line 79) | DI_CONSTRUCTOR(X66, (X56, X57, X58, X59, X60, X61, X62, X63, X64, X65)...
  type X67 (line 80) | struct X67 { DI_CONSTRUCTOR(X67, (X57, X58, X59, X60, X61, X62, X63, X64...
    method DI_CONSTRUCTOR (line 80) | DI_CONSTRUCTOR(X67, (X57, X58, X59, X60, X61, X62, X63, X64, X65, X66)...
  type X68 (line 81) | struct X68 { DI_CONSTRUCTOR(X68, (X58, X59, X60, X61, X62, X63, X64, X65...
    method DI_CONSTRUCTOR (line 81) | DI_CONSTRUCTOR(X68, (X58, X59, X60, X61, X62, X63, X64, X65, X66, X67)...
  type X69 (line 82) | struct X69 { DI_CONSTRUCTOR(X69, (X59, X60, X61, X62, X63, X64, X65, X66...
    method DI_CONSTRUCTOR (line 82) | DI_CONSTRUCTOR(X69, (X59, X60, X61, X62, X63, X64, X65, X66, X67, X68)...
  type X70 (line 83) | struct X70 { DI_CONSTRUCTOR(X70, (X60, X61, X62, X63, X64, X65, X66, X67...
    method DI_CONSTRUCTOR (line 83) | DI_CONSTRUCTOR(X70, (X60, X61, X62, X63, X64, X65, X66, X67, X68, X69)...
  type X71 (line 84) | struct X71 { DI_CONSTRUCTOR(X71, (X61, X62, X63, X64, X65, X66, X67, X68...
    method DI_CONSTRUCTOR (line 84) | DI_CONSTRUCTOR(X71, (X61, X62, X63, X64, X65, X66, X67, X68, X69, X70)...
  type X72 (line 85) | struct X72 { DI_CONSTRUCTOR(X72, (X62, X63, X64, X65, X66, X67, X68, X69...
    method DI_CONSTRUCTOR (line 85) | DI_CONSTRUCTOR(X72, (X62, X63, X64, X65, X66, X67, X68, X69, X70, X71)...
  type X73 (line 86) | struct X73 { DI_CONSTRUCTOR(X73, (X63, X64, X65, X66, X67, X68, X69, X70...
    method DI_CONSTRUCTOR (line 86) | DI_CONSTRUCTOR(X73, (X63, X64, X65, X66, X67, X68, X69, X70, X71, X72)...
  type X74 (line 87) | struct X74 { DI_CONSTRUCTOR(X74, (X64, X65, X66, X67, X68, X69, X70, X71...
    method DI_CONSTRUCTOR (line 87) | DI_CONSTRUCTOR(X74, (X64, X65, X66, X67, X68, X69, X70, X71, X72, X73)...
  type X75 (line 88) | struct X75 { DI_CONSTRUCTOR(X75, (X65, X66, X67, X68, X69, X70, X71, X72...
    method DI_CONSTRUCTOR (line 88) | DI_CONSTRUCTOR(X75, (X65, X66, X67, X68, X69, X70, X71, X72, X73, X74)...
  type X76 (line 89) | struct X76 { DI_CONSTRUCTOR(X76, (X66, X67, X68, X69, X70, X71, X72, X73...
    method DI_CONSTRUCTOR (line 89) | DI_CONSTRUCTOR(X76, (X66, X67, X68, X69, X70, X71, X72, X73, X74, X75)...
  type X77 (line 90) | struct X77 { DI_CONSTRUCTOR(X77, (X67, X68, X69, X70, X71, X72, X73, X74...
    method DI_CONSTRUCTOR (line 90) | DI_CONSTRUCTOR(X77, (X67, X68, X69, X70, X71, X72, X73, X74, X75, X76)...
  type X78 (line 91) | struct X78 { DI_CONSTRUCTOR(X78, (X68, X69, X70, X71, X72, X73, X74, X75...
    method DI_CONSTRUCTOR (line 91) | DI_CONSTRUCTOR(X78, (X68, X69, X70, X71, X72, X73, X74, X75, X76, X77)...
  type X79 (line 92) | struct X79 { DI_CONSTRUCTOR(X79, (X69, X70, X71, X72, X73, X74, X75, X76...
    method DI_CONSTRUCTOR (line 92) | DI_CONSTRUCTOR(X79, (X69, X70, X71, X72, X73, X74, X75, X76, X77, X78)...
  type X80 (line 93) | struct X80 { DI_CONSTRUCTOR(X80, (X70, X71, X72, X73, X74, X75, X76, X77...
    method DI_CONSTRUCTOR (line 93) | DI_CONSTRUCTOR(X80, (X70, X71, X72, X73, X74, X75, X76, X77, X78, X79)...
  type X81 (line 94) | struct X81 { DI_CONSTRUCTOR(X81, (X71, X72, X73, X74, X75, X76, X77, X78...
    method DI_CONSTRUCTOR (line 94) | DI_CONSTRUCTOR(X81, (X71, X72, X73, X74, X75, X76, X77, X78, X79, X80)...
  type X82 (line 95) | struct X82 { DI_CONSTRUCTOR(X82, (X72, X73, X74, X75, X76, X77, X78, X79...
    method DI_CONSTRUCTOR (line 95) | DI_CONSTRUCTOR(X82, (X72, X73, X74, X75, X76, X77, X78, X79, X80, X81)...
  type X83 (line 96) | struct X83 { DI_CONSTRUCTOR(X83, (X73, X74, X75, X76, X77, X78, X79, X80...
    method DI_CONSTRUCTOR (line 96) | DI_CONSTRUCTOR(X83, (X73, X74, X75, X76, X77, X78, X79, X80, X81, X82)...
  type X84 (line 97) | struct X84 { DI_CONSTRUCTOR(X84, (X74, X75, X76, X77, X78, X79, X80, X81...
    method DI_CONSTRUCTOR (line 97) | DI_CONSTRUCTOR(X84, (X74, X75, X76, X77, X78, X79, X80, X81, X82, X83)...
  type X85 (line 98) | struct X85 { DI_CONSTRUCTOR(X85, (X75, X76, X77, X78, X79, X80, X81, X82...
    method DI_CONSTRUCTOR (line 98) | DI_CONSTRUCTOR(X85, (X75, X76, X77, X78, X79, X80, X81, X82, X83, X84)...
  type X86 (line 99) | struct X86 { DI_CONSTRUCTOR(X86, (X76, X77, X78, X79, X80, X81, X82, X83...
    method DI_CONSTRUCTOR (line 99) | DI_CONSTRUCTOR(X86, (X76, X77, X78, X79, X80, X81, X82, X83, X84, X85)...
  type X87 (line 100) | struct X87 { DI_CONSTRUCTOR(X87, (X77, X78, X79, X80, X81, X82, X83, X84...
    method DI_CONSTRUCTOR (line 100) | DI_CONSTRUCTOR(X87, (X77, X78, X79, X80, X81, X82, X83, X84, X85, X86)...
  type X88 (line 101) | struct X88 { DI_CONSTRUCTOR(X88, (X78, X79, X80, X81, X82, X83, X84, X85...
    method DI_CONSTRUCTOR (line 101) | DI_CONSTRUCTOR(X88, (X78, X79, X80, X81, X82, X83, X84, X85, X86, X87)...
  type X89 (line 102) | struct X89 { DI_CONSTRUCTOR(X89, (X79, X80, X81, X82, X83, X84, X85, X86...
    method DI_CONSTRUCTOR (line 102) | DI_CONSTRUCTOR(X89, (X79, X80, X81, X82, X83, X84, X85, X86, X87, X88)...
  type X90 (line 103) | struct X90 { DI_CONSTRUCTOR(X90, (X80, X81, X82, X83, X84, X85, X86, X87...
    method DI_CONSTRUCTOR (line 103) | DI_CONSTRUCTOR(X90, (X80, X81, X82, X83, X84, X85, X86, X87, X88, X89)...
  type X91 (line 104) | struct X91 { DI_CONSTRUCTOR(X91, (X81, X82, X83, X84, X85, X86, X87, X88...
    method DI_CONSTRUCTOR (line 104) | DI_CONSTRUCTOR(X91, (X81, X82, X83, X84, X85, X86, X87, X88, X89, X90)...
  type X92 (line 105) | struct X92 { DI_CONSTRUCTOR(X92, (X82, X83, X84, X85, X86, X87, X88, X89...
    method DI_CONSTRUCTOR (line 105) | DI_CONSTRUCTOR(X92, (X82, X83, X84, X85, X86, X87, X88, X89, X90, X91)...
  type X93 (line 106) | struct X93 { DI_CONSTRUCTOR(X93, (X83, X84, X85, X86, X87, X88, X89, X90...
    method DI_CONSTRUCTOR (line 106) | DI_CONSTRUCTOR(X93, (X83, X84, X85, X86, X87, X88, X89, X90, X91, X92)...
  type X94 (line 107) | struct X94 { DI_CONSTRUCTOR(X94, (X84, X85, X86, X87, X88, X89, X90, X91...
    method DI_CONSTRUCTOR (line 107) | DI_CONSTRUCTOR(X94, (X84, X85, X86, X87, X88, X89, X90, X91, X92, X93)...
  type X95 (line 108) | struct X95 { DI_CONSTRUCTOR(X95, (X85, X86, X87, X88, X89, X90, X91, X92...
    method DI_CONSTRUCTOR (line 108) | DI_CONSTRUCTOR(X95, (X85, X86, X87, X88, X89, X90, X91, X92, X93, X94)...
  type X96 (line 109) | struct X96 { DI_CONSTRUCTOR(X96, (X86, X87, X88, X89, X90, X91, X92, X93...
    method DI_CONSTRUCTOR (line 109) | DI_CONSTRUCTOR(X96, (X86, X87, X88, X89, X90, X91, X92, X93, X94, X95)...
  type X97 (line 110) | struct X97 { DI_CONSTRUCTOR(X97, (X87, X88, X89, X90, X91, X92, X93, X94...
    method DI_CONSTRUCTOR (line 110) | DI_CONSTRUCTOR(X97, (X87, X88, X89, X90, X91, X92, X93, X94, X95, X96)...
  type X98 (line 111) | struct X98 { DI_CONSTRUCTOR(X98, (X88, X89, X90, X91, X92, X93, X94, X95...
    method DI_CONSTRUCTOR (line 111) | DI_CONSTRUCTOR(X98, (X88, X89, X90, X91, X92, X93, X94, X95, X96, X97)...
  type X99 (line 112) | struct X99 { DI_CONSTRUCTOR(X99, (X89, X90, X91, X92, X93, X94, X95, X96...
    method DI_CONSTRUCTOR (line 112) | DI_CONSTRUCTOR(X99, (X89, X90, X91, X92, X93, X94, X95, X96, X97, X98)...
  type I00 (line 113) | struct I00 { virtual ~I00() noexcept = default; virtual void dummy() = 0; }
  type Impl00 (line 113) | struct Impl00 : I00 { DI_CONSTRUCTOR(Impl00, (X00, X01, X02, X03, X04, X...
    method DI_CONSTRUCTOR (line 113) | DI_CONSTRUCTOR(Impl00, (X00, X01, X02, X03, X04, X05, X06, X07, X08, X...
    method dummy (line 113) | void dummy() override { }
  type I01 (line 114) | struct I01 { virtual ~I01() noexcept = default; virtual void dummy() = 0; }
  type Impl01 (line 114) | struct Impl01 : I01 { DI_CONSTRUCTOR(Impl01, (X01, X02, X03, X04, X05, X...
    method DI_CONSTRUCTOR (line 114) | DI_CONSTRUCTOR(Impl01, (X01, X02, X03, X04, X05, X06, X07, X08, X09, X...
    method dummy (line 114) | void dummy() override { }
  type I02 (line 115) | struct I02 { virtual ~I02() noexcept = default; virtual void dummy() = 0; }
  type Impl02 (line 115) | struct Impl02 : I02 { DI_CONSTRUCTOR(Impl02, (X02, X03, X04, X05, X06, X...
    method DI_CONSTRUCTOR (line 115) | DI_CONSTRUCTOR(Impl02, (X02, X03, X04, X05, X06, X07, X08, X09, X10, X...
    method dummy (line 115) | void dummy() override { }
  type I03 (line 116) | struct I03 { virtual ~I03() noexcept = default; virtual void dummy() = 0; }
  type Impl03 (line 116) | struct Impl03 : I03 { DI_CONSTRUCTOR(Impl03, (X03, X04, X05, X06, X07, X...
    method DI_CONSTRUCTOR (line 116) | DI_CONSTRUCTOR(Impl03, (X03, X04, X05, X06, X07, X08, X09, X10, X11, X...
    method dummy (line 116) | void dummy() override { }
  type I04 (line 117) | struct I04 { virtual ~I04() noexcept = default; virtual void dummy() = 0; }
  type Impl04 (line 117) | struct Impl04 : I04 { DI_CONSTRUCTOR(Impl04, (X04, X05, X06, X07, X08, X...
    method DI_CONSTRUCTOR (line 117) | DI_CONSTRUCTOR(Impl04, (X04, X05, X06, X07, X08, X09, X10, X11, X12, X...
    method dummy (line 117) | void dummy() override { }
  type I05 (line 118) | struct I05 { virtual ~I05() noexcept = default; virtual void dummy() = 0; }
  type Impl05 (line 118) | struct Impl05 : I05 { DI_CONSTRUCTOR(Impl05, (X05, X06, X07, X08, X09, X...
    method DI_CONSTRUCTOR (line 118) | DI_CONSTRUCTOR(Impl05, (X05, X06, X07, X08, X09, X10, X11, X12, X13, X...
    method dummy (line 118) | void dummy() override { }
  type I06 (line 119) | struct I06 { virtual ~I06() noexcept = default; virtual void dummy() = 0; }
  type Impl06 (line 119) | struct Impl06 : I06 { DI_CONSTRUCTOR(Impl06, (X06, X07, X08, X09, X10, X...
    method DI_CONSTRUCTOR (line 119) | DI_CONSTRUCTOR(Impl06, (X06, X07, X08, X09, X10, X11, X12, X13, X14, X...
    method dummy (line 119) | void dummy() override { }
  type I07 (line 120) | struct I07 { virtual ~I07() noexcept = default; virtual void dummy() = 0; }
  type Impl07 (line 120) | struct Impl07 : I07 { DI_CONSTRUCTOR(Impl07, (X07, X08, X09, X10, X11, X...
    method DI_CONSTRUCTOR (line 120) | DI_CONSTRUCTOR(Impl07, (X07, X08, X09, X10, X11, X12, X13, X14, X15, X...
    method dummy (line 120) | void dummy() override { }
  type I08 (line 121) | struct I08 { virtual ~I08() noexcept = default; virtual void dummy() = 0; }
  type Impl08 (line 121) | struct Impl08 : I08 { DI_CONSTRUCTOR(Impl08, (X08, X09, X10, X11, X12, X...
    method DI_CONSTRUCTOR (line 121) | DI_CONSTRUCTOR(Impl08, (X08, X09, X10, X11, X12, X13, X14, X15, X16, X...
    method dummy (line 121) | void dummy() override { }
  type I09 (line 122) | struct I09 { virtual ~I09() noexcept = default; virtual void dummy() = 0; }
  type Impl09 (line 122) | struct Impl09 : I09 { DI_CONSTRUCTOR(Impl09, (X09, X10, X11, X12, X13, X...
    method DI_CONSTRUCTOR (line 122) | DI_CONSTRUCTOR(Impl09, (X09, X10, X11, X12, X13, X14, X15, X16, X17, X...
    method dummy (line 122) | void dummy() override { }
  type I10 (line 123) | struct I10 { virtual ~I10() noexcept = default; virtual void dummy() = 0; }
  type Impl10 (line 123) | struct Impl10 : I10 { DI_CONSTRUCTOR(Impl10, (X10, X11, X12, X13, X14, X...
    method DI_CONSTRUCTOR (line 123) | DI_CONSTRUCTOR(Impl10, (X10, X11, X12, X13, X14, X15, X16, X17, X18, X...
    method dummy (line 123) | void dummy() override { }
  type I11 (line 124) | struct I11 { virtual ~I11() noexcept = default; virtual void dummy() = 0; }
  type Impl11 (line 124) | struct Impl11 : I11 { DI_CONSTRUCTOR(Impl11, (X11, X12, X13, X14, X15, X...
    method DI_CONSTRUCTOR (line 124) | DI_CONSTRUCTOR(Impl11, (X11, X12, X13, X14, X15, X16, X17, X18, X19, X...
    method dummy (line 124) | void dummy() override { }
  type I12 (line 125) | struct I12 { virtual ~I12() noexcept = default; virtual void dummy() = 0; }
  type Impl12 (line 125) | struct Impl12 : I12 { DI_CONSTRUCTOR(Impl12, (X12, X13, X14, X15, X16, X...
    method DI_CONSTRUCTOR (line 125) | DI_CONSTRUCTOR(Impl12, (X12, X13, X14, X15, X16, X17, X18, X19, X20, X...
    method dummy (line 125) | void dummy() override { }
  type I13 (line 126) | struct I13 { virtual ~I13() noexcept = default; virtual void dummy() = 0; }
  type Impl13 (line 126) | struct Impl13 : I13 { DI_CONSTRUCTOR(Impl13, (X13, X14, X15, X16, X17, X...
    method DI_CONSTRUCTOR (line 126) | DI_CONSTRUCTOR(Impl13, (X13, X14, X15, X16, X17, X18, X19, X20, X21, X...
    method dummy (line 126) | void dummy() override { }
  type I14 (line 127) | struct I14 { virtual ~I14() noexcept = default; virtual void dummy() = 0; }
  type Impl14 (line 127) | struct Impl14 : I14 { DI_CONSTRUCTOR(Impl14, (X14, X15, X16, X17, X18, X...
    method DI_CONSTRUCTOR (line 127) | DI_CONSTRUCTOR(Impl14, (X14, X15, X16, X17, X18, X19, X20, X21, X22, X...
    method dummy (line 127) | void dummy() override { }
  type I15 (line 128) | struct I15 { virtual ~I15() noexcept = default; virtual void dummy() = 0; }
  type Impl15 (line 128) | struct Impl15 : I15 { DI_CONSTRUCTOR(Impl15, (X15, X16, X17, X18, X19, X...
    method DI_CONSTRUCTOR (line 128) | DI_CONSTRUCTOR(Impl15, (X15, X16, X17, X18, X19, X20, X21, X22, X23, X...
    method dummy (line 128) | void dummy() override { }
  type I16 (line 129) | struct I16 { virtual ~I16() noexcept = default; virtual void dummy() = 0; }
  type Impl16 (line 129) | struct Impl16 : I16 { DI_CONSTRUCTOR(Impl16, (X16, X17, X18, X19, X20, X...
    method DI_CONSTRUCTOR (line 129) | DI_CONSTRUCTOR(Impl16, (X16, X17, X18, X19, X20, X21, X22, X23, X24, X...
    method dummy (line 129) | void dummy() override { }
  type I17 (line 130) | struct I17 { virtual ~I17() noexcept = default; virtual void dummy() = 0; }
  type Impl17 (line 130) | struct Impl17 : I17 { DI_CONSTRUCTOR(Impl17, (X17, X18, X19, X20, X21, X...
    method DI_CONSTRUCTOR (line 130) | DI_CONSTRUCTOR(Impl17, (X17, X18, X19, X20, X21, X22, X23, X24, X25, X...
    method dummy (line 130) | void dummy() override { }
  type I18 (line 131) | struct I18 { virtual ~I18() noexcept = default; virtual void dummy() = 0; }
  type Impl18 (line 131) | struct Impl18 : I18 { DI_CONSTRUCTOR(Impl18, (X18, X19, X20, X21, X22, X...
    method DI_CONSTRUCTOR (line 131) | DI_CONSTRUCTOR(Impl18, (X18, X19, X20, X21, X22, X23, X24, X25, X26, X...
    method dummy (line 131) | void dummy() override { }
  type I19 (line 132) | struct I19 { virtual ~I19() noexcept = default; virtual void dummy() = 0; }
  type Impl19 (line 132) | struct Impl19 : I19 { DI_CONSTRUCTOR(Impl19, (X19, X20, X21, X22, X23, X...
    method DI_CONSTRUCTOR (line 132) | DI_CONSTRUCTOR(Impl19, (X19, X20, X21, X22, X23, X24, X25, X26, X27, X...
    method dummy (line 132) | void dummy() override { }
  type I20 (line 133) | struct I20 { virtual ~I20() noexcept = default; virtual void dummy() = 0; }
  type Impl20 (line 133) | struct Impl20 : I20 { DI_CONSTRUCTOR(Impl20, (X20, X21, X22, X23, X24, X...
    method DI_CONSTRUCTOR (line 133) | DI_CONSTRUCTOR(Impl20, (X20, X21, X22, X23, X24, X25, X26, X27, X28, X...
    method dummy (line 133) | void dummy() override { }
  type I21 (line 134) | struct I21 { virtual ~I21() noexcept = default; virtual void dummy() = 0; }
  type Impl21 (line 134) | struct Impl21 : I21 { DI_CONSTRUCTOR(Impl21, (X21, X22, X23, X24, X25, X...
    method DI_CONSTRUCTOR (line 134) | DI_CONSTRUCTOR(Impl21, (X21, X22, X23, X24, X25, X26, X27, X28, X29, X...
    method dummy (line 134) | void dummy() override { }
  type I22 (line 135) | struct I22 { virtual ~I22() noexcept = default; virtual void dummy() = 0; }
  type Impl22 (line 135) | struct Impl22 : I22 { DI_CONSTRUCTOR(Impl22, (X22, X23, X24, X25, X26, X...
    method DI_CONSTRUCTOR (line 135) | DI_CONSTRUCTOR(Impl22, (X22, X23, X24, X25, X26, X27, X28, X29, X30, X...
    method dummy (line 135) | void dummy() override { }
  type I23 (line 136) | struct I23 { virtual ~I23() noexcept = default; virtual void dummy() = 0; }
  type Impl23 (line 136) | struct Impl23 : I23 { DI_CONSTRUCTOR(Impl23, (X23, X24, X25, X26, X27, X...
    method DI_CONSTRUCTOR (line 136) | DI_CONSTRUCTOR(Impl23, (X23, X24, X25, X26, X27, X28, X29, X30, X31, X...
    method dummy (line 136) | void dummy() override { }
  type I24 (line 137) | struct I24 { virtual ~I24() noexcept = default; virtual void dummy() = 0; }
  type Impl24 (line 137) | struct Impl24 : I24 { DI_CONSTRUCTOR(Impl24, (X24, X25, X26, X27, X28, X...
    method DI_CONSTRUCTOR (line 137) | DI_CONSTRUCTOR(Impl24, (X24, X25, X26, X27, X28, X29, X30, X31, X32, X...
    method dummy (line 137) | void dummy() override { }
  type I25 (line 138) | struct I25 { virtual ~I25() noexcept = default; virtual void dummy() = 0; }
  type Impl25 (line 138) | struct Impl25 : I25 { DI_CONSTRUCTOR(Impl25, (X25, X26, X27, X28, X29, X...
    method DI_CONSTRUCTOR (line 138) | DI_CONSTRUCTOR(Impl25, (X25, X26, X27, X28, X29, X30, X31, X32, X33, X...
    method dummy (line 138) | void dummy() override { }
  type I26 (line 139) | struct I26 { virtual ~I26() noexcept = default; virtual void dummy() = 0; }
  type Impl26 (line 139) | struct Impl26 : I26 { DI_CONSTRUCTOR(Impl26, (X26, X27, X28, X29, X30, X...
    method DI_CONSTRUCTOR (line 139) | DI_CONSTRUCTOR(Impl26, (X26, X27, X28, X29, X30, X31, X32, X33, X34, X...
    method dummy (line 139) | void dummy() override { }
  type I27 (line 140) | struct I27 { virtual ~I27() noexcept = default; virtual void dummy() = 0; }
  type Impl27 (line 140) | struct Impl27 : I27 { DI_CONSTRUCTOR(Impl27, (X27, X28, X29, X30, X31, X...
    method DI_CONSTRUCTOR (line 140) | DI_CONSTRUCTOR(Impl27, (X27, X28, X29, X30, X31, X32, X33, X34, X35, X...
    method dummy (line 140) | void dummy() override { }
  type I28 (line 141) | struct I28 { virtual ~I28() noexcept = default; virtual void dummy() = 0; }
  type Impl28 (line 141) | struct Impl28 : I28 { DI_CONSTRUCTOR(Impl28, (X28, X29, X30, X31, X32, X...
    method DI_CONSTRUCTOR (line 141) | DI_CONSTRUCTOR(Impl28, (X28, X29, X30, X31, X32, X33, X34, X35, X36, X...
    method dummy (line 141) | void dummy() override { }
  type I29 (line 142) | struct I29 { virtual ~I29() noexcept = default; virtual void dummy() = 0; }
  type Impl29 (line 142) | struct Impl29 : I29 { DI_CONSTRUCTOR(Impl29, (X29, X30, X31, X32, X33, X...
    method DI_CONSTRUCTOR (line 142) | DI_CONSTRUCTOR(Impl29, (X29, X30, X31, X32, X33, X34, X35, X36, X37, X...
    method dummy (line 142) | void dummy() override { }
  type I30 (line 143) | struct I30 { virtual ~I30() noexcept = default; virtual void dummy() = 0; }
  type Impl30 (line 143) | struct Impl30 : I30 { DI_CONSTRUCTOR(Impl30, (X30, X31, X32, X33, X34, X...
    method DI_CONSTRUCTOR (line 143) | DI_CONSTRUCTOR(Impl30, (X30, X31, X32, X33, X34, X35, X36, X37, X38, X...
    method dummy (line 143) | void dummy() override { }
  type I31 (line 144) | struct I31 { virtual ~I31() noexcept = default; virtual void dummy() = 0; }
  type Impl31 (line 144) | struct Impl31 : I31 { DI_CONSTRUCTOR(Impl31, (X31, X32, X33, X34, X35, X...
    method DI_CONSTRUCTOR (line 144) | DI_CONSTRUCTOR(Impl31, (X31, X32, X33, X34, X35, X36, X37, X38, X39, X...
    method dummy (line 144) | void dummy() override { }
  type I32 (line 145) | struct I32 { virtual ~I32() noexcept = default; virtual void dummy() = 0; }
  type Impl32 (line 145) | struct Impl32 : I32 { DI_CONSTRUCTOR(Impl32, (X32, X33, X34, X35, X36, X...
    method DI_CONSTRUCTOR (line 145) | DI_CONSTRUCTOR(Impl32, (X32, X33, X34, X35, X36, X37, X38, X39, X40, X...
    method dummy (line 145) | void dummy() override { }
  type I33 (line 146) | struct I33 { virtual ~I33() noexcept = default; virtual void dummy() = 0; }
  type Impl33 (line 146) | struct Impl33 : I33 { DI_CONSTRUCTOR(Impl33, (X33, X34, X35, X36, X37, X...
    method DI_CONSTRUCTOR (line 146) | DI_CONSTRUCTOR(Impl33, (X33, X34, X35, X36, X37, X38, X39, X40, X41, X...
    method dummy (line 146) | void dummy() override { }
  type I34 (line 147) | struct I34 { virtual ~I34() noexcept = default; virtual void dummy() = 0; }
  type Impl34 (line 147) | struct Impl34 : I34 { DI_CONSTRUCTOR(Impl34, (X34, X35, X36, X37, X38, X...
    method DI_CONSTRUCTOR (line 147) | DI_CONSTRUCTOR(Impl34, (X34, X35, X36, X37, X38, X39, X40, X41, X42, X...
    method dummy (line 147) | void dummy() override { }
  type I35 (line 148) | struct I35 { virtual ~I35() noexcept = default; virtual void dummy() = 0; }
  type Impl35 (line 148) | struct Impl35 : I35 { DI_CONSTRUCTOR(Impl35, (X35, X36, X37, X38, X39, X...
    method DI_CONSTRUCTOR (line 148) | DI_CONSTRUCTOR(Impl35, (X35, X36, X37, X38, X39, X40, X41, X42, X43, X...
    method dummy (line 148) | void dummy() override { }
  type I36 (line 149) | struct I36 { virtual ~I36() noexcept = default; virtual void dummy() = 0; }
  type Impl36 (line 149) | struct Impl36 : I36 { DI_CONSTRUCTOR(Impl36, (X36, X37, X38, X39, X40, X...
    method DI_CONSTRUCTOR (line 149) | DI_CONSTRUCTOR(Impl36, (X36, X37, X38, X39, X40, X41, X42, X43, X44, X...
    method dummy (line 149) | void dummy() override { }
  type I37 (line 150) | struct I37 { virtual ~I37() noexcept = default; virtual void dummy() = 0; }
  type Impl37 (line 150) | struct Impl37 : I37 { DI_CONSTRUCTOR(Impl37, (X37, X38, X39, X40, X41, X...
    method DI_CONSTRUCTOR (line 150) | DI_CONSTRUCTOR(Impl37, (X37, X38, X39, X40, X41, X42, X43, X44, X45, X...
    method dummy (line 150) | void dummy() override { }
  type I38 (line 151) | struct I38 { virtual ~I38() noexcept = default; virtual void dummy() = 0; }
  type Impl38 (line 151) | struct Impl38 : I38 { DI_CONSTRUCTOR(Impl38, (X38, X39, X40, X41, X42, X...
    method DI_CONSTRUCTOR (line 151) | DI_CONSTRUCTOR(Impl38, (X38, X39, X40, X41, X42, X43, X44, X45, X46, X...
    method dummy (line 151) | void dummy() override { }
  type I39 (line 152) | struct I39 { virtual ~I39() noexcept = default; virtual void dummy() = 0; }
  type Impl39 (line 152) | struct Impl39 : I39 { DI_CONSTRUCTOR(Impl39, (X39, X40, X41, X42, X43, X...
    method DI_CONSTRUCTOR (line 152) | DI_CONSTRUCTOR(Impl39, (X39, X40, X41, X42, X43, X44, X45, X46, X47, X...
    method dummy (line 152) | void dummy() override { }
  type I40 (line 153) | struct I40 { virtual ~I40() noexcept = default; virtual void dummy() = 0; }
  type Impl40 (line 153) | struct Impl40 : I40 { DI_CONSTRUCTOR(Impl40, (X40, X41, X42, X43, X44, X...
    method DI_CONSTRUCTOR (line 153) | DI_CONSTRUCTOR(Impl40, (X40, X41, X42, X43, X44, X45, X46, X47, X48, X...
    method dummy (line 153) | void dummy() override { }
  type I41 (line 154) | struct I41 { virtual ~I41() noexcept = default; virtual void dummy() = 0; }
  type Impl41 (line 154) | struct Impl41 : I41 { DI_CONSTRUCTOR(Impl41, (X41, X42, X43, X44, X45, X...
    method DI_CONSTRUCTOR (line 154) | DI_CONSTRUCTOR(Impl41, (X41, X42, X43, X44, X45, X46, X47, X48, X49, X...
    method dummy (line 154) | void dummy() override { }
  type I42 (line 155) | struct I42 { virtual ~I42() noexcept = default; virtual void dummy() = 0; }
  type Impl42 (line 155) | struct Impl42 : I42 { DI_CONSTRUCTOR(Impl42, (X42, X43, X44, X45, X46, X...
    method DI_CONSTRUCTOR (line 155) | DI_CONSTRUCTOR(Impl42, (X42, X43, X44, X45, X46, X47, X48, X49, X50, X...
    method dummy (line 155) | void dummy() override { }
  type I43 (line 156) | struct I43 { virtual ~I43() noexcept = default; virtual void dummy() = 0; }
  type Impl43 (line 156) | struct Impl43 : I43 { DI_CONSTRUCTOR(Impl43, (X43, X44, X45, X46, X47, X...
    method DI_CONSTRUCTOR (line 156) | DI_CONSTRUCTOR(Impl43, (X43, X44, X45, X46, X47, X48, X49, X50, X51, X...
    method dummy (line 156) | void dummy() override { }
  type I44 (line 157) | struct I44 { virtual ~I44() noexcept = default; virtual void dummy() = 0; }
  type Impl44 (line 157) | struct Impl44 : I44 { DI_CONSTRUCTOR(Impl44, (X44, X45, X46, X47, X48, X...
    method DI_CONSTRUCTOR (line 157) | DI_CONSTRUCTOR(Impl44, (X44, X45, X46, X47, X48, X49, X50, X51, X52, X...
    method dummy (line 157) | void dummy() override { }
  type I45 (line 158) | struct I45 { virtual ~I45() noexcept = default; virtual void dummy() = 0; }
  type Impl45 (line 158) | struct Impl45 : I45 { DI_CONSTRUCTOR(Impl45, (X45, X46, X47, X48, X49, X...
    method DI_CONSTRUCTOR (line 158) | DI_CONSTRUCTOR(Impl45, (X45, X46, X47, X48, X49, X50, X51, X52, X53, X...
    method dummy (line 158) | void dummy() override { }
  type I46 (line 159) | struct I46 { virtual ~I46() noexcept = default; virtual void dummy() = 0; }
  type Impl46 (line 159) | struct Impl46 : I46 { DI_CONSTRUCTOR(Impl46, (X46, X47, X48, X49, X50, X...
    method DI_CONSTRUCTOR (line 159) | DI_CONSTRUCTOR(Impl46, (X46, X47, X48, X49, X50, X51, X52, X53, X54, X...
    method dummy (line 159) | void dummy() override { }
  type I47 (line 160) | struct I47 { virtual ~I47() noexcept = default; virtual void dummy() = 0; }
  type Impl47 (line 160) | struct Impl47 : I47 { DI_CONSTRUCTOR(Impl47, (X47, X48, X49, X50, X51, X...
    method DI_CONSTRUCTOR (line 160) | DI_CONSTRUCTOR(Impl47, (X47, X48, X49, X50, X51, X52, X53, X54, X55, X...
    method dummy (line 160) | void dummy() override { }
  type I48 (line 161) | struct I48 { virtual ~I48() noexcept = default; virtual void dummy() = 0; }
  type Impl48 (line 161) | struct Impl48 : I48 { DI_CONSTRUCTOR(Impl48, (X48, X49, X50, X51, X52, X...
    method DI_CONSTRUCTOR (line 161) | DI_CONSTRUCTOR(Impl48, (X48, X49, X50, X51, X52, X53, X54, X55, X56, X...
    method dummy (line 161) | void dummy() override { }
  type I49 (line 162) | struct I49 { virtual ~I49() noexcept = default; virtual void dummy() = 0; }
  type Impl49 (line 162) | struct Impl49 : I49 { DI_CONSTRUCTOR(Impl49, (X49, X50, X51, X52, X53, X...
    method DI_CONSTRUCTOR (line 162) | DI_CONSTRUCTOR(Impl49, (X49, X50, X51, X52, X53, X54, X55, X56, X57, X...
    method dummy (line 162) | void dummy() override { }
  type I50 (line 163) | struct I50 { virtual ~I50() noexcept = default; virtual void dummy() = 0; }
  type Impl50 (line 163) | struct Impl50 : I50 { DI_CONSTRUCTOR(Impl50, (X50, X51, X52, X53, X54, X...
    method DI_CONSTRUCTOR (line 163) | DI_CONSTRUCTOR(Impl50, (X50, X51, X52, X53, X54, X55, X56, X57, X58, X...
    method dummy (line 163) | void dummy() override { }
  type I51 (line 164) | struct I51 { virtual ~I51() noexcept = default; virtual void dummy() = 0; }
  type Impl51 (line 164) | struct Impl51 : I51 { DI_CONSTRUCTOR(Impl51, (X51, X52, X53, X54, X55, X...
    method DI_CONSTRUCTOR (line 164) | DI_CONSTRUCTOR(Impl51, (X51, X52, X53, X54, X55, X56, X57, X58, X59, X...
    method dummy (line 164) | void dummy() override { }
  type I52 (line 165) | struct I52 { virtual ~I52() noexcept = default; virtual void dummy() = 0; }
  type Impl52 (line 165) | struct Impl52 : I52 { DI_CONSTRUCTOR(Impl52, (X52, X53, X54, X55, X56, X...
    method DI_CONSTRUCTOR (line 165) | DI_CONSTRUCTOR(Impl52, (X52, X53, X54, X55, X56, X57, X58, X59, X60, X...
    method dummy (line 165) | void dummy() override { }
  type I53 (line 166) | struct I53 { virtual ~I53() noexcept = default; virtual void dummy() = 0; }
  type Impl53 (line 166) | struct Impl53 : I53 { DI_CONSTRUCTOR(Impl53, (X53, X54, X55, X56, X57, X...
    method DI_CONSTRUCTOR (line 166) | DI_CONSTRUCTOR(Impl53, (X53, X54, X55, X56, X57, X58, X59, X60, X61, X...
    method dummy (line 166) | void dummy() override { }
  type I54 (line 167) | struct I54 { virtual ~I54() noexcept = default; virtual void dummy() = 0; }
  type Impl54 (line 167) | struct Impl54 : I54 { DI_CONSTRUCTOR(Impl54, (X54, X55, X56, X57, X58, X...
    method DI_CONSTRUCTOR (line 167) | DI_CONSTRUCTOR(Impl54, (X54, X55, X56, X57, X58, X59, X60, X61, X62, X...
    method dummy (line 167) | void dummy() override { }
  type I55 (line 168) | struct I55 { virtual ~I55() noexcept = default; virtual void dummy() = 0; }
  type Impl55 (line 168) | struct Impl55 : I55 { DI_CONSTRUCTOR(Impl55, (X55, X56, X57, X58, X59, X...
    method DI_CONSTRUCTOR (line 168) | DI_CONSTRUCTOR(Impl55, (X55, X56, X57, X58, X59, X60, X61, X62, X63, X...
    method dummy (line 168) | void dummy() override { }
  type I56 (line 169) | struct I56 { virtual ~I56() noexcept = default; virtual void dummy() = 0; }
  type Impl56 (line 169) | struct Impl56 : I56 { DI_CONSTRUCTOR(Impl56, (X56, X57, X58, X59, X60, X...
    method DI_CONSTRUCTOR (line 169) | DI_CONSTRUCTOR(Impl56, (X56, X57, X58, X59, X60, X61, X62, X63, X64, X...
    method dummy (line 169) | void dummy() override { }
  type I57 (line 170) | struct I57 { virtual ~I57() noexcept = default; virtual void dummy() = 0; }
  type Impl57 (line 170) | struct Impl57 : I57 { DI_CONSTRUCTOR(Impl57, (X57, X58, X59, X60, X61, X...
    method DI_CONSTRUCTOR (line 170) | DI_CONSTRUCTOR(Impl57, (X57, X58, X59, X60, X61, X62, X63, X64, X65, X...
    method dummy (line 170) | void dummy() override { }
  type I58 (line 171) | struct I58 { virtual ~I58() noexcept = default; virtual void dummy() = 0; }
  type Impl58 (line 171) | struct Impl58 : I58 { DI_CONSTRUCTOR(Impl58, (X58, X59, X60, X61, X62, X...
    method DI_CONSTRUCTOR (line 171) | DI_CONSTRUCTOR(Impl58, (X58, X59, X60, X61, X62, X63, X64, X65, X66, X...
    method dummy (line 171) | void dummy() override { }
  type I59 (line 172) | struct I59 { virtual ~I59() noexcept = default; virtual void dummy() = 0; }
  type Impl59 (line 172) | struct Impl59 : I59 { DI_CONSTRUCTOR(Impl59, (X59, X60, X61, X62, X63, X...
    method DI_CONSTRUCTOR (line 172) | DI_CONSTRUCTOR(Impl59, (X59, X60, X61, X62, X63, X64, X65, X66, X67, X...
    method dummy (line 172) | void dummy() override { }
  type I60 (line 173) | struct I60 { virtual ~I60() noexcept = default; virtual void dummy() = 0; }
  type Impl60 (line 173) | struct Impl60 : I60 { DI_CONSTRUCTOR(Impl60, (X60, X61, X62, X63, X64, X...
    method DI_CONSTRUCTOR (line 173) | DI_CONSTRUCTOR(Impl60, (X60, X61, X62, X63, X64, X65, X66, X67, X68, X...
    method dummy (line 173) | void dummy() override { }
  type I61 (line 174) | struct I61 { virtual ~I61() noexcept = default; virtual void dummy() = 0; }
  type Impl61 (line 174) | struct Impl61 : I61 { DI_CONSTRUCTOR(Impl61, (X61, X62, X63, X64, X65, X...
    method DI_CONSTRUCTOR (line 174) | DI_CONSTRUCTOR(Impl61, (X61, X62, X63, X64, X65, X66, X67, X68, X69, X...
    method dummy (line 174) | void dummy() override { }
  type I62 (line 175) | struct I62 { virtual ~I62() noexcept = default; virtual void dummy() = 0; }
  type Impl62 (line 175) | struct Impl62 : I62 { DI_CONSTRUCTOR(Impl62, (X62, X63, X64, X65, X66, X...
    method DI_CONSTRUCTOR (line 175) | DI_CONSTRUCTOR(Impl62, (X62, X63, X64, X65, X66, X67, X68, X69, X70, X...
    method dummy (line 175) | void dummy() override { }
  type I63 (line 176) | struct I63 { virtual ~I63() noexcept = default; virtual void dummy() = 0; }
  type Impl63 (line 176) | struct Impl63 : I63 { DI_CONSTRUCTOR(Impl63, (X63, X64, X65, X66, X67, X...
    method DI_CONSTRUCTOR (line 176) | DI_CONSTRUCTOR(Impl63, (X63, X64, X65, X66, X67, X68, X69, X70, X71, X...
    method dummy (line 176) | void dummy() override { }
  type I64 (line 177) | struct I64 { virtual ~I64() noexcept = default; virtual void dummy() = 0; }
  type Impl64 (line 177) | struct Impl64 : I64 { DI_CONSTRUCTOR(Impl64, (X64, X65, X66, X67, X68, X...
    method DI_CONSTRUCTOR (line 177) | DI_CONSTRUCTOR(Impl64, (X64, X65, X66, X67, X68, X69, X70, X71, X72, X...
    method dummy (line 177) | void dummy() override { }
  type I65 (line 178) | struct I65 { virtual ~I65() noexcept = default; virtual void dummy() = 0; }
  type Impl65 (line 178) | struct Impl65 : I65 { DI_CONSTRUCTOR(Impl65, (X65, X66, X67, X68, X69, X...
    method DI_CONSTRUCTOR (line 178) | DI_CONSTRUCTOR(Impl65, (X65, X66, X67, X68, X69, X70, X71, X72, X73, X...
    method dummy (line 178) | void dummy() override { }
  type I66 (line 179) | struct I66 { virtual ~I66() noexcept = default; virtual void dummy() = 0; }
  type Impl66 (line 179) | struct Impl66 : I66 { DI_CONSTRUCTOR(Impl66, (X66, X67, X68, X69, X70, X...
    method DI_CONSTRUCTOR (line 179) | DI_CONSTRUCTOR(Impl66, (X66, X67, X68, X69, X70, X71, X72, X73, X74, X...
    method dummy (line 179) | void dummy() override { }
  type I67 (line 180) | struct I67 { virtual ~I67() noexcept = default; virtual void dummy() = 0; }
  type Impl67 (line 180) | struct Impl67 : I67 { DI_CONSTRUCTOR(Impl67, (X67, X68, X69, X70, X71, X...
    method DI_CONSTRUCTOR (line 180) | DI_CONSTRUCTOR(Impl67, (X67, X68, X69, X70, X71, X72, X73, X74, X75, X...
    method dummy (line 180) | void dummy() override { }
  type I68 (line 181) | struct I68 { virtual ~I68() noexcept = default; virtual void dummy() = 0; }
  type Impl68 (line 181) | struct Impl68 : I68 { DI_CONSTRUCTOR(Impl68, (X68, X69, X70, X71, X72, X...
    method DI_CONSTRUCTOR (line 181) | DI_CONSTRUCTOR(Impl68, (X68, X69, X70, X71, X72, X73, X74, X75, X76, X...
    method dummy (line 181) | void dummy() override { }
  type I69 (line 182) | struct I69 { virtual ~I69() noexcept = default; virtual void dummy() = 0; }
  type Impl69 (line 182) | struct Impl69 : I69 { DI_CONSTRUCTOR(Impl69, (X69, X70, X71, X72, X73, X...
    method DI_CONSTRUCTOR (line 182) | DI_CONSTRUCTOR(Impl69, (X69, X70, X71, X72, X73, X74, X75, X76, X77, X...
    method dummy (line 182) | void dummy() override { }
  type I70 (line 183) | struct I70 { virtual ~I70() noexcept = default; virtual void dummy() = 0; }
  type Impl70 (line 183) | struct Impl70 : I70 { DI_CONSTRUCTOR(Impl70, (X70, X71, X72, X73, X74, X...
    method DI_CONSTRUCTOR (line 183) | DI_CONSTRUCTOR(Impl70, (X70, X71, X72, X73, X74, X75, X76, X77, X78, X...
    method dummy (line 183) | void dummy() override { }
  type I71 (line 184) | struct I71 { virtual ~I71() noexcept = default; virtual void dummy() = 0; }
  type Impl71 (line 184) | struct Impl71 : I71 { DI_CONSTRUCTOR(Impl71, (X71, X72, X73, X74, X75, X...
    method DI_CONSTRUCTOR (line 184) | DI_CONSTRUCTOR(Impl71, (X71, X72, X73, X74, X75, X76, X77, X78, X79, X...
    method dummy (line 184) | void dummy() override { }
  type I72 (line 185) | struct I72 { virtual ~I72() noexcept = default; virtual void dummy() = 0; }
  type Impl72 (line 185) | struct Impl72 : I72 { DI_CONSTRUCTOR(Impl72, (X72, X73, X74, X75, X76, X...
    method DI_CONSTRUCTOR (line 185) | DI_CONSTRUCTOR(Impl72, (X72, X73, X74, X75, X76, X77, X78, X79, X80, X...
    method dummy (line 185) | void dummy() override { }
  type I73 (line 186) | struct I73 { virtual ~I73() noexcept = default; virtual void dummy() = 0; }
  type Impl73 (line 186) | struct Impl73 : I73 { DI_CONSTRUCTOR(Impl73, (X73, X74, X75, X76, X77, X...
    method DI_CONSTRUCTOR (line 186) | DI_CONSTRUCTOR(Impl73, (X73, X74, X75, X76, X77, X78, X79, X80, X81, X...
    method dummy (line 186) | void dummy() override { }
  type I74 (line 187) | struct I74 { virtual ~I74() noexcept = default; virtual void dummy() = 0; }
  type Impl74 (line 187) | struct Impl74 : I74 { DI_CONSTRUCTOR(Impl74, (X74, X75, X76, X77, X78, X...
    method DI_CONSTRUCTOR (line 187) | DI_CONSTRUCTOR(Impl74, (X74, X75, X76, X77, X78, X79, X80, X81, X82, X...
    method dummy (line 187) | void dummy() override { }
  type I75 (line 188) | struct I75 { virtual ~I75() noexcept = default; virtual void dummy() = 0; }
  type Impl75 (line 188) | struct Impl75 : I75 { DI_CONSTRUCTOR(Impl75, (X75, X76, X77, X78, X79, X...
    method DI_CONSTRUCTOR (line 188) | DI_CONSTRUCTOR(Impl75, (X75, X76, X77, X78, X79, X80, X81, X82, X83, X...
    method dummy (line 188) | void dummy() override { }
  type I76 (line 189) | struct I76 { virtual ~I76() noexcept = default; virtual void dummy() = 0; }
  type Impl76 (line 189) | struct Impl76 : I76 { DI_CONSTRUCTOR(Impl76, (X76, X77, X78, X79, X80, X...
    method DI_CONSTRUCTOR (line 189) | DI_CONSTRUCTOR(Impl76, (X76, X77, X78, X79, X80, X81, X82, X83, X84, X...
    method dummy (line 189) | void dummy() override { }
  type I77 (line 190) | struct I77 { virtual ~I77() noexcept = default; virtual void dummy() = 0; }
  type Impl77 (line 190) | struct Impl77 : I77 { DI_CONSTRUCTOR(Impl77, (X77, X78, X79, X80, X81, X...
    method DI_CONSTRUCTOR (line 190) | DI_CONSTRUCTOR(Impl77, (X77, X78, X79, X80, X81, X82, X83, X84, X85, X...
    method dummy (line 190) | void dummy() override { }
  type I78 (line 191) | struct I78 { virtual ~I78() noexcept = default; virtual void dummy() = 0; }
  type Impl78 (line 191) | struct Impl78 : I78 { DI_CONSTRUCTOR(Impl78, (X78, X79, X80, X81, X82, X...
    method DI_CONSTRUCTOR (line 191) | DI_CONSTRUCTOR(Impl78, (X78, X79, X80, X81, X82, X83, X84, X85, X86, X...
    method dummy (line 191) | void dummy() override { }
  type I79 (line 192) | struct I79 { virtual ~I79() noexcept = default; virtual void dummy() = 0; }
  type Impl79 (line 192) | struct Impl79 : I79 { DI_CONSTRUCTOR(Impl79, (X79, X80, X81, X82, X83, X...
    method DI_CONSTRUCTOR (line 192) | DI_CONSTRUCTOR(Impl79, (X79, X80, X81, X82, X83, X84, X85, X86, X87, X...
    method dummy (line 192) | void dummy() override { }
  type I80 (line 193) | struct I80 { virtual ~I80() noexcept = default; virtual void dummy() = 0; }
  type Impl80 (line 193) | struct Impl80 : I80 { DI_CONSTRUCTOR(Impl80, (X80, X81, X82, X83, X84, X...
    method DI_CONSTRUCTOR (line 193) | DI_CONSTRUCTOR(Impl80, (X80, X81, X82, X83, X84, X85, X86, X87, X88, X...
    method dummy (line 193) | void dummy() override { }
  type I81 (line 194) | struct I81 { virtual ~I81() noexcept = default; virtual void dummy() = 0; }
  type Impl81 (line 194) | struct Impl81 : I81 { DI_CONSTRUCTOR(Impl81, (X81, X82, X83, X84, X85, X...
    method DI_CONSTRUCTOR (line 194) | DI_CONSTRUCTOR(Impl81, (X81, X82, X83, X84, X85, X86, X87, X88, X89, X...
    method dummy (line 194) | void dummy() override { }
  type I82 (line 195) | struct I82 { virtual ~I82() noexcept = default; virtual void dummy() = 0; }
  type Impl82 (line 195) | struct Impl82 : I82 { DI_CONSTRUCTOR(Impl82, (X82, X83, X84, X85, X86, X...
    method DI_CONSTRUCTOR (line 195) | DI_CONSTRUCTOR(Impl82, (X82, X83, X84, X85, X86, X87, X88, X89, X90, X...
    method dummy (line 195) | void dummy() override { }
  type I83 (line 196) | struct I83 { virtual ~I83() noexcept = default; virtual void dummy() = 0; }
  type Impl83 (line 196) | struct Impl83 : I83 { DI_CONSTRUCTOR(Impl83, (X83, X84, X85, X86, X87, X...
    method DI_CONSTRUCTOR (line 196) | DI_CONSTRUCTOR(Impl83, (X83, X84, X85, X86, X87, X88, X89, X90, X91, X...
    method dummy (line 196) | void dummy() override { }
  type I84 (line 197) | struct I84 { virtual ~I84() noexcept = default; virtual void dummy() = 0; }
  type Impl84 (line 197) | struct Impl84 : I84 { DI_CONSTRUCTOR(Impl84, (X84, X85, X86, X87, X88, X...
    method DI_CONSTRUCTOR (line 197) | DI_CONSTRUCTOR(Impl84, (X84, X85, X86, X87, X88, X89, X90, X91, X92, X...
    method dummy (line 197) | void dummy() override { }
  type I85 (line 198) | struct I85 { virtual ~I85() noexcept = default; virtual void dummy() = 0; }
  type Impl85 (line 198) | struct Impl85 : I85 { DI_CONSTRUCTOR(Impl85, (X85, X86, X87, X88, X89, X...
    method DI_CONSTRUCTOR (line 198) | DI_CONSTRUCTOR(Impl85, (X85, X86, X87, X88, X89, X90, X91, X92, X93, X...
    method dummy (line 198) | void dummy() override { }
  type I86 (line 199) | struct I86 { virtual ~I86() noexcept = default; virtual void dummy() = 0; }
  type Impl86 (line 199) | struct Impl86 : I86 { DI_CONSTRUCTOR(Impl86, (X86, X87, X88, X89, X90, X...
    method DI_CONSTRUCTOR (line 199) | DI_CONSTRUCTOR(Impl86, (X86, X87, X88, X89, X90, X91, X92, X93, X94, X...
    method dummy (line 199) | void dummy() override { }
  type I87 (line 200) | struct I87 { virtual ~I87() noexcept = default; virtual void dummy() = 0; }
  type Impl87 (line 200) | struct Impl87 : I87 { DI_CONSTRUCTOR(Impl87, (X87, X88, X89, X90, X91, X...
    method DI_CONSTRUCTOR (line 200) | DI_CONSTRUCTOR(Impl87, (X87, X88, X89, X90, X91, X92, X93, X94, X95, X...
    method dummy (line 200) | void dummy() override { }
  type I88 (line 201) | struct I88 { virtual ~I88() noexcept = default; virtual void dummy() = 0; }
  type Impl88 (line 201) | struct Impl88 : I88 { DI_CONSTRUCTOR(Impl88, (X88, X89, X90, X91, X92, X...
    method DI_CONSTRUCTOR (line 201) | DI_CONSTRUCTOR(Impl88, (X88, X89, X90, X91, X92, X93, X94, X95, X96, X...
    method dummy (line 201) | void dummy() override { }
  type I89 (line 202) | struct I89 { virtual ~I89() noexcept = default; virtual void dummy() = 0; }
  type Impl89 (line 202) | struct Impl89 : I89 { DI_CONSTRUCTOR(Impl89, (X89, X90, X91, X92, X93, X...
    method DI_CONSTRUCTOR (line 202) | DI_CONSTRUCTOR(Impl89, (X89, X90, X91, X92, X93, X94, X95, X96, X97, X...
    method dummy (line 202) | void dummy() override { }
  type I90 (line 203) | struct I90 { virtual ~I90() noexcept = default; virtual void dummy() = 0; }
  type Impl90 (line 203) | struct Impl90 : I90 { DI_CONSTRUCTOR(Impl90, (X90, X91, X92, X93, X94, X...
    method DI_CONSTRUCTOR (line 203) | DI_CONSTRUCTOR(Impl90, (X90, X91, X92, X93, X94, X95, X96, X97, X98, X...
    method dummy (line 203) | void dummy() override { }
  type I91 (line 204) | struct I91 { virtual ~I91() noexcept = default; virtual void dummy() = 0; }
  type Impl91 (line 204) | struct Impl91 : I91 { DI_CONSTRUCTOR(Impl91, (X91, X92, X93, X94, X95, X...
    method DI_CONSTRUCTOR (line 204) | DI_CONSTRUCTOR(Impl91, (X91, X92, X93, X94, X95, X96, X97, X98, X99, X...
    method dummy (line 204) | void dummy() override { }
  type I92 (line 205) | struct I92 { virtual ~I92() noexcept = default; virtual void dummy() = 0; }
  type Impl92 (line 205) | struct Impl92 : I92 { DI_CONSTRUCTOR(Impl92, (X92, X93, X94, X95, X96, X...
    method DI_CONSTRUCTOR (line 205) | DI_CONSTRUCTOR(Impl92, (X92, X93, X94, X95, X96, X97, X98, X99, X00, X...
    method dummy (line 205) | void dummy() override { }
  type I93 (line 206) | struct I93 { virtual ~I93() noexcept = default; virtual void dummy() = 0; }
  type Impl93 (line 206) | struct Impl93 : I93 { DI_CONSTRUCTOR(Impl93, (X93, X94, X95, X96, X97, X...
    method DI_CONSTRUCTOR (line 206) | DI_CONSTRUCTOR(Impl93, (X93, X94, X95, X96, X97, X98, X99, X00, X01, X...
    method dummy (line 206) | void dummy() override { }
  type I94 (line 207) | struct I94 { virtual ~I94() noexcept = default; virtual void dummy() = 0; }
  type Impl94 (line 207) | struct Impl94 : I94 { DI_CONSTRUCTOR(Impl94, (X94, X95, X96, X97, X98, X...
    method DI_CONSTRUCTOR (line 207) | DI_CONSTRUCTOR(Impl94, (X94, X95, X96, X97, X98, X99, X00, X01, X02, X...
    method dummy (line 207) | void dummy() override { }
  type I95 (line 208) | struct I95 { virtual ~I95() noexcept = default; virtual void dummy() = 0; }
  type Impl95 (line 208) | struct Impl95 : I95 { DI_CONSTRUCTOR(Impl95, (X95, X96, X97, X98, X99, X...
    method DI_CONSTRUCTOR (line 208) | DI_CONSTRUCTOR(Impl95, (X95, X96, X97, X98, X99, X00, X01, X02, X03, X...
    method dummy (line 208) | void dummy() override { }
  type I96 (line 209) | struct I96 { virtual ~I96() noexcept = default; virtual void dummy() = 0; }
  type Impl96 (line 209) | struct Impl96 : I96 { DI_CONSTRUCTOR(Impl96, (X96, X97, X98, X99, X00, X...
    method DI_CONSTRUCTOR (line 209) | DI_CONSTRUCTOR(Impl96, (X96, X97, X98, X99, X00, X01, X02, X03, X04, X...
    method dummy (line 209) | void dummy() override { }
  type I97 (line 210) | struct I97 { virtual ~I97() noexcept = default; virtual void dummy() = 0; }
  type Impl97 (line 210) | struct Impl97 : I97 { DI_CONSTRUCTOR(Impl97, (X97, X98, X99, X00, X01, X...
    method DI_CONSTRUCTOR (line 210) | DI_CONSTRUCTOR(Impl97, (X97, X98, X99, X00, X01, X02, X03, X04, X05, X...
    method dummy (line 210) | void dummy() override { }
  type I98 (line 211) | struct I98 { virtual ~I98() noexcept = default; virtual void dummy() = 0; }
  type Impl98 (line 211) | struct Impl98 : I98 { DI_CONSTRUCTOR(Impl98, (X98, X99, X00, X01, X02, X...
    method DI_CONSTRUCTOR (line 211) | DI_CONSTRUCTOR(Impl98, (X98, X99, X00, X01, X02, X03, X04, X05, X06, X...
    method dummy (line 211) | void dummy() override { }
  type I99 (line 212) | struct I99 { virtual ~I99() noexcept = default; virtual void dummy() = 0; }
  type Impl99 (line 212) | struct Impl99 : I99 { DI_CONSTRUCTOR(Impl99, (X99, X00, X01, X02, X03, X...
    method DI_CONSTRUCTOR (line 212) | DI_CONSTRUCTOR(Impl99, (X99, X00, X01, X02, X03, X04, X05, X06, X07, X...
    method dummy (line 212) | void dummy() override { }
  type C0 (line 213) | struct C0 { DI_CONSTRUCTOR(C0, (std::unique_ptr<I00>, std::unique_ptr<I0...
    method DI_CONSTRUCTOR (line 213) | DI_CONSTRUCTOR(C0, (std::unique_ptr<I00>, std::unique_ptr<I01>, std::u...
  type C1 (line 214) | struct C1 { DI_CONSTRUCTOR(C1, (std::unique_ptr<I10>, std::unique_ptr<I1...
    method DI_CONSTRUCTOR (line 214) | DI_CONSTRUCTOR(C1, (std::unique_ptr<I10>, std::unique_ptr<I11>, std::u...
  type C2 (line 215) | struct C2 { DI_CONSTRUCTOR(C2, (std::unique_ptr<I20>, std::unique_ptr<I2...
    method DI_CONSTRUCTOR (line 215) | DI_CONSTRUCTOR(C2, (std::unique_ptr<I20>, std::unique_ptr<I21>, std::u...
  type C3 (line 216) | struct C3 { DI_CONSTRUCTOR(C3, (std::unique_ptr<I30>, std::unique_ptr<I3...
    method DI_CONSTRUCTOR (line 216) | DI_CONSTRUCTOR(C3, (std::unique_ptr<I30>, std::unique_ptr<I31>, std::u...
  type C4 (line 217) | struct C4 { DI_CONSTRUCTOR(C4, (std::unique_ptr<I40>, std::unique_ptr<I4...
    method DI_CONSTRUCTOR (line 217) | DI_CONSTRUCTOR(C4, (std::unique_ptr<I40>, std::unique_ptr<I41>, std::u...
  type C5 (line 218) | struct C5 { DI_CONSTRUCTOR(C5, (std::unique_ptr<I50>, std::unique_ptr<I5...
    method DI_CONSTRUCTOR (line 218) | DI_CONSTRUCTOR(C5, (std::unique_ptr<I50>, std::unique_ptr<I51>, std::u...
  type C6 (line 219) | struct C6 { DI_CONSTRUCTOR(C6, (std::unique_ptr<I60>, std::unique_ptr<I6...
    method DI_CONSTRUCTOR (line 219) | DI_CONSTRUCTOR(C6, (std::unique_ptr<I60>, std::unique_ptr<I61>, std::u...
  type C7 (line 220) | struct C7 { DI_CONSTRUCTOR(C7, (std::unique_ptr<I70>, std::unique_ptr<I7...
    method DI_CONSTRUCTOR (line 220) | DI_CONSTRUCTOR(C7, (std::unique_ptr<I70>, std::unique_ptr<I71>, std::u...
  type C8 (line 221) | struct C8 { DI_CONSTRUCTOR(C8, (std::unique_ptr<I80>, std::unique_ptr<I8...
    method DI_CONSTRUCTOR (line 221) | DI_CONSTRUCTOR(C8, (std::unique_ptr<I80>, std::unique_ptr<I81>, std::u...
  type C9 (line 222) | struct C9 { DI_CONSTRUCTOR(C9, (std::unique_ptr<I90>, std::unique_ptr<I9...
    method DI_CONSTRUCTOR (line 222) | DI_CONSTRUCTOR(C9, (std::unique_ptr<I90>, std::unique_ptr<I91>, std::u...
  type Complex (line 223) | struct Complex { DI_CONSTRUCTOR(Complex, (C0, C1, C2, C3, C4, C5, C6, C7...
    method DI_CONSTRUCTOR (line 223) | DI_CONSTRUCTOR(Complex, (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)) { }
  function module (line 226) | void module(di::registry& r) {
  function main (line 329) | int main() {

FILE: benchmark/create_complex/fruit.cpp
  type X00 (line 11) | struct X00 { INJECT(X00()) { } }
    method INJECT (line 11) | INJECT(X00()) { }
  type X01 (line 12) | struct X01 { INJECT(X01(X00)) { } }
    method INJECT (line 12) | INJECT(X01(X00)) { }
  type X02 (line 13) | struct X02 { INJECT(X02(X00, X01)) { } }
    method INJECT (line 13) | INJECT(X02(X00, X01)) { }
  type X03 (line 14) | struct X03 { INJECT(X03(X00, X01, X02)) { } }
    method INJECT (line 14) | INJECT(X03(X00, X01, X02)) { }
  type X04 (line 15) | struct X04 { INJECT(X04(X00, X01, X02, X03)) { } }
    method INJECT (line 15) | INJECT(X04(X00, X01, X02, X03)) { }
  type X05 (line 16) | struct X05 { INJECT(X05(X00, X01, X02, X03, X04)) { } }
    method INJECT (line 16) | INJECT(X05(X00, X01, X02, X03, X04)) { }
  type X06 (line 17) | struct X06 { INJECT(X06(X00, X01, X02, X03, X04, X05)) { } }
    method INJECT (line 17) | INJECT(X06(X00, X01, X02, X03, X04, X05)) { }
  type X07 (line 18) | struct X07 { INJECT(X07(X00, X01, X02, X03, X04, X05, X06)) { } }
    method INJECT (line 18) | INJECT(X07(X00, X01, X02, X03, X04, X05, X06)) { }
  type X08 (line 19) | struct X08 { INJECT(X08(X00, X01, X02, X03, X04, X05, X06, X07)) { } }
    method INJECT (line 19) | INJECT(X08(X00, X01, X02, X03, X04, X05, X06, X07)) { }
  type X09 (line 20) | struct X09 { INJECT(X09(X00, X01, X02, X03, X04, X05, X06, X07, X08)) { } }
    method INJECT (line 20) | INJECT(X09(X00, X01, X02, X03, X04, X05, X06, X07, X08)) { }
  type X10 (line 21) | struct X10 { INJECT(X10(X00, X01, X02, X03, X04, X05, X06, X07, X08, X09...
    method INJECT (line 21) | INJECT(X10(X00, X01, X02, X03, X04, X05, X06, X07, X08, X09)) { }
  type X11 (line 22) | struct X11 { INJECT(X11(X01, X02, X03, X04, X05, X06, X07, X08, X09, X10...
    method INJECT (line 22) | INJECT(X11(X01, X02, X03, X04, X05, X06, X07, X08, X09, X10)) { }
  type X12 (line 23) | struct X12 { INJECT(X12(X02, X03, X04, X05, X06, X07, X08, X09, X10, X11...
    method INJECT (line 23) | INJECT(X12(X02, X03, X04, X05, X06, X07, X08, X09, X10, X11)) { }
  type X13 (line 24) | struct X13 { INJECT(X13(X03, X04, X05, X06, X07, X08, X09, X10, X11, X12...
    method INJECT (line 24) | INJECT(X13(X03, X04, X05, X06, X07, X08, X09, X10, X11, X12)) { }
  type X14 (line 25) | struct X14 { INJECT(X14(X04, X05, X06, X07, X08, X09, X10, X11, X12, X13...
    method INJECT (line 25) | INJECT(X14(X04, X05, X06, X07, X08, X09, X10, X11, X12, X13)) { }
  type X15 (line 26) | stru
Condensed preview — 765 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,808K chars).
[
  {
    "path": ".appveyor.yml",
    "chars": 1500,
    "preview": "#\n# Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n#\n# Distributed under the Boost Software License, Versi"
  },
  {
    "path": ".clang-format",
    "chars": 125,
    "preview": "---\nLanguage:               Cpp\nStandard:               Cpp11\nBasedOnStyle:           Google\nColumnLimit:            128"
  },
  {
    "path": ".clang-tidy",
    "chars": 1744,
    "preview": "---\nChecks:          'clang-diagnostic-*,clang-analyzer-*,-clang-analyzer-alpha*,*,-llvm-namespace-comment,-llvm-include"
  },
  {
    "path": ".gitattributes",
    "chars": 12,
    "preview": "* text=auto\n"
  },
  {
    "path": ".travis.yml",
    "chars": 7464,
    "preview": "#\n# Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n#\n# Distributed under the Boost Software License, Versi"
  },
  {
    "path": ".user-config.jam",
    "chars": 344,
    "preview": "#\n# Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n#\n# Distributed under the Boost Software License, Versi"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 929,
    "preview": "#\n# Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n#\n# Distributed under the Boost Software License, Versi"
  },
  {
    "path": "Makefile",
    "chars": 2392,
    "preview": "#\n# Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n#\n# Distributed under the Boost Software License, Versi"
  },
  {
    "path": "README.md",
    "chars": 15488,
    "preview": "<a href=\"http://www.boost.org/LICENSE_1_0.txt\" target=\"_blank\">![Boost Licence](http://img.shields.io/badge/license-boos"
  },
  {
    "path": "benchmark/Makefile",
    "chars": 4745,
    "preview": "#\n# Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n#\n# Distributed under the Boost Software License, Versi"
  },
  {
    "path": "benchmark/bind_error/dagger2.java",
    "chars": 834,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_error/di.cpp",
    "chars": 1252,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_error/dicpp.cpp",
    "chars": 894,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_error/fruit.cpp",
    "chars": 1616,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_error/guice.java",
    "chars": 1185,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_error/ninject.cs",
    "chars": 634,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_interface/dagger2.java",
    "chars": 684,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_interface/di.cpp",
    "chars": 943,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_interface/dicpp.cpp",
    "chars": 2348,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_interface/fruit.cpp",
    "chars": 3287,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_interface/guice.java",
    "chars": 680,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_interface/ninject.cs",
    "chars": 602,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_value/dagger2.java",
    "chars": 512,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_value/di.cpp",
    "chars": 592,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_value/dicpp.cpp",
    "chars": 1779,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_value/fruit.cpp",
    "chars": 2349,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_value/guice.java",
    "chars": 546,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/bind_value/ninject.cs",
    "chars": 496,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/create_complex/dagger2.java",
    "chars": 38652,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/create_complex/di.cpp",
    "chars": 35893,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/create_complex/dicpp.cpp",
    "chars": 37721,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/create_complex/fruit.cpp",
    "chars": 33182,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/create_complex/guice.java",
    "chars": 36758,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/create_complex/ninject.cs",
    "chars": 32817,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/create_simple/dagger2.java",
    "chars": 11279,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/create_simple/di.cpp",
    "chars": 9363,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/create_simple/dicpp.cpp",
    "chars": 9507,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/create_simple/fruit.cpp",
    "chars": 8466,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/create_simple/guice.java",
    "chars": 11284,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/create_simple/ninject.cs",
    "chars": 11147,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/generate_test.py",
    "chars": 8044,
    "preview": "#!/usr/bin/env python\n#\n# Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n#\n# Distributed under the Boost S"
  },
  {
    "path": "benchmark/performance/Makefile",
    "chars": 564,
    "preview": "#\n# Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n#\n# Distributed under the Boost Software License, Versi"
  },
  {
    "path": "benchmark/performance/di.cpp",
    "chars": 52308,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "benchmark/performance/di.sh",
    "chars": 4412,
    "preview": "#!/bin/bash\n#\n# Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n#\n# Distributed under the Boost Software Li"
  },
  {
    "path": "benchmark/performance/header.cpp",
    "chars": 264,
    "preview": "//\n// Copyright (c) 2012-2017 Kris Jusiak (kris at jusiak dot net)\n//\n// Distributed under the Boost Software License, V"
  },
  {
    "path": "doc/CHANGELOG.md",
    "chars": 1583,
    "preview": "## [1.1.0] - 2017-05-04\n- **Additions**\n  - Support for Clang-4.0\n  - Support for GCC-7.0\n  - Support for MSVC-2017\n  >\n"
  },
  {
    "path": "doc/FAQ.md",
    "chars": 2645,
    "preview": "* ### Dependency Inversion vs Dependency Injection\nIn principle Dependency Inversion might be implemented using DI or Se"
  },
  {
    "path": "doc/benchmarks.md",
    "chars": 11450,
    "preview": "##Performance\n\n* **Run-time performance**\n    * Environment\n        * x86\\_64 Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz Ge"
  },
  {
    "path": "doc/concepts-driven-design-with-di/.gitignore",
    "chars": 94,
    "preview": ".DS_Store\n.svn\nlog/*.log\ntmp/**\nnode_modules/\n.sass-cache\ncss/reveal.min.css\njs/reveal.min.js\n"
  },
  {
    "path": "doc/concepts-driven-design-with-di/.travis.yml",
    "chars": 80,
    "preview": "language: node_js\nnode_js:\n  - 4.1.1\nbefore_script:\n  - npm install -g grunt-cli"
  },
  {
    "path": "doc/concepts-driven-design-with-di/CONTRIBUTING.md",
    "chars": 1062,
    "preview": "## Contributing\n\nPlease keep the [issue tracker](http://github.com/hakimel/reveal.js/issues) limited to **bug reports**,"
  },
  {
    "path": "doc/concepts-driven-design-with-di/Gruntfile.js",
    "chars": 3338,
    "preview": "/* global module:false */\nmodule.exports = function(grunt) {\n\tvar port = grunt.option('port') || 8000;\n\tvar base = grunt"
  },
  {
    "path": "doc/concepts-driven-design-with-di/LICENSE",
    "chars": 1075,
    "preview": "Copyright (C) 2015 Hakim El Hattab, http://hakim.se\n\nPermission is hereby granted, free of charge, to any person obtaini"
  },
  {
    "path": "doc/concepts-driven-design-with-di/README.md",
    "chars": 40425,
    "preview": "# reveal.js [![Build Status](https://travis-ci.org/hakimel/reveal.js.svg?branch=master)](https://travis-ci.org/hakimel/r"
  },
  {
    "path": "doc/concepts-driven-design-with-di/bower.json",
    "chars": 523,
    "preview": "{\n  \"name\": \"reveal.js\",\n  \"version\": \"3.2.0\",\n  \"main\": [\n    \"js/reveal.js\",\n    \"css/reveal.css\"\n  ],\n  \"homepage\": \""
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/print/paper.css",
    "chars": 4861,
    "preview": "/* Default Print Stylesheet Template\n   by Rob Glazebrook of CSSnewbie.com\n   Last Updated: June 4, 2008\n\n   Feel free ("
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/print/pdf.css",
    "chars": 3036,
    "preview": "/**\n * This stylesheet is used to print reveal.js\n * presentations to PDF.\n *\n * https://github.com/hakimel/reveal.js#pd"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/reveal.css",
    "chars": 49167,
    "preview": "/*!\n * reveal.js\n * http://lab.hakim.se/reveal-js\n * MIT licensed\n *\n * Copyright (C) 2015 Hakim El Hattab, http://hakim"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/reveal.scss",
    "chars": 36697,
    "preview": "/*!\n * reveal.js\n * http://lab.hakim.se/reveal-js\n * MIT licensed\n *\n * Copyright (C) 2015 Hakim El Hattab, http://hakim"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/README.md",
    "chars": 1605,
    "preview": "## Dependencies\n\nThemes are written using Sass to keep things modular and reduce the need for repeated selectors across "
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/beige.css",
    "chars": 6847,
    "preview": "/**\n * Beige theme for reveal.js.\n *\n * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se\n */\n@import url(../../l"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/black.css",
    "chars": 6264,
    "preview": "/**\n * Black theme for reveal.js. This is the opposite of the 'white' theme.\n *\n * Copyright (C) 2015 Hakim El Hattab, h"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/blood.css",
    "chars": 6694,
    "preview": "/**\n * Blood theme for reveal.js\n * Author: Walther http://github.com/Walther\n *\n * Designed to be used with highlight.j"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/league.css",
    "chars": 6915,
    "preview": "/**\n * League theme for reveal.js.\n *\n * This was the default theme pre-3.0.0.\n *\n * Copyright (C) 2011-2012 Hakim El Ha"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/moon.css",
    "chars": 6133,
    "preview": "/**\n * Solarized Dark theme for reveal.js.\n * Author: Achim Staebler\n */\n@import url(../../lib/font/league-gothic/league"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/night.css",
    "chars": 6048,
    "preview": "/**\n * Black theme for reveal.js.\n *\n * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se\n */\n@import url(https:/"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/serif.css",
    "chars": 6122,
    "preview": "/**\n * A simple theme for reveal.js presentations, similar\n * to the default theme. The accent color is brown.\n *\n * Thi"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/simple.css",
    "chars": 6255,
    "preview": "/**\n * A simple theme for reveal.js presentations, similar\n * to the default theme. The accent color is darkblue.\n *\n * "
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/sky.css",
    "chars": 6656,
    "preview": "/**\n * Sky theme for reveal.js.\n *\n * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se\n */\n@import url(https://f"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/solarized.css",
    "chars": 6134,
    "preview": "/**\n * Solarized Light theme for reveal.js.\n * Author: Achim Staebler\n */\n@import url(../../lib/font/league-gothic/leagu"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/source/beige.scss",
    "chars": 1225,
    "preview": "/**\n * Beige theme for reveal.js.\n *\n * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se\n */\n\n\n// Default mixins"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/source/black.scss",
    "chars": 1191,
    "preview": "/**\n * Black theme for reveal.js. This is the opposite of the 'white' theme.\n *\n * Copyright (C) 2015 Hakim El Hattab, h"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/source/blood.scss",
    "chars": 1839,
    "preview": "/**\n * Blood theme for reveal.js\n * Author: Walther http://github.com/Walther\n *\n * Designed to be used with highlight.j"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/source/league.scss",
    "chars": 1103,
    "preview": "/**\n * League theme for reveal.js.\n *\n * This was the default theme pre-3.0.0.\n *\n * Copyright (C) 2011-2012 Hakim El Ha"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/source/moon.scss",
    "chars": 1269,
    "preview": "/**\n * Solarized Dark theme for reveal.js.\n * Author: Achim Staebler\n */\n\n\n// Default mixins and settings --------------"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/source/night.scss",
    "chars": 966,
    "preview": "/**\n * Black theme for reveal.js.\n *\n * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se\n */\n\n\n// Default mixins"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/source/serif.scss",
    "chars": 991,
    "preview": "/**\n * A simple theme for reveal.js presentations, similar\n * to the default theme. The accent color is brown.\n *\n * Thi"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/source/simple.scss",
    "chars": 1161,
    "preview": "/**\n * A simple theme for reveal.js presentations, similar\n * to the default theme. The accent color is darkblue.\n *\n * "
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/source/sky.scss",
    "chars": 1145,
    "preview": "/**\n * Sky theme for reveal.js.\n *\n * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se\n */\n\n\n// Default mixins a"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/source/solarized.scss",
    "chars": 1409,
    "preview": "/**\n * Solarized Light theme for reveal.js.\n * Author: Achim Staebler\n */\n\n\n// Default mixins and settings -------------"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/source/white.scss",
    "chars": 1190,
    "preview": "/**\n * White theme for reveal.js. This is the opposite of the 'black' theme.\n *\n * Copyright (C) 2015 Hakim El Hattab, h"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/template/mixins.scss",
    "chars": 1619,
    "preview": "@mixin vertical-gradient( $top, $bottom ) {\n\tbackground: $top;\n\tbackground: -moz-linear-gradient( top, $top 0%, $bottom "
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/template/settings.scss",
    "chars": 1034,
    "preview": "// Base settings for all themes that can optionally be\n// overridden by the super-theme\n\n// Background of the presentati"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/template/theme.scss",
    "chars": 6028,
    "preview": "// Base theme template for reveal.js\n\n/*********************************************\n * GLOBAL STYLES\n *****************"
  },
  {
    "path": "doc/concepts-driven-design-with-di/css/theme/white.css",
    "chars": 6253,
    "preview": "/**\n * White theme for reveal.js. This is the opposite of the 'black' theme.\n *\n * Copyright (C) 2015 Hakim El Hattab, h"
  },
  {
    "path": "doc/concepts-driven-design-with-di/example/god_object.cpp",
    "chars": 166,
    "preview": "#include <fstream>\n#include <iostream>\n\nint main() {\n  auto value = 0;\n  {\n    std::fstream file{\"input.txt\"};\n    file "
  },
  {
    "path": "doc/concepts-driven-design-with-di/example/static_polymorphism.cpp",
    "chars": 1051,
    "preview": "#include <cassert>\n#include <fstream>\n#include <iostream>\n\ntemplate <class T>\nstruct Reader {\n  int read() { return stat"
  },
  {
    "path": "doc/concepts-driven-design-with-di/example/type_erasure.cpp",
    "chars": 1206,
    "preview": "#include <boost/type_erasure/any.hpp>\n#include <boost/type_erasure/builtin.hpp>\n#include <boost/type_erasure/free.hpp>\n#"
  },
  {
    "path": "doc/concepts-driven-design-with-di/index.html",
    "chars": 32310,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>Concepts driven design with dependency inje"
  },
  {
    "path": "doc/concepts-driven-design-with-di/js/reveal.js",
    "chars": 129549,
    "preview": "/*!\n * reveal.js\n * http://lab.hakim.se/reveal-js\n * MIT licensed\n *\n * Copyright (C) 2015 Hakim El Hattab, http://hakim"
  },
  {
    "path": "doc/concepts-driven-design-with-di/lib/css/zenburn.css",
    "chars": 1833,
    "preview": "/*\nZenburn style from voldmar.ru (c) Vladimir Epifanov <voldmar@voldmar.ru>\nbased on dark.css by Ivan Sagalaev\n*/\n\n.hljs"
  },
  {
    "path": "doc/concepts-driven-design-with-di/lib/font/league-gothic/LICENSE",
    "chars": 92,
    "preview": "SIL Open Font License (OFL)\nhttp://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL\n"
  },
  {
    "path": "doc/concepts-driven-design-with-di/lib/font/league-gothic/league-gothic.css",
    "chars": 308,
    "preview": "@font-face {\n    font-family: 'League Gothic';\n    src: url('league-gothic.eot');\n    src: url('league-gothic.eot?#iefix"
  },
  {
    "path": "doc/concepts-driven-design-with-di/lib/font/source-sans-pro/LICENSE",
    "chars": 4484,
    "preview": "SIL Open Font License\n\nCopyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name "
  },
  {
    "path": "doc/concepts-driven-design-with-di/lib/font/source-sans-pro/source-sans-pro.css",
    "chars": 1424,
    "preview": "@font-face {\n    font-family: 'Source Sans Pro';\n    src: url('source-sans-pro-regular.eot');\n    src: url('source-sans-"
  },
  {
    "path": "doc/concepts-driven-design-with-di/lib/js/classList.js",
    "chars": 1582,
    "preview": "/*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js*/\nif(typeof document!==\"undefined\"&&!(\""
  },
  {
    "path": "doc/concepts-driven-design-with-di/lib/js/html5shiv.js",
    "chars": 235,
    "preview": "document.createElement('header');\ndocument.createElement('nav');\ndocument.createElement('section');\ndocument.createEleme"
  },
  {
    "path": "doc/concepts-driven-design-with-di/package.json",
    "chars": 1086,
    "preview": "{\n  \"name\": \"reveal.js\",\n  \"version\": \"3.2.0\",\n  \"description\": \"The HTML Presentation Framework\",\n  \"homepage\": \"http:/"
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/highlight/highlight.js",
    "chars": 441180,
    "preview": "// START CUSTOM REVEAL.JS INTEGRATION\n(function() {\n\tif( typeof window.addEventListener === 'function' ) {\n\t\tvar hljs_no"
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/markdown/example.html",
    "chars": 4171,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>reveal.js - Markdown Demo</title>\n\n\t\t<link "
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/markdown/example.md",
    "chars": 230,
    "preview": "# Markdown Demo\n\n\n\n## External 1.1\n\nContent 1.1\n\nNote: This will only appear in the speaker notes window.\n\n\n## External "
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/markdown/markdown.js",
    "chars": 12075,
    "preview": "/**\n * The reveal.js markdown plugin. Handles parsing of\n * markdown inside of presentations as well as loading\n * of ex"
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/markdown/marked.js",
    "chars": 15752,
    "preview": "/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/"
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/math/math.js",
    "chars": 1688,
    "preview": "/**\n * A plugin which enables rendering of math equations inside\n * of reveal.js slides. Essentially a thin wrapper for "
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/multiplex/client.js",
    "chars": 369,
    "preview": "(function() {\n\tvar multiplex = Reveal.getConfig().multiplex;\n\tvar socketId = multiplex.id;\n\tvar socket = io.connect(mult"
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/multiplex/index.js",
    "chars": 1539,
    "preview": "var http        = require('http');\nvar express\t\t= require('express');\nvar fs\t\t\t= require('fs');\nvar io\t\t\t= require('sock"
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/multiplex/master.js",
    "chars": 819,
    "preview": "(function() {\n\n\t// Don't emit events from inside of notes windows\n\tif ( window.location.search.match( /receiver/gi ) ) {"
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/notes/notes.html",
    "chars": 9909,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>reveal.js - Slide Notes</title>\n\n\t\t<style>\n\t"
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/notes/notes.js",
    "chars": 3865,
    "preview": "/**\n * Handles opening of and synchronization with the reveal.js\n * notes window.\n *\n * Handshake process:\n * 1. This wi"
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/notes-server/client.js",
    "chars": 1880,
    "preview": "(function() {\n\n\t// don't emit events from inside the previews themselves\n\tif( window.location.search.match( /receiver/gi"
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/notes-server/index.js",
    "chars": 1826,
    "preview": "var http      = require('http');\nvar express   = require('express');\nvar fs        = require('fs');\nvar io        = requ"
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/notes-server/notes.html",
    "chars": 9505,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>reveal.js - Slide Notes</title>\n\n\t\t<style>\n\t"
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/print-pdf/print-pdf.js",
    "chars": 1214,
    "preview": "/**\n * phantomjs script for printing presentations to PDF.\n *\n * Example:\n * phantomjs print-pdf.js \"http://lab.hakim.se"
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/search/search.js",
    "chars": 7151,
    "preview": "/*\n * Handles finding a text string anywhere in the slides and showing the next occurrence to the user\n * by navigatatin"
  },
  {
    "path": "doc/concepts-driven-design-with-di/plugin/zoom-js/zoom.js",
    "chars": 7989,
    "preview": "// Custom reveal.js integration\n(function(){\n\tvar isEnabled = true;\n\n\tdocument.querySelector( '.reveal .slides' ).addEve"
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/examples/barebones.html",
    "chars": 678,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>reveal.js - Barebones</title>\n\n\t\t<link rel="
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/examples/embedded-media.html",
    "chars": 893,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>reveal.js - Embedded Media</title>\n\n\t\t<meta"
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/examples/math.html",
    "chars": 5203,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>reveal.js - Math Plugin</title>\n\n\t\t<meta na"
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/examples/slide-backgrounds.html",
    "chars": 4018,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>reveal.js - Slide Backgrounds</title>\n\n\t\t<m"
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/examples/slide-transitions.html",
    "chars": 1992,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>reveal.js - Slide Transitions</title>\n\n\t\t<l"
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/qunit-1.12.0.css",
    "chars": 4667,
    "preview": "/**\n * QUnit v1.12.0 - A JavaScript Unit Testing Framework\n *\n * http://qunitjs.com\n *\n * Copyright 2012 jQuery Foundati"
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/qunit-1.12.0.js",
    "chars": 58790,
    "preview": "/**\n * QUnit v1.12.0 - A JavaScript Unit Testing Framework\n *\n * http://qunitjs.com\n *\n * Copyright 2013 jQuery Foundati"
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/test-markdown-element-attributes.html",
    "chars": 3412,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>reveal.js - Test Markdown Element Attribute"
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/test-markdown-element-attributes.js",
    "chars": 2676,
    "preview": "\n\nReveal.addEventListener( 'ready', function() {\n\n\tQUnit.module( 'Markdown' );\n\n\ttest( 'Vertical separator', function() "
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/test-markdown-slide-attributes.html",
    "chars": 2897,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>reveal.js - Test Markdown Attributes</title"
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/test-markdown-slide-attributes.js",
    "chars": 3148,
    "preview": "\n\nReveal.addEventListener( 'ready', function() {\n\n\tQUnit.module( 'Markdown' );\n\n\ttest( 'Vertical separator', function() "
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/test-markdown.html",
    "chars": 1180,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>reveal.js - Test Markdown</title>\n\n\t\t<link "
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/test-markdown.js",
    "chars": 268,
    "preview": "\n\nReveal.addEventListener( 'ready', function() {\n\n\tQUnit.module( 'Markdown' );\n\n\ttest( 'Vertical separator', function() "
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/test-pdf.html",
    "chars": 1657,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>reveal.js - Test PDF exports</title>\n\n\t\t<li"
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/test-pdf.js",
    "chars": 303,
    "preview": "\nReveal.addEventListener( 'ready', function() {\n\n\t// Only one test for now, we're mainly ensuring that there\n\t// are no "
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/test.html",
    "chars": 1907,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>reveal.js - Tests</title>\n\n\t\t<link rel=\"sty"
  },
  {
    "path": "doc/concepts-driven-design-with-di/test/test.js",
    "chars": 20051,
    "preview": "\n// These tests expect the DOM to contain a presentation\n// with the following slide structure:\n//\n// 1\n// 2 - Three sub"
  },
  {
    "path": "doc/concepts-driven-design-with-di/uml/app0.uml",
    "chars": 76,
    "preview": "@startuml\n\nApp : run() : void\n\nnote right: Generated by [Boost].DI\n\n@enduml\n"
  },
  {
    "path": "doc/concepts-driven-design-with-di/uml/app1.uml",
    "chars": 172,
    "preview": "@startuml\n\n\"Printer\" : show(int) : void\n\"Reader\" : read() : int\n\n\"App\" ..> \"Reader\"\n\"App\" ..> \"Printer\"\n\n\"App\" : run() :"
  },
  {
    "path": "doc/concepts-driven-design-with-di/uml/app2.uml",
    "chars": 172,
    "preview": "@startuml\n\n\"Printer\" : show(int) : void\n\"Reader\" : read() : int\n\n\"App\" *.. \"Reader\"\n\"App\" *.. \"Printer\"\n\n\"App\" : run() :"
  },
  {
    "path": "doc/concepts-driven-design-with-di/uml/app3.uml",
    "chars": 304,
    "preview": "@startuml\n\n\"IPrinter\" : show(int) : void\n\"IReader\" : read() : int\n\n\"ConsolePrinter\" -up-|> \"IPrinter\"\n\"ConsolePrinter\" :"
  },
  {
    "path": "doc/concepts-driven-design-with-di/uml/app4.uml",
    "chars": 316,
    "preview": "@startuml\n\n\"Printer<T>\" : show(int) : void\n\"Reader<T>\" : read() : int\n\n\"ConsolePrinter\" -up-|> \"Printer<T>\"\n\"ConsolePrin"
  },
  {
    "path": "doc/concepts-driven-design-with-di/uml/guideline.uml",
    "chars": 237,
    "preview": "@startuml\n\nstart\n\nif (I know the dependency at compile time?) then (yes)\n  :Concepts;\nelse (no)\n   if (I need max perfor"
  },
  {
    "path": "doc/cpp-london-2017/.gitignore",
    "chars": 94,
    "preview": ".DS_Store\n.svn\nlog/*.log\ntmp/**\nnode_modules/\n.sass-cache\ncss/reveal.min.css\njs/reveal.min.js\n"
  },
  {
    "path": "doc/cpp-london-2017/.travis.yml",
    "chars": 80,
    "preview": "language: node_js\nnode_js:\n  - 4.1.1\nbefore_script:\n  - npm install -g grunt-cli"
  },
  {
    "path": "doc/cpp-london-2017/CONTRIBUTING.md",
    "chars": 1062,
    "preview": "## Contributing\n\nPlease keep the [issue tracker](http://github.com/hakimel/reveal.js/issues) limited to **bug reports**,"
  },
  {
    "path": "doc/cpp-london-2017/Gruntfile.js",
    "chars": 3338,
    "preview": "/* global module:false */\nmodule.exports = function(grunt) {\n\tvar port = grunt.option('port') || 8000;\n\tvar base = grunt"
  },
  {
    "path": "doc/cpp-london-2017/LICENSE",
    "chars": 1075,
    "preview": "Copyright (C) 2015 Hakim El Hattab, http://hakim.se\n\nPermission is hereby granted, free of charge, to any person obtaini"
  },
  {
    "path": "doc/cpp-london-2017/README.md",
    "chars": 40425,
    "preview": "# reveal.js [![Build Status](https://travis-ci.org/hakimel/reveal.js.svg?branch=master)](https://travis-ci.org/hakimel/r"
  },
  {
    "path": "doc/cpp-london-2017/bower.json",
    "chars": 523,
    "preview": "{\n  \"name\": \"reveal.js\",\n  \"version\": \"3.2.0\",\n  \"main\": [\n    \"js/reveal.js\",\n    \"css/reveal.css\"\n  ],\n  \"homepage\": \""
  },
  {
    "path": "doc/cpp-london-2017/css/print/paper.css",
    "chars": 4861,
    "preview": "/* Default Print Stylesheet Template\n   by Rob Glazebrook of CSSnewbie.com\n   Last Updated: June 4, 2008\n\n   Feel free ("
  },
  {
    "path": "doc/cpp-london-2017/css/print/pdf.css",
    "chars": 3036,
    "preview": "/**\n * This stylesheet is used to print reveal.js\n * presentations to PDF.\n *\n * https://github.com/hakimel/reveal.js#pd"
  },
  {
    "path": "doc/cpp-london-2017/css/reveal.css",
    "chars": 49167,
    "preview": "/*!\n * reveal.js\n * http://lab.hakim.se/reveal-js\n * MIT licensed\n *\n * Copyright (C) 2015 Hakim El Hattab, http://hakim"
  },
  {
    "path": "doc/cpp-london-2017/css/reveal.scss",
    "chars": 36697,
    "preview": "/*!\n * reveal.js\n * http://lab.hakim.se/reveal-js\n * MIT licensed\n *\n * Copyright (C) 2015 Hakim El Hattab, http://hakim"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/README.md",
    "chars": 1605,
    "preview": "## Dependencies\n\nThemes are written using Sass to keep things modular and reduce the need for repeated selectors across "
  },
  {
    "path": "doc/cpp-london-2017/css/theme/beige.css",
    "chars": 6847,
    "preview": "/**\n * Beige theme for reveal.js.\n *\n * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se\n */\n@import url(../../l"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/black.css",
    "chars": 6264,
    "preview": "/**\n * Black theme for reveal.js. This is the opposite of the 'white' theme.\n *\n * Copyright (C) 2015 Hakim El Hattab, h"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/blood.css",
    "chars": 6694,
    "preview": "/**\n * Blood theme for reveal.js\n * Author: Walther http://github.com/Walther\n *\n * Designed to be used with highlight.j"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/league.css",
    "chars": 6915,
    "preview": "/**\n * League theme for reveal.js.\n *\n * This was the default theme pre-3.0.0.\n *\n * Copyright (C) 2011-2012 Hakim El Ha"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/moon.css",
    "chars": 6133,
    "preview": "/**\n * Solarized Dark theme for reveal.js.\n * Author: Achim Staebler\n */\n@import url(../../lib/font/league-gothic/league"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/night.css",
    "chars": 6048,
    "preview": "/**\n * Black theme for reveal.js.\n *\n * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se\n */\n@import url(https:/"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/serif.css",
    "chars": 6122,
    "preview": "/**\n * A simple theme for reveal.js presentations, similar\n * to the default theme. The accent color is brown.\n *\n * Thi"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/simple.css",
    "chars": 6255,
    "preview": "/**\n * A simple theme for reveal.js presentations, similar\n * to the default theme. The accent color is darkblue.\n *\n * "
  },
  {
    "path": "doc/cpp-london-2017/css/theme/sky.css",
    "chars": 6656,
    "preview": "/**\n * Sky theme for reveal.js.\n *\n * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se\n */\n@import url(https://f"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/solarized.css",
    "chars": 6134,
    "preview": "/**\n * Solarized Light theme for reveal.js.\n * Author: Achim Staebler\n */\n@import url(../../lib/font/league-gothic/leagu"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/source/beige.scss",
    "chars": 1225,
    "preview": "/**\n * Beige theme for reveal.js.\n *\n * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se\n */\n\n\n// Default mixins"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/source/black.scss",
    "chars": 1191,
    "preview": "/**\n * Black theme for reveal.js. This is the opposite of the 'white' theme.\n *\n * Copyright (C) 2015 Hakim El Hattab, h"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/source/blood.scss",
    "chars": 1839,
    "preview": "/**\n * Blood theme for reveal.js\n * Author: Walther http://github.com/Walther\n *\n * Designed to be used with highlight.j"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/source/league.scss",
    "chars": 1103,
    "preview": "/**\n * League theme for reveal.js.\n *\n * This was the default theme pre-3.0.0.\n *\n * Copyright (C) 2011-2012 Hakim El Ha"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/source/moon.scss",
    "chars": 1269,
    "preview": "/**\n * Solarized Dark theme for reveal.js.\n * Author: Achim Staebler\n */\n\n\n// Default mixins and settings --------------"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/source/night.scss",
    "chars": 966,
    "preview": "/**\n * Black theme for reveal.js.\n *\n * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se\n */\n\n\n// Default mixins"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/source/serif.scss",
    "chars": 991,
    "preview": "/**\n * A simple theme for reveal.js presentations, similar\n * to the default theme. The accent color is brown.\n *\n * Thi"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/source/simple.scss",
    "chars": 1161,
    "preview": "/**\n * A simple theme for reveal.js presentations, similar\n * to the default theme. The accent color is darkblue.\n *\n * "
  },
  {
    "path": "doc/cpp-london-2017/css/theme/source/sky.scss",
    "chars": 1145,
    "preview": "/**\n * Sky theme for reveal.js.\n *\n * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se\n */\n\n\n// Default mixins a"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/source/solarized.scss",
    "chars": 1409,
    "preview": "/**\n * Solarized Light theme for reveal.js.\n * Author: Achim Staebler\n */\n\n\n// Default mixins and settings -------------"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/source/white.scss",
    "chars": 1190,
    "preview": "/**\n * White theme for reveal.js. This is the opposite of the 'black' theme.\n *\n * Copyright (C) 2015 Hakim El Hattab, h"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/template/mixins.scss",
    "chars": 1619,
    "preview": "@mixin vertical-gradient( $top, $bottom ) {\n\tbackground: $top;\n\tbackground: -moz-linear-gradient( top, $top 0%, $bottom "
  },
  {
    "path": "doc/cpp-london-2017/css/theme/template/settings.scss",
    "chars": 1034,
    "preview": "// Base settings for all themes that can optionally be\n// overridden by the super-theme\n\n// Background of the presentati"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/template/theme.scss",
    "chars": 6028,
    "preview": "// Base theme template for reveal.js\n\n/*********************************************\n * GLOBAL STYLES\n *****************"
  },
  {
    "path": "doc/cpp-london-2017/css/theme/white.css",
    "chars": 6253,
    "preview": "/**\n * White theme for reveal.js. This is the opposite of the 'black' theme.\n *\n * Copyright (C) 2015 Hakim El Hattab, h"
  },
  {
    "path": "doc/cpp-london-2017/example/god_object.cpp",
    "chars": 166,
    "preview": "#include <fstream>\n#include <iostream>\n\nint main() {\n  auto value = 0;\n  {\n    std::fstream file{\"input.txt\"};\n    file "
  },
  {
    "path": "doc/cpp-london-2017/example/static_polymorphism.cpp",
    "chars": 1051,
    "preview": "#include <cassert>\n#include <fstream>\n#include <iostream>\n\ntemplate <class T>\nstruct Reader {\n  int read() { return stat"
  },
  {
    "path": "doc/cpp-london-2017/example/type_erasure.cpp",
    "chars": 1206,
    "preview": "#include <boost/type_erasure/any.hpp>\n#include <boost/type_erasure/builtin.hpp>\n#include <boost/type_erasure/free.hpp>\n#"
  },
  {
    "path": "doc/cpp-london-2017/index.html",
    "chars": 29924,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>Boost your design with C++14 dependency inj"
  },
  {
    "path": "doc/cpp-london-2017/js/reveal.js",
    "chars": 129549,
    "preview": "/*!\n * reveal.js\n * http://lab.hakim.se/reveal-js\n * MIT licensed\n *\n * Copyright (C) 2015 Hakim El Hattab, http://hakim"
  },
  {
    "path": "doc/cpp-london-2017/lib/css/zenburn.css",
    "chars": 1833,
    "preview": "/*\nZenburn style from voldmar.ru (c) Vladimir Epifanov <voldmar@voldmar.ru>\nbased on dark.css by Ivan Sagalaev\n*/\n\n.hljs"
  },
  {
    "path": "doc/cpp-london-2017/lib/font/league-gothic/LICENSE",
    "chars": 92,
    "preview": "SIL Open Font License (OFL)\nhttp://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL\n"
  },
  {
    "path": "doc/cpp-london-2017/lib/font/league-gothic/league-gothic.css",
    "chars": 308,
    "preview": "@font-face {\n    font-family: 'League Gothic';\n    src: url('league-gothic.eot');\n    src: url('league-gothic.eot?#iefix"
  },
  {
    "path": "doc/cpp-london-2017/lib/font/source-sans-pro/LICENSE",
    "chars": 4484,
    "preview": "SIL Open Font License\n\nCopyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name "
  },
  {
    "path": "doc/cpp-london-2017/lib/font/source-sans-pro/source-sans-pro.css",
    "chars": 1424,
    "preview": "@font-face {\n    font-family: 'Source Sans Pro';\n    src: url('source-sans-pro-regular.eot');\n    src: url('source-sans-"
  },
  {
    "path": "doc/cpp-london-2017/lib/js/classList.js",
    "chars": 1582,
    "preview": "/*! @source http://purl.eligrey.com/github/classList.js/blob/master/classList.js*/\nif(typeof document!==\"undefined\"&&!(\""
  },
  {
    "path": "doc/cpp-london-2017/lib/js/html5shiv.js",
    "chars": 235,
    "preview": "document.createElement('header');\ndocument.createElement('nav');\ndocument.createElement('section');\ndocument.createEleme"
  },
  {
    "path": "doc/cpp-london-2017/package.json",
    "chars": 1086,
    "preview": "{\n  \"name\": \"reveal.js\",\n  \"version\": \"3.2.0\",\n  \"description\": \"The HTML Presentation Framework\",\n  \"homepage\": \"http:/"
  },
  {
    "path": "doc/cpp-london-2017/plugin/highlight/highlight.js",
    "chars": 441180,
    "preview": "// START CUSTOM REVEAL.JS INTEGRATION\n(function() {\n\tif( typeof window.addEventListener === 'function' ) {\n\t\tvar hljs_no"
  },
  {
    "path": "doc/cpp-london-2017/plugin/markdown/example.html",
    "chars": 4171,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>reveal.js - Markdown Demo</title>\n\n\t\t<link "
  },
  {
    "path": "doc/cpp-london-2017/plugin/markdown/example.md",
    "chars": 230,
    "preview": "# Markdown Demo\n\n\n\n## External 1.1\n\nContent 1.1\n\nNote: This will only appear in the speaker notes window.\n\n\n## External "
  },
  {
    "path": "doc/cpp-london-2017/plugin/markdown/markdown.js",
    "chars": 12075,
    "preview": "/**\n * The reveal.js markdown plugin. Handles parsing of\n * markdown inside of presentations as well as loading\n * of ex"
  },
  {
    "path": "doc/cpp-london-2017/plugin/markdown/marked.js",
    "chars": 15752,
    "preview": "/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/"
  },
  {
    "path": "doc/cpp-london-2017/plugin/math/math.js",
    "chars": 1688,
    "preview": "/**\n * A plugin which enables rendering of math equations inside\n * of reveal.js slides. Essentially a thin wrapper for "
  },
  {
    "path": "doc/cpp-london-2017/plugin/multiplex/client.js",
    "chars": 369,
    "preview": "(function() {\n\tvar multiplex = Reveal.getConfig().multiplex;\n\tvar socketId = multiplex.id;\n\tvar socket = io.connect(mult"
  },
  {
    "path": "doc/cpp-london-2017/plugin/multiplex/index.js",
    "chars": 1539,
    "preview": "var http        = require('http');\nvar express\t\t= require('express');\nvar fs\t\t\t= require('fs');\nvar io\t\t\t= require('sock"
  },
  {
    "path": "doc/cpp-london-2017/plugin/multiplex/master.js",
    "chars": 819,
    "preview": "(function() {\n\n\t// Don't emit events from inside of notes windows\n\tif ( window.location.search.match( /receiver/gi ) ) {"
  },
  {
    "path": "doc/cpp-london-2017/plugin/notes/notes.html",
    "chars": 9909,
    "preview": "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\n\t\t<title>reveal.js - Slide Notes</title>\n\n\t\t<style>\n\t"
  },
  {
    "path": "doc/cpp-london-2017/plugin/notes/notes.js",
    "chars": 3865,
    "preview": "/**\n * Handles opening of and synchronization with the reveal.js\n * notes window.\n *\n * Handshake process:\n * 1. This wi"
  },
  {
    "path": "doc/cpp-london-2017/plugin/notes-server/client.js",
    "chars": 1880,
    "preview": "(function() {\n\n\t// don't emit events from inside the previews themselves\n\tif( window.location.search.match( /receiver/gi"
  }
]

// ... and 565 more files (download for full content)

About this extraction

This page contains the full source code of the krzysztof-jusiak/di GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 765 files (7.0 MB), approximately 1.9M tokens, and a symbol index with 11331 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!