diff --git a/.apidocrc.php b/.apidocrc.php
new file mode 100644
index 0000000..38d91dd
--- /dev/null
+++ b/.apidocrc.php
@@ -0,0 +1,14 @@
+withProjectName('SpaceOnFire ApiDoc')
+ ->withSourceDirectories([__DIR__ . '/src'])
+ ->withOutputDirectory(__DIR__ . '/docs')
+ ->withBaseNamespace('spaceonfire\ApiDoc');
+};
diff --git a/.editorconfig b/.editorconfig
index a57bb27..bc76248 100755
--- a/.editorconfig
+++ b/.editorconfig
@@ -7,16 +7,9 @@ root = true
charset = utf-8
end_of_line = lf
indent_size = 4
-indent_style = tab
+indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
-[**.{js,ts,jsx,tsx,less,css,sass,scss,json,yml}]
+[**.{js, ts, jsx, tsx, less, css, sass, scss, json, yml, yaml}]
indent_size = 2
-indent_style = space
-
-[**.{md,php}]
-indent_style = space
-
-[bin/**]
-indent_style = space
diff --git a/.gitattributes b/.gitattributes
index f5e8194..0132d8d 100755
--- a/.gitattributes
+++ b/.gitattributes
@@ -2,11 +2,17 @@
# https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html
# Ignore all test and documentation with "export-ignore".
+/.github export-ignore
+/bin/coverage-badge export-ignore
+/docs export-ignore
+/tests export-ignore
/.editorconfig export-ignore
/.gitattributes export-ignore
/.gitignore export-ignore
-/.github export-ignore
-/phpcs.xml.dist export-ignore
+/CODE_OF_CONDUCT.md export-ignore
+/CONTRIBUTING.md export-ignore
+/docker-compose.yml export-ignore
+/ecs.php export-ignore
+/Makefile export-ignore
+/phpstan.neon.dist export-ignore
/phpunit.xml.dist export-ignore
-/tests export-ignore
-/docs export-ignore
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000..0cb8945
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,3 @@
+liberapay: hustlahusky
+custom:
+ - https://www.paypal.me/hustlahusky
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
old mode 100644
new mode 100755
index 5b48c57..2691261
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -20,8 +20,8 @@ Not obligatory, but suggest an idea for implementing addition or change.
Include as many relevant details about the environment you experienced the bug in and how to reproduce it.
-* Version used (e.g. PHP 5.6, HHVM 3):
-* Operating system and version (e.g. Ubuntu 16.04, Windows 7):
-* Link to your project:
-* ...
-* ...
+- Version used (e.g. PHP 5.6, HHVM 3):
+- Operating system and version (e.g. Ubuntu 16.04, Windows 7):
+- Link to your project:
+- ...
+- ...
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..4180625
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,113 @@
+name: Build Pipeline
+
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ branches:
+ - master
+ workflow_dispatch:
+
+jobs:
+ composer:
+ runs-on: ubuntu-latest
+ container: spaceonfire/nginx-php-fpm:latest-7.2
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Validate composer.json
+ run: composer validate
+
+ codestyle:
+ runs-on: ubuntu-latest
+ container: spaceonfire/nginx-php-fpm:latest-7.2
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Cache Composer packages
+ id: composer-cache
+ uses: actions/cache@v2
+ env:
+ COMPOSER_CACHE_KEY: 'composer-7.2'
+ with:
+ path: vendor
+ key: ${{ env.COMPOSER_CACHE_KEY }}
+ restore-keys: ${{ env.COMPOSER_CACHE_KEY }}
+
+ - name: Install dependencies
+ if: steps.composer-cache.outputs.cache-hit != 'true'
+ run: composer install --prefer-dist --no-progress --no-suggest
+
+ - name: Check coding standard
+ run: vendor/bin/ecs check --no-progress-bar --no-interaction
+
+ phpstan:
+ runs-on: ubuntu-latest
+ container: spaceonfire/nginx-php-fpm:latest-7.2
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Cache Composer packages
+ id: composer-cache
+ uses: actions/cache@v2
+ env:
+ COMPOSER_CACHE_KEY: 'composer-7.2'
+ with:
+ path: vendor
+ key: ${{ env.COMPOSER_CACHE_KEY }}
+ restore-keys: ${{ env.COMPOSER_CACHE_KEY }}
+
+ - name: Install dependencies
+ if: steps.composer-cache.outputs.cache-hit != 'true'
+ run: composer install --prefer-dist --no-progress --no-suggest
+
+ - name: PHPStan
+ run: vendor/bin/phpstan analyse --no-progress --no-interaction --memory-limit=512M
+
+ phpunit:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ php-version:
+ - '7.2'
+ - '7.3'
+ - '7.4'
+ container: spaceonfire/nginx-php-fpm:latest-${{ matrix.php-version }}
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Cache Composer packages
+ id: composer-cache
+ uses: actions/cache@v2
+ env:
+ COMPOSER_CACHE_KEY: 'composer-${{ matrix.php-version }}'
+ with:
+ path: vendor
+ key: ${{ env.COMPOSER_CACHE_KEY }}
+ restore-keys: ${{ env.COMPOSER_CACHE_KEY }}
+
+ - name: Install dependencies
+ if: steps.composer-cache.outputs.cache-hit != 'true'
+ run: composer install --prefer-dist --no-progress --no-suggest
+
+ - name: PHPUnit
+ run: |
+ apk update
+ docker-php-ext-enable xdebug
+ vendor/bin/phpunit --no-interaction
+ cat build/phpunit/coverage.txt
+
+ - name: PHPUnit Artifacts
+ uses: actions/upload-artifact@v2
+ with:
+ name: phpunit-${{ matrix.php-version }}
+ path: build/phpunit/
+
+ - name: Generate coverage badge
+ if: matrix.php-version == '7.2' && github.event_name == 'push' && github.ref == 'refs/heads/master'
+ run: php bin/coverage-badge ${{ github.repository }}.json ${{ secrets.COVERAGE_GIST_ID }} ${{ secrets.COVERAGE_GIST_TOKEN }}
diff --git a/.gitignore b/.gitignore
index 6b3a77b..525ded9 100755
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,3 @@
-# Project folders and files to ignore
-build
-phpcs.xml
-phpunit.xml
-vendor
-
# Numerous always-ignore extensions
*.diff
*.err
@@ -18,11 +12,6 @@ vendor
*.lock
!**/yarn.lock
-# Dotenv
-.env
-.env.*
-!.env.example
-
# OS or Editor folders
.DS_Store
._*
@@ -44,3 +33,20 @@ nbproject
.directory
*.sql
*.tar*
+
+# Dotenv
+.env
+.env.*
+!.env.example
+
+# Project folders and files to ignore
+build/phpunit
+build/box/apidoc.phar
+vendor
+.phpunit.result.cache
+phpunit.xml
+phpstan.neon
+docker-compose.override.yml
+box.phar
+box.json
+!composer.lock
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
old mode 100644
new mode 100755
index 547e0a2..b6ec9f4
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -14,22 +14,19 @@ orientation.
Examples of behavior that contributes to creating a positive environment
include:
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
+- Using welcoming and inclusive language
+- Being respectful of differing viewpoints and experiences
+- Gracefully accepting constructive criticism
+- Focusing on what is best for the community
+- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
-* The use of sexualized language or imagery and unwelcome sexual attention or
-advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic
- address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
- professional setting
+- The use of sexualized language or imagery and unwelcome sexual attention or advances
+- Trolling, insulting/derogatory comments, and personal or political attacks
+- Public or private harassment
+- Publishing others' private information, such as a physical or electronic address, without explicit permission
+- Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
old mode 100644
new mode 100755
index 38284bd..9f0cf29
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -4,29 +4,24 @@ Contributions are **welcome** and will be fully **credited**.
We accept contributions via Pull Requests on [Github](https://github.com/spaceonfire/simple-php-apidoc).
-
## Pull Requests
-- **[PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)** - Check the code style with ``$ composer check-style`` and fix it with ``$ composer fix-style``.
-
+- **[PSR-12 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-12-extended-coding-style-guide.md)** -
+ Check the code style with `$ composer codestyle` and fix it with `$ composer codestyle -- --fix`.
- **Add tests!** - Your patch won't be accepted if it doesn't have tests.
-
- **Document any change in behaviour** - Make sure the `README.md` and any other relevant documentation are kept up-to-date.
-
- **Consider our release cycle** - We try to follow [SemVer v2.0.0](http://semver.org/). Randomly breaking public APIs is not an option.
-
- **Create feature branches** - Don't ask us to pull from your master branch.
-
- **One pull request per feature** - If you want to do more than one thing, send multiple pull requests.
-
-- **Send coherent history** - Make sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please [squash them](http://www.git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages) before submitting.
-
+- **Send coherent history** - Make sure each individual commit in your pull request is meaningful.
+ If you had to make multiple intermediate commits while developing,
+ please [squash them](http://www.git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages)
+ before submitting.
## Running Tests
-``` bash
+```bash
$ composer test
```
-
**Happy coding**!
diff --git a/LICENSE.md b/LICENSE.md
old mode 100644
new mode 100755
diff --git a/Makefile b/Makefile
new file mode 100755
index 0000000..63229d4
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,6 @@
+start:
+ docker-compose up -d
+ docker-compose exec app su-exec nginx bash
+
+stop:
+ docker-compose down
diff --git a/README.md b/README.md
index 19d2efa..8c81325 100755
--- a/README.md
+++ b/README.md
@@ -3,24 +3,17 @@
[![Latest Version on Packagist][ico-version]][link-packagist]
[![Software License][ico-license]](LICENSE.md)
[![Total Downloads][ico-downloads]][link-downloads]
+[![Code Coverage][ico-coverage]][link-actions]
+[![Build Status][ico-build-status]][link-actions]
Simple API documentation generator for your PHP library.
-## Structure
-
-```
-bin/ Package binaries
-docs/ API documentation
-src/ Source code
-tests/ Unit tests
-```
-
## Install
Via Composer
```bash
-$ composer require spaceonfire/simple-php-apidoc
+composer require spaceonfire/simple-php-apidoc
```
## Usage
@@ -33,12 +26,6 @@ $ composer require spaceonfire/simple-php-apidoc
Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.
-## Testing
-
-```bash
-$ composer test
-```
-
## Contributing
Please see [CONTRIBUTING](CONTRIBUTING.md) and [CODE_OF_CONDUCT](CODE_OF_CONDUCT.md) for details.
@@ -59,8 +46,10 @@ The MIT License (MIT). Please see [License File](LICENSE.md) for more informatio
[ico-version]: https://img.shields.io/packagist/v/spaceonfire/simple-php-apidoc.svg?style=flat-square
[ico-license]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square
[ico-downloads]: https://img.shields.io/packagist/dt/spaceonfire/simple-php-apidoc.svg?style=flat-square
-
+[ico-coverage]: https://img.shields.io/endpoint?style=flat-square&url=https%3A%2F%2Fgist.githubusercontent.com%2Fhustlahusky%2Fd62607c1a2e4707959b0142e0ea876cd%2Fraw%2Fspaceonfire-simple-php-apidoc.json
+[ico-build-status]: https://github.com/spaceonfire/simple-php-apidoc/workflows/Build%20Pipeline/badge.svg
[link-packagist]: https://packagist.org/packages/spaceonfire/simple-php-apidoc
[link-downloads]: https://packagist.org/packages/spaceonfire/simple-php-apidoc
[link-author]: https://github.com/hustlahusky
[link-contributors]: ../../contributors
+[link-actions]: ../../actions
diff --git a/bin/apidoc b/bin/apidoc
index cb3ccb7..00c3d93 100755
--- a/bin/apidoc
+++ b/bin/apidoc
@@ -1,41 +1,103 @@
#!/usr/bin/env php
seekInDirectory($pharName);
+} else {
+ $autoloadInclude->seekRecursivelyFrom(dirname(__DIR__));
+ $autoloadInclude->seekInWorkingDirectory();
+}
+
+$kernel = new ApiDocKernel();
+
+$kernel->configureConsoleApplication(
+ $app = new Application(),
+ $input = new ArgvInput(),
+ $output = new ConsoleOutput()
+);
-function findProjectRoot($dir = __DIR__)
+$exitCode = $app->run($input, $output);
+
+exit(max(min($exitCode, 255), 0));
+
+final class IncludeAutoload
{
- static $explored = [];
-
- if (in_array($dir, $explored, true)) {
- try {
- throw new RuntimeException('Cannot find composer installation');
- } catch (Throwable $throwable) {
- echo implode(PHP_EOL, [
- $throwable->getMessage(),
- $throwable->getTraceAsString()
- ]);
- exit(1);
- }
+ private const AUTOLOADER_NAME = '/vendor/autoload.php';
+
+ private $once;
+ private $included = [];
+
+ public function __construct(bool $once = true)
+ {
+ $this->once = $once;
}
- $explored[] = $dir;
+ public function seekInDirectory(string $dir): void
+ {
+ if ($this->once && count($this->included) > 0) {
+ return;
+ }
- if (file_exists($fileName = $dir . '/vendor/autoload.php')) {
- return $dir;
+ if (is_file($filename = $dir . self::AUTOLOADER_NAME)) {
+ $this->loadIfNotLoadedYet($filename, __METHOD__ . '() on line ' . __LINE__);
+ }
}
- return findProjectRoot(dirname($dir));
-}
+ public function seekInWorkingDirectory(): void
+ {
+ $this->seekInDirectory(getcwd());
+ }
+
+ public function seekRecursivelyFrom(string $dir): void
+ {
+ if ($this->once && count($this->included) > 0) {
+ return;
+ }
+
+ static $entered = [];
-$root = findProjectRoot();
+ if (in_array($dir, $entered, true)) {
+ throw new \RuntimeException('Cannot find autoloader');
+ }
+
+ $entered[] = $dir;
-require $root . '/vendor/autoload.php';
+ if (is_file($filename = $dir . self::AUTOLOADER_NAME)) {
+ $this->loadIfNotLoadedYet($filename, __METHOD__ . '() on line ' . __LINE__);
+ return;
+ }
-$composer = json_decode(file_get_contents($root . '/composer.json'), true);
+ $this->seekRecursivelyFrom(dirname($dir));
+ }
-$application = new Application();
-$command = $application->add(new GeneratorCommand($composer));
-$application->setDefaultCommand($command->getName(), true);
-$application->run();
+ private function loadIfNotLoadedYet(string $file, string $location): void
+ {
+ if ($this->isDebugOption()) {
+ echo sprintf('File "%s" is about to be loaded in "%s"' . PHP_EOL, $file, $location);
+ }
+
+ $this->included[] = $file;
+
+ require_once $file;
+ }
+
+ private function isDebugOption(): bool
+ {
+ return !empty(array_intersect($_SERVER['argv'], ['-vvv', '--debug']));
+ }
+}
diff --git a/bin/box.sh b/bin/box.sh
new file mode 100644
index 0000000..f71b66c
--- /dev/null
+++ b/bin/box.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+wget https://github.com/box-project/box/releases/download/3.9.1/box.phar
+
+composer install --no-dev --prefer-dist
+
+php -d memory_limit=512M box.phar compile --no-parallel
diff --git a/bin/coverage-badge b/bin/coverage-badge
new file mode 100644
index 0000000..c0f37be
--- /dev/null
+++ b/bin/coverage-badge
@@ -0,0 +1,129 @@
+#!/usr/bin/env php
+
+ */
+
+try {
+ $arguments = $argv;
+ array_shift($arguments);
+
+ [$filename, $gistId, $gistToken] = $arguments + [null, null, null];
+
+ if ($filename === null) {
+ throw new InvalidArgumentException('Badge filename not specified');
+ }
+ if ($gistId === null) {
+ throw new InvalidArgumentException('Gist id not specified');
+ }
+ if ($gistToken === null) {
+ throw new InvalidArgumentException('Gist token not specified');
+ }
+
+ $filename = str_replace(['/', '_'], '-', $filename);
+
+ $coverageFile = dirname(__DIR__) . '/build/coverage.txt';
+
+ if (!file_exists($coverageFile)) {
+ throw new RuntimeException(sprintf('Text coverage report not found at %s', $coverageFile));
+ }
+
+ $coverageFileContents = file_get_contents($coverageFile);
+
+ preg_match('/^\s+Lines:\s+(\d+\.\d+)\%/m', $coverageFileContents, $matches);
+
+ if (isset($matches[1]) && is_numeric($matches[1])) {
+ $coverage = (float)$matches[1];
+
+ /** @noinspection TypeUnsafeComparisonInspection */
+ $message = sprintf(
+ '%s%%',
+ (string)$coverage == (int)$coverage
+ ? (string)(int)$coverage
+ : number_format($coverage, 1)
+ );
+
+ $color = 'red';
+
+ if ($coverage >= 30) {
+ $color = 'orange';
+ }
+ if ($coverage >= 50) {
+ $color = 'yellow';
+ }
+ if ($coverage >= 65) {
+ $color = 'yellowgreen';
+ }
+ if ($coverage >= 80) {
+ $color = 'green';
+ }
+ if ($coverage >= 95) {
+ $color = 'brightgreen';
+ }
+ } else {
+ $message = 'N/A';
+ $color = 'lightgrey';
+ }
+
+ $badgeInfo = [
+ 'schemaVersion' => 1,
+ 'label' => 'coverage',
+ 'message' => $message,
+ 'color' => $color,
+ ];
+
+ $postFields = json_encode([
+ 'files' => [
+ $filename => [
+ 'content' => json_encode($badgeInfo),
+ ],
+ ],
+ ]);
+
+ $curl = curl_init();
+
+ curl_setopt_array($curl, [
+ CURLOPT_URL => sprintf('https://api.github.com/gists/%s', $gistId),
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_ENCODING => '',
+ CURLOPT_MAXREDIRS => 10,
+ CURLOPT_TIMEOUT => 30,
+ CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
+ CURLOPT_CUSTOMREQUEST => 'PATCH',
+ CURLOPT_POSTFIELDS => $postFields,
+ CURLOPT_HTTPHEADER => [
+ 'accept: application/vnd.github.v3+json',
+ sprintf('authorization: Bearer %s', $gistToken),
+ 'content-type: application/json',
+ 'user-agent: curl',
+ ],
+ ]);
+
+ $response = curl_exec($curl);
+ $json = json_decode($response, true);
+ $err = curl_error($curl);
+ $httpCode = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
+
+ curl_close($curl);
+
+ if ($err) {
+ throw new RuntimeException(sprintf('Curl error: %s', $err));
+ }
+
+ if ($httpCode > 399) {
+ $exceptionMessage = sprintf('Request error: %s', $json['message'] ?? $response);
+
+ if (isset($json['errors'])) {
+ $exceptionMessage .= PHP_EOL . PHP_EOL . 'Errors: ' . json_encode($json['errors'], JSON_PRETTY_PRINT);
+ }
+
+ throw new RuntimeException($exceptionMessage);
+ }
+
+ echo 'Coverage badge info uploaded' . PHP_EOL;
+ exit(0);
+} catch (Throwable $e) {
+ fwrite(STDERR, $e->getMessage() . PHP_EOL);
+ exit(1);
+}
diff --git a/box.json.dist b/box.json.dist
new file mode 100644
index 0000000..5c81375
--- /dev/null
+++ b/box.json.dist
@@ -0,0 +1,17 @@
+{
+ "alias": "apidoc.phar",
+ "output": "build/box/apidoc.phar",
+ "force-autodiscovery": true,
+ "directories-bin": [
+ "resources"
+ ],
+ "directories": [
+ "vendor/twig/twig/src/Node/Expression/Test"
+ ],
+ "files": [
+ "vendor/twig/twig/src/TwigTest.php"
+ ],
+ "compactors": [
+ "KevinGH\\Box\\Compactor\\PhpScoper"
+ ]
+}
diff --git a/build/box/.gitignore b/build/box/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/build/box/composer.json b/build/box/composer.json
new file mode 100644
index 0000000..e4f8b64
--- /dev/null
+++ b/build/box/composer.json
@@ -0,0 +1,32 @@
+{
+ "name": "spaceonfire/apidoc",
+ "type": "library",
+ "description": "Simple API documentation generator for your PHP library",
+ "keywords": [
+ "phpdoc",
+ "apidoc",
+ "markdown"
+ ],
+ "homepage": "https://github.com/spaceonfire/apidoc",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Constantine Karnaukhov",
+ "email": "genteelknight@gmail.com",
+ "homepage": "https://www.onfire.space",
+ "role": "Maintainer"
+ }
+ ],
+ "require": {
+ "php": "^7.2|^8.0",
+ "ext-json": "*"
+ },
+ "bin": [
+ "apidoc.phar"
+ ],
+ "extra": {
+ "branch-alias": {
+ "dev-stable": "2.0-dev"
+ }
+ }
+}
diff --git a/composer.json b/composer.json
index 7b8608d..90ff862 100755
--- a/composer.json
+++ b/composer.json
@@ -1,5 +1,5 @@
{
- "name": "spaceonfire/simple-php-apidoc",
+ "name": "spaceonfire/apidoc",
"type": "library",
"description": "Simple API documentation generator for your PHP library",
"keywords": [
@@ -7,7 +7,7 @@
"apidoc",
"markdown"
],
- "homepage": "https://github.com/spaceonfire/simple-php-apidoc",
+ "homepage": "https://github.com/spaceonfire/apidoc",
"license": "MIT",
"authors": [
{
@@ -18,28 +18,49 @@
}
],
"require": {
- "php": "~7.2",
+ "php": "^7.2|^8.0",
"ext-json": "*",
- "nikic/php-parser": "^4.0",
- "phpdocumentor/reflection": "^4.0.0-beta",
- "phpdocumentor/reflection-docblock": "^5.0.0-alpha5",
- "spaceonfire/collection": "^1.2.0",
- "symfony/console": "^4.3.5",
- "symfony/filesystem": "^4.3.5",
- "symfony/finder": "^4.3.5"
+ "composer/semver": "^3.2",
+ "guzzlehttp/psr7": "^1.6.1",
+ "jawira/case-converter": "^3.4.1",
+ "nikic/php-parser": "^4.10",
+ "phpdocumentor/reflection": "^4.0",
+ "phpdocumentor/reflection-docblock": "^5.1",
+ "psr/container": "^1.0",
+ "psr/http-message": "^1.0",
+ "roave/better-reflection": "^4.3",
+ "spaceonfire/collection": "^2.0",
+ "spaceonfire/container": "^2.3",
+ "spaceonfire/type": "^1.3",
+ "spaceonfire/value-object": "^1.6",
+ "symfony/console": "^5.1",
+ "symfony/filesystem": "^5.1",
+ "symfony/finder": "^5.1",
+ "symfony/polyfill-php80": "^1.20",
+ "symfony/translation": "^5.1",
+ "symfony/translation-contracts": "^2.3",
+ "symfony/twig-bridge": "^5.1",
+ "symfony/var-dumper": "^5.1",
+ "symfony/var-exporter": "^5.1",
+ "twig/twig": "^3.0",
+ "webmozart/assert": "^1.5",
+ "webmozart/path-util": "^2.3"
},
"require-dev": {
- "phpunit/phpunit": ">=7.0",
- "squizlabs/php_codesniffer": "^3.0"
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-webmozart-assert": "^0.12",
+ "phpunit/phpunit": "^8.5",
+ "roave/security-advisories": "dev-master",
+ "symplify/easy-coding-standard-prefixed": "^8.3"
},
"autoload": {
"psr-4": {
- "spaceonfire\\SimplePhpApiDoc\\": "src"
+ "spaceonfire\\ApiDoc\\": "src"
}
},
"autoload-dev": {
"psr-4": {
- "spaceonfire\\SimplePhpApiDoc\\": "tests"
+ "spaceonfire\\ApiDoc\\": "tests"
}
},
"bin": [
@@ -47,13 +68,13 @@
],
"scripts": {
"test": "phpunit",
- "check-style": "phpcs src tests",
- "fix-style": "phpcbf src tests",
- "apidoc": "@php ./bin/apidoc --propertiesVisibility=public --propertiesVisibility=protected"
+ "codestyle": "ecs check --ansi",
+ "lint": "phpstan analyze --memory-limit=512M --ansi",
+ "apidoc": "@php ./bin/apidoc generate"
},
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-stable": "2.0-dev"
}
},
"config": {
diff --git a/composer.lock b/composer.lock
new file mode 100755
index 0000000..e3b777b
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,4790 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "59eb3cb7ec528350d7f4f8125684f323",
+ "packages": [
+ {
+ "name": "composer/semver",
+ "version": "3.2.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/a02fdf930a3c1c3ed3a49b5f63859c0c20e10464",
+ "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12.54",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-13T08:59:24+00:00"
+ },
+ {
+ "name": "guzzlehttp/psr7",
+ "version": "1.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/psr7.git",
+ "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
+ "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0",
+ "psr/http-message": "~1.0",
+ "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
+ },
+ "provide": {
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "ext-zlib": "*",
+ "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
+ },
+ "suggest": {
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.7-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Psr7\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Tobias Schultze",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "PSR-7 message implementation that also provides common utility methods",
+ "keywords": [
+ "http",
+ "message",
+ "psr-7",
+ "request",
+ "response",
+ "stream",
+ "uri",
+ "url"
+ ],
+ "time": "2020-09-30T07:37:11+00:00"
+ },
+ {
+ "name": "jawira/case-converter",
+ "version": "v3.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jawira/case-converter.git",
+ "reference": "756089a523ce268fb173a9f4af4ca95629b3a7f0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jawira/case-converter/zipball/756089a523ce268fb173a9f4af4ca95629b3a7f0",
+ "reference": "756089a523ce268fb173a9f4af4ca95629b3a7f0",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mbstring": "*",
+ "php": "^7.1"
+ },
+ "suggest": {
+ "pds/skeleton": "PHP Package Development Standards",
+ "phing/phing": "PHP Build Tool"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Jawira\\CaseConverter\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jawira Portugal",
+ "email": "dev@tugal.be",
+ "homepage": "http://jawira.com/"
+ }
+ ],
+ "description": "Convert strings between 13 naming conventions: Snake case, Camel case, Pascal case, Kebab case, Ada case, Train case, Cobol case, Macro case, Upper case, Lower case, Sentence case, Title case and Dot notation.",
+ "homepage": "https://jawira.github.io/case-converter/",
+ "keywords": [
+ "Ada case",
+ "Cobol case",
+ "Macro case",
+ "Train case",
+ "camel case",
+ "dot notation",
+ "kebab case",
+ "lower case",
+ "pascal case",
+ "sentence case",
+ "snake case",
+ "title case",
+ "upper case"
+ ],
+ "time": "2019-12-15T14:31:43+00:00"
+ },
+ {
+ "name": "jetbrains/phpstorm-stubs",
+ "version": "v2019.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/JetBrains/phpstorm-stubs.git",
+ "reference": "883b6facd78e01c0743b554af86fa590c2573f40"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/JetBrains/phpstorm-stubs/zipball/883b6facd78e01c0743b554af86fa590c2573f40",
+ "reference": "883b6facd78e01c0743b554af86fa590c2573f40",
+ "shasum": ""
+ },
+ "require-dev": {
+ "nikic/php-parser": "^4",
+ "php": "^7.1",
+ "phpdocumentor/reflection-docblock": "^4.3",
+ "phpunit/phpunit": "^7"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "PhpStormStubsMap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "description": "PHP runtime & extensions header files for PhpStorm",
+ "homepage": "https://www.jetbrains.com/phpstorm",
+ "keywords": [
+ "autocomplete",
+ "code",
+ "inference",
+ "inspection",
+ "jetbrains",
+ "phpstorm",
+ "stubs",
+ "type"
+ ],
+ "time": "2019-12-05T16:56:26+00:00"
+ },
+ {
+ "name": "laminas/laminas-hydrator",
+ "version": "3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-hydrator.git",
+ "reference": "e75fbff6ce3cbd2b72796a3a9890c3a150d452f5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-hydrator/zipball/e75fbff6ce3cbd2b72796a3a9890c3a150d452f5",
+ "reference": "e75fbff6ce3cbd2b72796a3a9890c3a150d452f5",
+ "shasum": ""
+ },
+ "require": {
+ "laminas/laminas-stdlib": "^3.2.1",
+ "laminas/laminas-zendframework-bridge": "^1.0",
+ "php": "^7.2"
+ },
+ "replace": {
+ "zendframework/zend-hydrator": "^3.0.2"
+ },
+ "require-dev": {
+ "laminas/laminas-coding-standard": "~1.0.0",
+ "laminas/laminas-eventmanager": "^3.2.1",
+ "laminas/laminas-modulemanager": "^2.8",
+ "laminas/laminas-serializer": "^2.9",
+ "laminas/laminas-servicemanager": "^3.3.2",
+ "phpspec/prophecy": ">=1.10.2",
+ "phpstan/phpstan": "^0.10.5",
+ "phpunit/phpunit": "^8.5.2 || ^9.0"
+ },
+ "suggest": {
+ "laminas/laminas-eventmanager": "^3.2, to support aggregate hydrator usage",
+ "laminas/laminas-serializer": "^2.9, to use the SerializableStrategy",
+ "laminas/laminas-servicemanager": "^3.3, to support hydrator plugin manager usage"
+ },
+ "type": "library",
+ "extra": {
+ "laminas": {
+ "component": "Laminas\\Hydrator",
+ "config-provider": "Laminas\\Hydrator\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Laminas\\Hydrator\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Serialize objects to arrays, and vice versa",
+ "homepage": "https://laminas.dev",
+ "keywords": [
+ "hydrator",
+ "laminas"
+ ],
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2020-10-06T14:59:01+00:00"
+ },
+ {
+ "name": "laminas/laminas-stdlib",
+ "version": "3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-stdlib.git",
+ "reference": "2b18347625a2f06a1a485acfbc870f699dbe51c6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/2b18347625a2f06a1a485acfbc870f699dbe51c6",
+ "reference": "2b18347625a2f06a1a485acfbc870f699dbe51c6",
+ "shasum": ""
+ },
+ "require": {
+ "laminas/laminas-zendframework-bridge": "^1.0",
+ "php": "^5.6 || ^7.0"
+ },
+ "replace": {
+ "zendframework/zend-stdlib": "self.version"
+ },
+ "require-dev": {
+ "laminas/laminas-coding-standard": "~1.0.0",
+ "phpbench/phpbench": "^0.13",
+ "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2.x-dev",
+ "dev-develop": "3.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Laminas\\Stdlib\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "SPL extensions, array utilities, error handlers, and more",
+ "homepage": "https://laminas.dev",
+ "keywords": [
+ "laminas",
+ "stdlib"
+ ],
+ "time": "2019-12-31T17:51:15+00:00"
+ },
+ {
+ "name": "laminas/laminas-zendframework-bridge",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-zendframework-bridge.git",
+ "reference": "6ede70583e101030bcace4dcddd648f760ddf642"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6ede70583e101030bcace4dcddd648f760ddf642",
+ "reference": "6ede70583e101030bcace4dcddd648f760ddf642",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3",
+ "squizlabs/php_codesniffer": "^3.5"
+ },
+ "type": "library",
+ "extra": {
+ "laminas": {
+ "module": "Laminas\\ZendFrameworkBridge"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/autoload.php"
+ ],
+ "psr-4": {
+ "Laminas\\ZendFrameworkBridge\\": "src//"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Alias legacy ZF class names to Laminas Project equivalents.",
+ "keywords": [
+ "ZendFramework",
+ "autoloading",
+ "laminas",
+ "zf"
+ ],
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2020-09-14T14:23:00+00:00"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.10.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "658f1be311a230e0907f5dfe0213742aff0596de"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/658f1be311a230e0907f5dfe0213742aff0596de",
+ "reference": "658f1be311a230e0907f5dfe0213742aff0596de",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "time": "2020-09-26T10:30:38+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection",
+ "version": "4.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/Reflection.git",
+ "reference": "447928a45710d6313e68774cf12b5f730b909baa"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/Reflection/zipball/447928a45710d6313e68774cf12b5f730b909baa",
+ "reference": "447928a45710d6313e68774cf12b5f730b909baa",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.0",
+ "php": ">=7.2",
+ "phpdocumentor/reflection-common": "^2.0",
+ "phpdocumentor/reflection-docblock": "^5",
+ "phpdocumentor/type-resolver": "^1.0",
+ "psr/log": "~1.0",
+ "webmozart/assert": "^1.0"
+ },
+ "require-dev": {
+ "mikey179/vfsstream": "~1.2",
+ "mockery/mockery": "~1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-4.x": "4.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\": "src/phpDocumentor"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Reflection library to do Static Analysis for PHP Projects",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "time": "2020-06-19T18:26:14+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "time": "2020-06-27T09:03:43+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "time": "2020-09-03T19:13:55+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "time": "2020-09-17T18:55:26+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "time": "2017-02-14T16:28:37+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "time": "2016-08-06T14:39:51+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2020-03-23T09:12:05+00:00"
+ },
+ {
+ "name": "ralouphie/getallheaders",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ralouphie/getallheaders.git",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpunit/phpunit": "^5 || ^6.5"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/getallheaders.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ralph Khattar",
+ "email": "ralph.khattar@gmail.com"
+ }
+ ],
+ "description": "A polyfill for getallheaders.",
+ "time": "2019-03-08T08:55:37+00:00"
+ },
+ {
+ "name": "roave/better-reflection",
+ "version": "4.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Roave/BetterReflection.git",
+ "reference": "aa017e698b47feed410721f3d20e2bacfcba59d5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Roave/BetterReflection/zipball/aa017e698b47feed410721f3d20e2bacfcba59d5",
+ "reference": "aa017e698b47feed410721f3d20e2bacfcba59d5",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "jetbrains/phpstorm-stubs": "2019.3",
+ "nikic/php-parser": "^4.4.0",
+ "php": ">=7.2.0,<7.5.0",
+ "phpdocumentor/reflection-docblock": "^5.1.0",
+ "phpdocumentor/type-resolver": "^1.1.0",
+ "roave/signature": "^1.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^7.0.2",
+ "phpstan/phpstan": "^0.12.25",
+ "phpunit/phpunit": "^8.5.4",
+ "vimeo/psalm": "3.11.2"
+ },
+ "suggest": {
+ "composer/composer": "Required to use the ComposerSourceLocator"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Roave\\BetterReflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "James Titcumb",
+ "email": "james@asgrim.com",
+ "homepage": "https://github.com/asgrim"
+ },
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ },
+ {
+ "name": "Gary Hockin",
+ "email": "gary@roave.com",
+ "homepage": "https://github.com/geeh"
+ },
+ {
+ "name": "Jaroslav Hanslík",
+ "email": "kukulich@kukulich.cz",
+ "homepage": "https://github.com/kukulich"
+ }
+ ],
+ "description": "Better Reflection - an improved code reflection API",
+ "time": "2020-05-28T14:10:32+00:00"
+ },
+ {
+ "name": "roave/signature",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Roave/Signature.git",
+ "reference": "c4e8a59946bad694ab5682a76e7884a9157a8a2c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Roave/Signature/zipball/c4e8a59946bad694ab5682a76e7884a9157a8a2c",
+ "reference": "c4e8a59946bad694ab5682a76e7884a9157a8a2c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^7.2"
+ },
+ "require-dev": {
+ "infection/infection": "^0.7.1",
+ "phpunit/phpunit": "^7.0",
+ "squizlabs/php_codesniffer": "^3.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Roave\\Signature\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Sign and verify stuff",
+ "time": "2020-10-01T07:27:11+00:00"
+ },
+ {
+ "name": "spaceonfire/collection",
+ "version": "2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spaceonfire/collection.git",
+ "reference": "d54d076803d0b8b63b0040dc901f206b4fef10da"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spaceonfire/collection/zipball/d54d076803d0b8b63b0040dc901f206b4fef10da",
+ "reference": "d54d076803d0b8b63b0040dc901f206b4fef10da",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": "^7.2",
+ "spaceonfire/criteria": "^1.0",
+ "spaceonfire/type": "^1.2",
+ "symfony/polyfill-php73": "^1.14",
+ "webmozart/assert": "^1.3"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-strict-rules": "^0.12",
+ "phpstan/phpstan-webmozart-assert": "^0.12",
+ "phpunit/phpunit": "^8.0",
+ "roave/security-advisories": "dev-master",
+ "symplify/easy-coding-standard-prefixed": "^8.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "spaceonfire\\Collection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Constantine Karnaukhov",
+ "email": "genteelknight@gmail.com",
+ "homepage": "https://www.onfire.space",
+ "role": "Maintainer"
+ }
+ ],
+ "description": "Framework agnostic PHP collections",
+ "homepage": "https://github.com/spaceonfire/collection",
+ "keywords": [
+ "collection"
+ ],
+ "funding": [
+ {
+ "url": "https://liberapay.com/hustlahusky",
+ "type": "liberapay"
+ }
+ ],
+ "time": "2020-10-13T18:04:03+00:00"
+ },
+ {
+ "name": "spaceonfire/container",
+ "version": "2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spaceonfire/container.git",
+ "reference": "e6251fc80d0e549a3a67897c90d27b5f6a5faaa7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spaceonfire/container/zipball/e6251fc80d0e549a3a67897c90d27b5f6a5faaa7",
+ "reference": "e6251fc80d0e549a3a67897c90d27b5f6a5faaa7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2",
+ "psr/container": "^1.0",
+ "spaceonfire/collection": "^2.0"
+ },
+ "provide": {
+ "psr/container-implementation": "^1.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12",
+ "phpunit/phpunit": "^8.5",
+ "roave/security-advisories": "dev-master",
+ "symplify/easy-coding-standard-prefixed": "^8.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "spaceonfire\\Container\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Constantine Karnaukhov",
+ "email": "genteelknight@gmail.com",
+ "homepage": "https://www.onfire.space/",
+ "role": "Maintainer"
+ }
+ ],
+ "description": "Small yet powerful implementation of PSR-11 compatible dependency injection container",
+ "homepage": "https://github.com/spaceonfire/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "dependency",
+ "di",
+ "injection",
+ "inversion of control",
+ "ioc",
+ "provider",
+ "psr11",
+ "service",
+ "spaceonfire"
+ ],
+ "funding": [
+ {
+ "url": "https://liberapay.com/hustlahusky",
+ "type": "liberapay"
+ }
+ ],
+ "time": "2020-10-24T10:57:03+00:00"
+ },
+ {
+ "name": "spaceonfire/criteria",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spaceonfire/criteria.git",
+ "reference": "7bc2c1c0e9ed23dbf496b68a8de14e4e1d567bf8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spaceonfire/criteria/zipball/7bc2c1c0e9ed23dbf496b68a8de14e4e1d567bf8",
+ "reference": "7bc2c1c0e9ed23dbf496b68a8de14e4e1d567bf8",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2",
+ "symfony/property-access": "^4.0|^5.0",
+ "webmozart/assert": "^1.3",
+ "webmozart/expression": "^1.0"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.6.4",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-webmozart-assert": "^0.12",
+ "phpunit/phpunit": "^8.0",
+ "roave/security-advisories": "dev-master",
+ "spiral/pagination": "^2.2",
+ "symplify/easy-coding-standard-prefixed": "7.3.17"
+ },
+ "suggest": {
+ "spiral/pagination": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "spaceonfire\\Criteria\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Constantine Karnaukhov",
+ "email": "genteelknight@gmail.com",
+ "homepage": "https://www.onfire.space",
+ "role": "Maintainer"
+ }
+ ],
+ "description": "Criteria help you to declare rules to filter datasets",
+ "homepage": "https://github.com/spaceonfire/criteria",
+ "keywords": [
+ "criteria",
+ "spaceonfire"
+ ],
+ "funding": [
+ {
+ "url": "https://liberapay.com/hustlahusky",
+ "type": "liberapay"
+ }
+ ],
+ "time": "2020-09-27T10:29:24+00:00"
+ },
+ {
+ "name": "spaceonfire/laminas-hydrator-bridge",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spaceonfire/laminas-hydrator-bridge.git",
+ "reference": "d6292a573b8d26702c821aed9af7fe07eb9a2ba4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spaceonfire/laminas-hydrator-bridge/zipball/d6292a573b8d26702c821aed9af7fe07eb9a2ba4",
+ "reference": "d6292a573b8d26702c821aed9af7fe07eb9a2ba4",
+ "shasum": ""
+ },
+ "require": {
+ "laminas/laminas-hydrator": "^2.4|^3.0",
+ "php": "^7.2"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12",
+ "phpunit/phpunit": "^8.5",
+ "roave/security-advisories": "dev-master",
+ "spaceonfire/type": "^1.1",
+ "symplify/easy-coding-standard-prefixed": "^8.3"
+ },
+ "suggest": {
+ "spaceonfire/type": "Required to use ScalarStrategy"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "spaceonfire\\LaminasHydratorBridge\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Constantine Karnaukhov",
+ "email": "genteelknight@gmail.com",
+ "homepage": "https://www.onfire.space",
+ "role": "Maintainer"
+ }
+ ],
+ "description": "Provides integration for Laminas Hydrator with some spaceonfire libraries",
+ "homepage": "https://github.com/spaceonfire/laminas-hydrator-bridge",
+ "keywords": [
+ "hydrator",
+ "laminas",
+ "laminas-hydrator",
+ "spaceonfire"
+ ],
+ "funding": [
+ {
+ "url": "https://liberapay.com/hustlahusky",
+ "type": "liberapay"
+ }
+ ],
+ "time": "2020-10-05T06:13:01+00:00"
+ },
+ {
+ "name": "spaceonfire/type",
+ "version": "1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spaceonfire/type.git",
+ "reference": "3b15ca388980ba3876b1fa7c518a35ce963bd9d9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spaceonfire/type/zipball/3b15ca388980ba3876b1fa7c518a35ce963bd9d9",
+ "reference": "3b15ca388980ba3876b1fa7c518a35ce963bd9d9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2",
+ "webmozart/assert": "^1.3"
+ },
+ "require-dev": {
+ "ext-json": "*",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-webmozart-assert": "^0.12",
+ "phpunit/phpunit": "^8.0",
+ "roave/security-advisories": "dev-master",
+ "symplify/easy-coding-standard-prefixed": "^8.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "spaceonfire\\Type\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Constantine Karnaukhov",
+ "email": "genteelknight@gmail.com",
+ "homepage": "https://www.onfire.space",
+ "role": "Maintainer"
+ }
+ ],
+ "description": "Collection of objects that provides ability of checking value types",
+ "homepage": "https://github.com/spaceonfire/type",
+ "keywords": [
+ "spaceonfire",
+ "type"
+ ],
+ "funding": [
+ {
+ "url": "https://liberapay.com/hustlahusky",
+ "type": "liberapay"
+ }
+ ],
+ "time": "2020-10-17T17:58:12+00:00"
+ },
+ {
+ "name": "spaceonfire/value-object",
+ "version": "1.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spaceonfire/value-object.git",
+ "reference": "bb8b85f0c118f0f75fb4ef803e22079fa4289056"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spaceonfire/value-object/zipball/bb8b85f0c118f0f75fb4ef803e22079fa4289056",
+ "reference": "bb8b85f0c118f0f75fb4ef803e22079fa4289056",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "guzzlehttp/psr7": "^1.6.1",
+ "jawira/case-converter": "^3.4.1",
+ "php": "^7.2",
+ "spaceonfire/laminas-hydrator-bridge": "^1.0",
+ "webmozart/assert": "^1.6"
+ },
+ "require-dev": {
+ "laminas/laminas-hydrator": "^2.4|^3.0",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-webmozart-assert": "^0.12",
+ "phpunit/phpunit": "^8.0",
+ "ramsey/uuid": "^3.9|^4.0",
+ "slevomat/coding-standard": "^6.3.10",
+ "symplify/easy-coding-standard-prefixed": "^8.3"
+ },
+ "suggest": {
+ "laminas/laminas-hydrator": "There is hydrator strategy integration for this package",
+ "ramsey/uuid": "To use UuidValue"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.6-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "spaceonfire\\ValueObject\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Constantine Karnaukhov",
+ "email": "genteelknight@gmail.com",
+ "homepage": "https://www.onfire.space/",
+ "role": "Maintainer"
+ }
+ ],
+ "homepage": "https://github.com/spaceonfire/value-object",
+ "keywords": [
+ "spaceonfire",
+ "value-object"
+ ],
+ "funding": [
+ {
+ "url": "https://liberapay.com/hustlahusky",
+ "type": "liberapay"
+ }
+ ],
+ "time": "2020-10-06T16:47:16+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v5.1.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "e0b2c29c0fa6a69089209bbe8fcff4df2a313d0e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/e0b2c29c0fa6a69089209bbe8fcff4df2a313d0e",
+ "reference": "e0b2c29c0fa6a69089209bbe8fcff4df2a313d0e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php73": "^1.8",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/service-contracts": "^1.1|^2",
+ "symfony/string": "^5.1"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<4.4",
+ "symfony/dotenv": "<5.1",
+ "symfony/event-dispatcher": "<4.4",
+ "symfony/lock": "<4.4",
+ "symfony/process": "<4.4"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/event-dispatcher": "^4.4|^5.0",
+ "symfony/lock": "^4.4|^5.0",
+ "symfony/process": "^4.4|^5.0",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-24T12:01:57+00:00"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v5.1.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "df08650ea7aee2d925380069c131a66124d79177"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/df08650ea7aee2d925380069c131a66124d79177",
+ "reference": "df08650ea7aee2d925380069c131a66124d79177",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Filesystem Component",
+ "homepage": "https://symfony.com",
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-24T12:01:57+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v5.1.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "e70eb5a69c2ff61ea135a13d2266e8914a67b3a0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/e70eb5a69c2ff61ea135a13d2266e8914a67b3a0",
+ "reference": "e70eb5a69c2ff61ea135a13d2266e8914a67b3a0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-24T12:01:57+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41",
+ "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c",
+ "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "727d1096295d807c309fb01a851577302394c897"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897",
+ "reference": "727d1096295d807c309fb01a851577302394c897",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed",
+ "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.20.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+ "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.20-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T14:02:19+00:00"
+ },
+ {
+ "name": "symfony/property-access",
+ "version": "v5.1.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/property-access.git",
+ "reference": "5d77df9a88600797d02c7937c153965ba3537933"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/5d77df9a88600797d02c7937c153965ba3537933",
+ "reference": "5d77df9a88600797d02c7937c153965ba3537933",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/property-info": "^5.1.1"
+ },
+ "require-dev": {
+ "symfony/cache": "^4.4|^5.0"
+ },
+ "suggest": {
+ "psr/cache-implementation": "To cache access methods."
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\PropertyAccess\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony PropertyAccess Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "access",
+ "array",
+ "extraction",
+ "index",
+ "injection",
+ "object",
+ "property",
+ "property path",
+ "reflection"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-24T12:01:57+00:00"
+ },
+ {
+ "name": "symfony/property-info",
+ "version": "v5.1.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/property-info.git",
+ "reference": "fc15c51f829887b62a94a917ba793f51e80ea3e1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/fc15c51f829887b62a94a917ba793f51e80ea3e1",
+ "reference": "fc15c51f829887b62a94a917ba793f51e80ea3e1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/string": "^5.1"
+ },
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "<3.2.2",
+ "phpdocumentor/type-resolver": "<0.3.0",
+ "symfony/dependency-injection": "<4.4"
+ },
+ "require-dev": {
+ "doctrine/annotations": "~1.7",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
+ "symfony/cache": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/serializer": "^4.4|^5.0"
+ },
+ "suggest": {
+ "phpdocumentor/reflection-docblock": "To use the PHPDoc",
+ "psr/cache-implementation": "To cache results",
+ "symfony/doctrine-bridge": "To use Doctrine metadata",
+ "symfony/serializer": "To use Serializer metadata"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\PropertyInfo\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Kévin Dunglas",
+ "email": "dunglas@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Property Info Component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "doctrine",
+ "phpdoc",
+ "property",
+ "symfony",
+ "type",
+ "validator"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-24T12:01:57+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+ "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/container": "^1.0"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-09-07T11:33:47+00:00"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v5.1.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "a97573e960303db71be0dd8fda9be3bca5e0feea"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/a97573e960303db71be0dd8fda9be3bca5e0feea",
+ "reference": "a97573e960303db71be0dd8fda9be3bca5e0feea",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "~1.15"
+ },
+ "require-dev": {
+ "symfony/error-handler": "^4.4|^5.0",
+ "symfony/http-client": "^4.4|^5.0",
+ "symfony/translation-contracts": "^1.1|^2",
+ "symfony/var-exporter": "^4.4|^5.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "files": [
+ "Resources/functions.php"
+ ],
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony String component",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-24T12:01:57+00:00"
+ },
+ {
+ "name": "symfony/translation",
+ "version": "v5.1.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation.git",
+ "reference": "27980838fd261e04379fa91e94e81e662fe5a1b6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/27980838fd261e04379fa91e94e81e662fe5a1b6",
+ "reference": "27980838fd261e04379fa91e94e81e662fe5a1b6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/translation-contracts": "^2"
+ },
+ "conflict": {
+ "symfony/config": "<4.4",
+ "symfony/dependency-injection": "<5.0",
+ "symfony/http-kernel": "<5.0",
+ "symfony/twig-bundle": "<5.0",
+ "symfony/yaml": "<4.4"
+ },
+ "provide": {
+ "symfony/translation-implementation": "2.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/console": "^4.4|^5.0",
+ "symfony/dependency-injection": "^5.0",
+ "symfony/finder": "^4.4|^5.0",
+ "symfony/http-kernel": "^5.0",
+ "symfony/intl": "^4.4|^5.0",
+ "symfony/service-contracts": "^1.1.2|^2",
+ "symfony/yaml": "^4.4|^5.0"
+ },
+ "suggest": {
+ "psr/log-implementation": "To use logging capability in translator",
+ "symfony/config": "",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Translation Component",
+ "homepage": "https://symfony.com",
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-24T12:01:57+00:00"
+ },
+ {
+ "name": "symfony/translation-contracts",
+ "version": "v2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation-contracts.git",
+ "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/e2eaa60b558f26a4b0354e1bbb25636efaaad105",
+ "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5"
+ },
+ "suggest": {
+ "symfony/translation-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Translation\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to translation",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-09-28T13:05:58+00:00"
+ },
+ {
+ "name": "symfony/twig-bridge",
+ "version": "v5.1.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/twig-bridge.git",
+ "reference": "874735a8c97963af2009e0eaee55b17fc0846db2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/874735a8c97963af2009e0eaee55b17fc0846db2",
+ "reference": "874735a8c97963af2009e0eaee55b17fc0846db2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/translation-contracts": "^1.1|^2",
+ "twig/twig": "^2.10|^3.0"
+ },
+ "conflict": {
+ "symfony/console": "<4.4",
+ "symfony/form": "<5.1",
+ "symfony/http-foundation": "<4.4",
+ "symfony/http-kernel": "<4.4",
+ "symfony/translation": "<5.0",
+ "symfony/workflow": "<4.4"
+ },
+ "require-dev": {
+ "egulias/email-validator": "^2.1.10",
+ "symfony/asset": "^4.4|^5.0",
+ "symfony/console": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/expression-language": "^4.4|^5.0",
+ "symfony/finder": "^4.4|^5.0",
+ "symfony/form": "^5.1",
+ "symfony/http-foundation": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.4|^5.0",
+ "symfony/mime": "^4.4|^5.0",
+ "symfony/polyfill-intl-icu": "~1.0",
+ "symfony/routing": "^4.4|^5.0",
+ "symfony/security-acl": "^2.8|^3.0",
+ "symfony/security-core": "^4.4|^5.0",
+ "symfony/security-csrf": "^4.4|^5.0",
+ "symfony/security-http": "^4.4|^5.0",
+ "symfony/stopwatch": "^4.4|^5.0",
+ "symfony/translation": "^5.0",
+ "symfony/web-link": "^4.4|^5.0",
+ "symfony/workflow": "^4.4|^5.0",
+ "symfony/yaml": "^4.4|^5.0",
+ "twig/cssinliner-extra": "^2.12",
+ "twig/inky-extra": "^2.12",
+ "twig/markdown-extra": "^2.12"
+ },
+ "suggest": {
+ "symfony/asset": "For using the AssetExtension",
+ "symfony/expression-language": "For using the ExpressionExtension",
+ "symfony/finder": "",
+ "symfony/form": "For using the FormExtension",
+ "symfony/http-kernel": "For using the HttpKernelExtension",
+ "symfony/routing": "For using the RoutingExtension",
+ "symfony/security-core": "For using the SecurityExtension",
+ "symfony/security-csrf": "For using the CsrfExtension",
+ "symfony/security-http": "For using the LogoutUrlExtension",
+ "symfony/stopwatch": "For using the StopwatchExtension",
+ "symfony/translation": "For using the TranslationExtension",
+ "symfony/var-dumper": "For using the DumpExtension",
+ "symfony/web-link": "For using the WebLinkExtension",
+ "symfony/yaml": "For using the YamlExtension"
+ },
+ "type": "symfony-bridge",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\Twig\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Twig Bridge",
+ "homepage": "https://symfony.com",
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-24T12:01:57+00:00"
+ },
+ {
+ "name": "symfony/var-dumper",
+ "version": "v5.1.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-dumper.git",
+ "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/4e13f3fcefb1fcaaa5efb5403581406f4e840b9a",
+ "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<5.4.3",
+ "symfony/console": "<4.4"
+ },
+ "require-dev": {
+ "ext-iconv": "*",
+ "symfony/console": "^4.4|^5.0",
+ "symfony/process": "^4.4|^5.0",
+ "twig/twig": "^2.4|^3.0"
+ },
+ "suggest": {
+ "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
+ "ext-intl": "To show region name in time zone dump",
+ "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
+ },
+ "bin": [
+ "Resources/bin/var-dump-server"
+ ],
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions/dump.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\VarDumper\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony mechanism for exploring and dumping PHP variables",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "debug",
+ "dump"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-27T10:11:13+00:00"
+ },
+ {
+ "name": "symfony/var-exporter",
+ "version": "v5.1.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-exporter.git",
+ "reference": "b4048bfc6248413592462c029381bdb2f7b6525f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/b4048bfc6248413592462c029381bdb2f7b6525f",
+ "reference": "b4048bfc6248413592462c029381bdb2f7b6525f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "require-dev": {
+ "symfony/var-dumper": "^4.4.9|^5.0.9"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\VarExporter\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "clone",
+ "construct",
+ "export",
+ "hydrate",
+ "instantiate",
+ "serialize"
+ ],
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-24T12:01:57+00:00"
+ },
+ {
+ "name": "twig/twig",
+ "version": "v3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig.git",
+ "reference": "b02fa41f3783a2616eccef7b92fbc2343ffed737"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/b02fa41f3783a2616eccef7b92fbc2343ffed737",
+ "reference": "b02fa41f3783a2616eccef7b92fbc2343ffed737",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-mbstring": "^1.3"
+ },
+ "require-dev": {
+ "psr/container": "^1.0",
+ "symfony/phpunit-bridge": "^4.4.9|^5.0.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Twig\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com",
+ "homepage": "http://fabien.potencier.org",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Twig Team",
+ "role": "Contributors"
+ },
+ {
+ "name": "Armin Ronacher",
+ "email": "armin.ronacher@active-4.com",
+ "role": "Project Founder"
+ }
+ ],
+ "description": "Twig, the flexible, fast, and secure template language for PHP",
+ "homepage": "https://twig.symfony.com",
+ "keywords": [
+ "templating"
+ ],
+ "funding": [
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/twig/twig",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-27T19:28:23+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.9.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<3.9.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "time": "2020-07-08T17:02:28+00:00"
+ },
+ {
+ "name": "webmozart/expression",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/expression.git",
+ "reference": "35c222fc49533894228e1240cc844ae91d6a9ef2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/expression/zipball/35c222fc49533894228e1240cc844ae91d6a9ef2",
+ "reference": "35c222fc49533894228e1240cc844ae91d6a9ef2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.9"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Expression\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Formulate expressions and search criteria using PHP objects.",
+ "keywords": [
+ "criteria",
+ "expression",
+ "filter",
+ "formula"
+ ],
+ "time": "2015-12-17T10:43:13+00:00"
+ },
+ {
+ "name": "webmozart/path-util",
+ "version": "2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/path-util.git",
+ "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
+ "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "webmozart/assert": "~1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\PathUtil\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.",
+ "time": "2015-12-17T08:42:14+00:00"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^8.0",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-10T18:47:58+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.10.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "replace": {
+ "myclabs/deep-copy": "self.version"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ },
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-13T09:40:50+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
+ "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "phar-io/version": "^2.0",
+ "php": "^5.6 || ^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "time": "2018-07-08T19:23:20+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6",
+ "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "time": "2018-07-08T19:19:57+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "1.12.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8ce87516be71aae9b956f81906aaf0338e0d8a2d",
+ "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.2",
+ "php": "^7.2 || ~8.0, <8.1",
+ "phpdocumentor/reflection-docblock": "^5.2",
+ "sebastian/comparator": "^3.0 || ^4.0",
+ "sebastian/recursion-context": "^3.0 || ^4.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^6.0",
+ "phpunit/phpunit": "^8.0 || ^9.0 <9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.11.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "time": "2020-09-29T09:10:42+00:00"
+ },
+ {
+ "name": "phpstan/phpstan",
+ "version": "0.12.57",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpstan.git",
+ "reference": "f9909d1d0c44b4cbaf72babcf80e8f14d6fdd55b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f9909d1d0c44b4cbaf72babcf80e8f14d6fdd55b",
+ "reference": "f9909d1d0c44b4cbaf72babcf80e8f14d6fdd55b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1|^8.0"
+ },
+ "conflict": {
+ "phpstan/phpstan-shim": "*"
+ },
+ "bin": [
+ "phpstan",
+ "phpstan.phar"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.12-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPStan - PHP Static Analysis Tool",
+ "funding": [
+ {
+ "url": "https://github.com/ondrejmirtes",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/phpstan",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-21T12:53:28+00:00"
+ },
+ {
+ "name": "phpstan/phpstan-webmozart-assert",
+ "version": "0.12.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpstan-webmozart-assert.git",
+ "reference": "afaf96ddd69133fc7a1ed527039eaca39454c4d8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpstan-webmozart-assert/zipball/afaf96ddd69133fc7a1ed527039eaca39454c4d8",
+ "reference": "afaf96ddd69133fc7a1ed527039eaca39454c4d8",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0",
+ "phpstan/phpstan": "^0.12.24"
+ },
+ "require-dev": {
+ "consistence/coding-standard": "^3.7",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "ergebnis/composer-normalize": "^2.0.2",
+ "jakub-onderka/php-parallel-lint": "^1.0",
+ "phing/phing": "^2.16.0",
+ "phpstan/phpstan-phpunit": "^0.12.6",
+ "phpstan/phpstan-strict-rules": "^0.12.1",
+ "phpunit/phpunit": "^7.5.18",
+ "slevomat/coding-standard": "^4.5.2",
+ "webmozart/assert": "^1.7.0"
+ },
+ "type": "phpstan-extension",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.12-dev"
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPStan webmozart/assert extension",
+ "time": "2020-07-21T14:55:38+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "7.0.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf",
+ "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.2",
+ "phpunit/php-file-iterator": "^2.0.2",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-token-stream": "^3.1.1",
+ "sebastian/code-unit-reverse-lookup": "^1.0.1",
+ "sebastian/environment": "^4.2.2",
+ "sebastian/version": "^2.0.1",
+ "theseer/tokenizer": "^1.1.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.2.2"
+ },
+ "suggest": {
+ "ext-xdebug": "^2.7.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "time": "2019-11-20T13:55:58+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "050bedf145a257b1ff02746c31894800e5122946"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946",
+ "reference": "050bedf145a257b1ff02746c31894800e5122946",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "time": "2018-09-13T20:33:42+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "time": "2015-06-21T13:50:34+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "2.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "1038454804406b0b5f5f520358e78c1c2f71501e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e",
+ "reference": "1038454804406b0b5f5f520358e78c1c2f71501e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "time": "2019-06-07T04:22:29+00:00"
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff",
+ "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Wrapper around PHP's tokenizer extension.",
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "keywords": [
+ "tokenizer"
+ ],
+ "abandoned": true,
+ "time": "2019-09-17T06:23:10+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "8.5.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "f5c8a5dd5e7e8d68d7562bfb48d47287d33937d6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f5c8a5dd5e7e8d68d7562bfb48d47287d33937d6",
+ "reference": "f5c8a5dd5e7e8d68d7562bfb48d47287d33937d6",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.3.1",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "ext-xmlwriter": "*",
+ "myclabs/deep-copy": "^1.10.0",
+ "phar-io/manifest": "^1.0.3",
+ "phar-io/version": "^2.0.1",
+ "php": "^7.2",
+ "phpspec/prophecy": "^1.10.3",
+ "phpunit/php-code-coverage": "^7.0.10",
+ "phpunit/php-file-iterator": "^2.0.2",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-timer": "^2.1.2",
+ "sebastian/comparator": "^3.0.2",
+ "sebastian/diff": "^3.0.2",
+ "sebastian/environment": "^4.2.3",
+ "sebastian/exporter": "^3.1.2",
+ "sebastian/global-state": "^3.0.0",
+ "sebastian/object-enumerator": "^3.0.3",
+ "sebastian/resource-operations": "^2.0.1",
+ "sebastian/type": "^1.1.3",
+ "sebastian/version": "^2.0.1"
+ },
+ "require-dev": {
+ "ext-pdo": "*"
+ },
+ "suggest": {
+ "ext-soap": "*",
+ "ext-xdebug": "*",
+ "phpunit/php-invoker": "^2.0.0"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.5-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "funding": [
+ {
+ "url": "https://phpunit.de/donate.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-10T12:51:38+00:00"
+ },
+ {
+ "name": "roave/security-advisories",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Roave/SecurityAdvisories.git",
+ "reference": "fa05999280434eacf621cc78ab9179d9394c7998"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/fa05999280434eacf621cc78ab9179d9394c7998",
+ "reference": "fa05999280434eacf621cc78ab9179d9394c7998",
+ "shasum": ""
+ },
+ "conflict": {
+ "3f/pygmentize": "<1.2",
+ "adodb/adodb-php": "<5.20.12",
+ "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1",
+ "amphp/artax": "<1.0.6|>=2,<2.0.6",
+ "amphp/http": "<1.0.1",
+ "amphp/http-client": ">=4,<4.4",
+ "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6",
+ "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99",
+ "aws/aws-sdk-php": ">=3,<3.2.1",
+ "bagisto/bagisto": "<0.1.5",
+ "barrelstrength/sprout-base-email": "<1.2.7",
+ "barrelstrength/sprout-forms": "<3.9",
+ "baserproject/basercms": ">=4,<=4.3.6|>=4.4,<4.4.1",
+ "bolt/bolt": "<3.7.1",
+ "brightlocal/phpwhois": "<=4.2.5",
+ "buddypress/buddypress": "<5.1.2",
+ "bugsnag/bugsnag-laravel": ">=2,<2.0.2",
+ "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.5.18|>=3.6,<3.6.15|>=3.7,<3.7.7",
+ "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
+ "cartalyst/sentry": "<=2.1.6",
+ "centreon/centreon": "<18.10.8|>=19,<19.4.5",
+ "cesnet/simplesamlphp-module-proxystatistics": "<3.1",
+ "codeigniter/framework": "<=3.0.6",
+ "composer/composer": "<=1-alpha.11",
+ "contao-components/mediaelement": ">=2.14.2,<2.21.1",
+ "contao/core": ">=2,<3.5.39",
+ "contao/core-bundle": "= 4.10.0|>=4,<4.4.52|>=4.5,<4.9.6",
+ "contao/listing-bundle": ">=4,<4.4.8",
+ "datadog/dd-trace": ">=0.30,<0.30.2",
+ "david-garcia/phpwhois": "<=4.3.1",
+ "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1",
+ "doctrine/annotations": ">=1,<1.2.7",
+ "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
+ "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1",
+ "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2",
+ "doctrine/doctrine-bundle": "<1.5.2",
+ "doctrine/doctrine-module": "<=0.7.1",
+ "doctrine/mongodb-odm": ">=1,<1.0.2",
+ "doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
+ "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1",
+ "dolibarr/dolibarr": "<11.0.4",
+ "dompdf/dompdf": ">=0.6,<0.6.2",
+ "drupal/core": ">=7,<7.74|>=8,<8.8.11|>=8.9,<8.9.9|>=9,<9.0.8",
+ "drupal/drupal": ">=7,<7.74|>=8,<8.8.11|>=8.9,<8.9.9|>=9,<9.0.8",
+ "endroid/qr-code-bundle": "<3.4.2",
+ "enshrined/svg-sanitize": "<0.13.1",
+ "erusev/parsedown": "<1.7.2",
+ "ezsystems/demobundle": ">=5.4,<5.4.6.1",
+ "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1",
+ "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1|>=5.4,<5.4.11.1|>=2017.12,<2017.12.0.1",
+ "ezsystems/ezplatform": ">=1.7,<1.7.9.1|>=1.13,<1.13.5.1|>=2.5,<2.5.4",
+ "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6",
+ "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1",
+ "ezsystems/ezplatform-kernel": ">=1,<1.0.2.1",
+ "ezsystems/ezplatform-user": ">=1,<1.0.1",
+ "ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.14.2|>=6,<6.7.9.1|>=6.8,<6.13.6.3|>=7,<7.2.4.1|>=7.3,<7.3.2.1|>=7.5,<7.5.7.1",
+ "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.14.2|>=2011,<2017.12.7.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3|>=2019.3,<2019.3.5.1",
+ "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3",
+ "ezsystems/repository-forms": ">=2.3,<2.3.2.1",
+ "ezyang/htmlpurifier": "<4.1.1",
+ "firebase/php-jwt": "<2",
+ "fooman/tcpdf": "<6.2.22",
+ "fossar/tcpdf-parser": "<6.2.22",
+ "friendsofsymfony/oauth2-php": "<1.3",
+ "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
+ "friendsofsymfony/user-bundle": ">=1.2,<1.3.5",
+ "friendsoftypo3/mediace": ">=7.6.2,<7.6.5",
+ "fuel/core": "<1.8.1",
+ "getgrav/grav": "<1.7-beta.8",
+ "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
+ "gree/jose": "<=2.2",
+ "gregwar/rst": "<1.0.3",
+ "guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1",
+ "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10",
+ "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4",
+ "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29|>=5.5,<=5.5.44|>=6,<6.18.34|>=7,<7.23.2",
+ "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15",
+ "illuminate/view": ">=7,<7.1.2",
+ "ivankristianto/phpwhois": "<=4.3",
+ "james-heinrich/getid3": "<1.9.9",
+ "joomla/session": "<1.3.1",
+ "jsmitty12/phpwhois": "<5.1",
+ "kazist/phpwhois": "<=4.2.6",
+ "kitodo/presentation": "<3.1.2",
+ "kreait/firebase-php": ">=3.2,<3.8.1",
+ "la-haute-societe/tcpdf": "<6.2.22",
+ "laravel/framework": ">=4,<4.0.99|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.34|>=7,<7.23.2",
+ "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
+ "league/commonmark": "<0.18.3",
+ "librenms/librenms": "<1.53",
+ "livewire/livewire": ">2.2.4,<2.2.6",
+ "magento/community-edition": ">=2,<2.2.10|>=2.3,<2.3.3",
+ "magento/magento1ce": "<1.9.4.3",
+ "magento/magento1ee": ">=1,<1.14.4.3",
+ "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2-p.2",
+ "marcwillmann/turn": "<0.3.3",
+ "mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35",
+ "mittwald/typo3_forum": "<1.2.1",
+ "monolog/monolog": ">=1.8,<1.12",
+ "namshi/jose": "<2.2",
+ "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6",
+ "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13",
+ "nystudio107/craft-seomatic": "<3.3",
+ "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1",
+ "october/backend": ">=1.0.319,<1.0.470",
+ "october/cms": "= 1.0.469|>=1.0.319,<1.0.469",
+ "october/october": ">=1.0.319,<1.0.466",
+ "october/rain": ">=1.0.319,<1.0.468",
+ "onelogin/php-saml": "<2.10.4",
+ "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5",
+ "openid/php-openid": "<2.3",
+ "openmage/magento-lts": "<19.4.8|>=20,<20.0.4",
+ "orchid/platform": ">=9,<9.4.4",
+ "oro/crm": ">=1.7,<1.7.4",
+ "oro/platform": ">=1.7,<1.7.4",
+ "padraic/humbug_get_contents": "<1.1.2",
+ "pagarme/pagarme-php": ">=0,<3",
+ "paragonie/random_compat": "<2",
+ "passbolt/passbolt_api": "<2.11",
+ "paypal/merchant-sdk-php": "<3.12",
+ "pear/archive_tar": "<1.4.11",
+ "personnummer/personnummer": "<3.0.2",
+ "phpfastcache/phpfastcache": ">=5,<5.0.13",
+ "phpmailer/phpmailer": "<6.1.6",
+ "phpmussel/phpmussel": ">=1,<1.6",
+ "phpmyadmin/phpmyadmin": "<4.9.6|>=5,<5.0.3",
+ "phpoffice/phpexcel": "<1.8.2",
+ "phpoffice/phpspreadsheet": "<1.8",
+ "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3",
+ "phpwhois/phpwhois": "<=4.2.5",
+ "phpxmlrpc/extras": "<0.6.1",
+ "pimcore/pimcore": "<6.3",
+ "pocketmine/pocketmine-mp": "<3.15.4",
+ "prestashop/autoupgrade": ">=4,<4.10.1",
+ "prestashop/contactform": ">1.0.1,<4.3",
+ "prestashop/gamification": "<2.3.2",
+ "prestashop/productcomments": ">=4,<4.2",
+ "prestashop/ps_facetedsearch": "<3.4.1",
+ "privatebin/privatebin": "<1.2.2|>=1.3,<1.3.2",
+ "propel/propel": ">=2-alpha.1,<=2-alpha.7",
+ "propel/propel1": ">=1,<=1.7.1",
+ "pterodactyl/panel": "<0.7.19|>=1-rc.0,<=1-rc.6",
+ "pusher/pusher-php-server": "<2.2.1",
+ "rainlab/debugbar-plugin": "<3.1",
+ "robrichards/xmlseclibs": "<3.0.4",
+ "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1",
+ "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9",
+ "scheb/two-factor-bundle": ">=0,<3.26|>=4,<4.11",
+ "sensiolabs/connect": "<4.2.3",
+ "serluck/phpwhois": "<=4.2.6",
+ "shopware/core": "<=6.3.2",
+ "shopware/platform": "<=6.3.2",
+ "shopware/shopware": "<5.6.9",
+ "silverstripe/admin": ">=1.0.3,<1.0.4|>=1.1,<1.1.1",
+ "silverstripe/assets": ">=1,<1.4.7|>=1.5,<1.5.2",
+ "silverstripe/cms": "<4.3.6|>=4.4,<4.4.4",
+ "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1",
+ "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
+ "silverstripe/framework": "<4.4.7|>=4.5,<4.5.4",
+ "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.1.2|>=3.2,<3.2.4",
+ "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1",
+ "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4",
+ "silverstripe/subsites": ">=2,<2.1.1",
+ "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1",
+ "silverstripe/userforms": "<3",
+ "simple-updates/phpwhois": "<=1",
+ "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4",
+ "simplesamlphp/simplesamlphp": "<1.18.6",
+ "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
+ "simplito/elliptic-php": "<1.0.6",
+ "slim/slim": "<2.6",
+ "smarty/smarty": "<3.1.33",
+ "socalnick/scn-social-auth": "<1.15.2",
+ "spoonity/tcpdf": "<6.2.22",
+ "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
+ "ssddanbrown/bookstack": "<0.29.2",
+ "stormpath/sdk": ">=0,<9.9.99",
+ "studio-42/elfinder": "<2.1.49",
+ "sulu/sulu": "<1.6.34|>=2,<2.0.10|>=2.1,<2.1.1",
+ "swiftmailer/swiftmailer": ">=4,<5.4.5",
+ "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2",
+ "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
+ "sylius/grid-bundle": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
+ "sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
+ "sylius/sylius": "<1.6.9|>=1.7,<1.7.9|>=1.8,<1.8.3",
+ "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99",
+ "symbiote/silverstripe-versionedfiles": "<=2.0.3",
+ "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8",
+ "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
+ "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4",
+ "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1",
+ "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
+ "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7",
+ "symfony/http-kernel": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.4.13|>=5,<5.1.5",
+ "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13",
+ "symfony/mime": ">=4.3,<4.3.8",
+ "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
+ "symfony/polyfill": ">=1,<1.10",
+ "symfony/polyfill-php55": ">=1,<1.10",
+ "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
+ "symfony/routing": ">=2,<2.0.19",
+ "symfony/security": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=4.4,<4.4.7|>=5,<5.0.7",
+ "symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
+ "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7",
+ "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
+ "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
+ "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7",
+ "symfony/serializer": ">=2,<2.0.11",
+ "symfony/symfony": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.4.13|>=5,<5.1.5",
+ "symfony/translation": ">=2,<2.0.17",
+ "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3",
+ "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8",
+ "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
+ "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
+ "t3g/svg-sanitizer": "<1.0.3",
+ "tecnickcom/tcpdf": "<6.2.22",
+ "thelia/backoffice-default-template": ">=2.1,<2.1.2",
+ "thelia/thelia": ">=2.1-beta.1,<2.1.3",
+ "theonedemon/phpwhois": "<=4.2.5",
+ "titon/framework": ">=0,<9.9.99",
+ "truckersmp/phpwhois": "<=4.3.1",
+ "twig/twig": "<1.38|>=2,<2.7",
+ "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.38|>=9,<9.5.23|>=10,<10.4.10",
+ "typo3/cms-core": ">=8,<8.7.38|>=9,<9.5.23|>=10,<10.4.10",
+ "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5",
+ "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4",
+ "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1",
+ "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10",
+ "ua-parser/uap-php": "<3.8",
+ "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
+ "verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4",
+ "wallabag/tcpdf": "<6.2.22",
+ "willdurand/js-translation-bundle": "<2.1.1",
+ "yii2mod/yii2-cms": "<1.9.2",
+ "yiisoft/yii": ">=1.1.14,<1.1.15",
+ "yiisoft/yii2": "<2.0.38",
+ "yiisoft/yii2-bootstrap": "<2.0.4",
+ "yiisoft/yii2-dev": "<2.0.15",
+ "yiisoft/yii2-elasticsearch": "<2.0.5",
+ "yiisoft/yii2-gii": "<2.0.4",
+ "yiisoft/yii2-jui": "<2.0.4",
+ "yiisoft/yii2-redis": "<2.0.8",
+ "yourls/yourls": "<1.7.4",
+ "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3",
+ "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2",
+ "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
+ "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5",
+ "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3",
+ "zendframework/zend-diactoros": ">=1,<1.8.4",
+ "zendframework/zend-feed": ">=1,<2.10.3",
+ "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1",
+ "zendframework/zend-http": ">=1,<2.8.1",
+ "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6",
+ "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3",
+ "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2",
+ "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1",
+ "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4",
+ "zendframework/zend-validator": ">=2.3,<2.3.6",
+ "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1",
+ "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6",
+ "zendframework/zendframework": "<2.5.1",
+ "zendframework/zendframework1": "<1.12.20",
+ "zendframework/zendopenid": ">=2,<2.0.2",
+ "zendframework/zendxml": ">=1,<1.0.1",
+ "zetacomponents/mail": "<1.8.2",
+ "zf-commons/zfc-user": "<1.2.2",
+ "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3",
+ "zfr/zfr-oauth2-server-module": "<0.1.2"
+ },
+ "type": "metapackage",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "role": "maintainer"
+ },
+ {
+ "name": "Ilya Tribusean",
+ "email": "slash3b@gmail.com",
+ "role": "maintainer"
+ }
+ ],
+ "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
+ "funding": [
+ {
+ "url": "https://github.com/Ocramius",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-26T07:02:13+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "time": "2017-03-04T06:30:41+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
+ "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1",
+ "sebastian/diff": "^3.0",
+ "sebastian/exporter": "^3.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "time": "2018-07-12T15:12:46+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
+ "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.5 || ^8.0",
+ "symfony/process": "^2 || ^3.3 || ^4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "time": "2019-02-04T06:01:07+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "4.2.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
+ "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.5"
+ },
+ "suggest": {
+ "ext-posix": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.2-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "time": "2019-11-20T08:46:58+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "3.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e",
+ "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "sebastian/recursion-context": "^3.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "time": "2019-09-14T09:02:43+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4",
+ "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2",
+ "sebastian/object-reflector": "^1.1.1",
+ "sebastian/recursion-context": "^3.0"
+ },
+ "require-dev": {
+ "ext-dom": "*",
+ "phpunit/phpunit": "^8.0"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "time": "2019-02-01T05:30:01+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "sebastian/object-reflector": "^1.1.1",
+ "sebastian/recursion-context": "^3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "time": "2017-08-03T12:35:26+00:00"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "773f97c67f28de00d397be301821b06708fca0be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
+ "reference": "773f97c67f28de00d397be301821b06708fca0be",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "time": "2017-03-29T09:07:27+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "time": "2017-03-03T06:23:57+00:00"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
+ "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "time": "2018-10-04T04:07:39+00:00"
+ },
+ {
+ "name": "sebastian/type",
+ "version": "1.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/type.git",
+ "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3",
+ "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the types of the PHP type system",
+ "homepage": "https://github.com/sebastianbergmann/type",
+ "time": "2019-07-02T08:10:15+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "time": "2016-10-03T07:35:21+00:00"
+ },
+ {
+ "name": "symplify/easy-coding-standard-prefixed",
+ "version": "8.3.48",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symplify/easy-coding-standard-prefixed.git",
+ "reference": "0e66ade37480e74a05a438cccd274dc9ae1a73a1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symplify/easy-coding-standard-prefixed/zipball/0e66ade37480e74a05a438cccd274dc9ae1a73a1",
+ "reference": "0e66ade37480e74a05a438cccd274dc9ae1a73a1",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2"
+ },
+ "conflict": {
+ "symplify/auto-bind-parameter": "<7.2",
+ "symplify/autowire-array-parameter": "<7.2",
+ "symplify/coding-standard": "<7.2",
+ "symplify/package-builder": "<7.2",
+ "symplify/set-config-resolver": "<7.2",
+ "symplify/smart-file-system": "<7.2"
+ },
+ "replace": {
+ "symplify/easy-coding-standard": "self.version"
+ },
+ "bin": [
+ "ecs",
+ "ecs.phar"
+ ],
+ "type": "library",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Prefixed version of ECS compiled in PHAR",
+ "time": "2020-10-26T10:45:08+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "75a63c33a8577608444246075ea0af0d052e452a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
+ "reference": "75a63c33a8577608444246075ea0af0d052e452a",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
+ "time": "2020-07-12T23:59:07+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": {
+ "roave/security-advisories": 20
+ },
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": "^7.2",
+ "ext-json": "*"
+ },
+ "platform-dev": [],
+ "plugin-api-version": "1.1.0"
+}
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100755
index 0000000..36e8033
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,15 @@
+version: '3'
+
+services:
+ app:
+ image: spaceonfire/nginx-php-fpm:latest-7.3
+ environment:
+ - SOF_PRESET=default
+ - APPLICATION_ENV=test
+ - WEBROOT=/dev/null
+ - ENABLE_XDEBUG=1
+ - XDEBUG_IDEKEY=apidoc
+ - PAGER=more
+ - PUID=1000
+ volumes:
+ - ./:/var/www/html
diff --git a/docs/Application/ApiDocKernel.md b/docs/Application/ApiDocKernel.md
new file mode 100644
index 0000000..d58afca
--- /dev/null
+++ b/docs/Application/ApiDocKernel.md
@@ -0,0 +1,92 @@
+# Class ApiDocKernel
+
+Full name: `spaceonfire\ApiDoc\Application\ApiDocKernel`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------------------- | ------------------------------------------ | ------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_application_apidockernel_construct) | | | [📢](# "Visibility: public") |
+| [getContainer](#spaceonfire_apidoc_application_apidockernel_getcontainer) | _spaceonfire\Container\CompositeContainer_ | Returns the container | [📢](# "Visibility: public") |
+| [isDebugModeEnabled](#spaceonfire_apidoc_application_apidockernel_isdebugmodeenabled) | _bool_ | Running debug mode? | [📢](# "Visibility: public") |
+| [configureConsoleApplication](#spaceonfire_apidoc_application_apidockernel_configureconsoleapplication) | _void_ | Configure symfony/console application | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------- | ------ | --------- | ----------- |
+| `$debugModeEnabled` | _bool_ | No | |
+
+```php
+public function __construct(bool $debugModeEnabled = false)
+```
+
+File location: `Application/ApiDocKernel.php:29`
+
+
+
+### getContainer()
+
+Returns the container
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------ | --------- | ----------- |
+| **Return** | _spaceonfire\Container\CompositeContainer_ | | |
+
+```php
+public function getContainer(): spaceonfire\Container\CompositeContainer
+```
+
+File location: `Application/ApiDocKernel.php:71`
+
+
+
+### isDebugModeEnabled()
+
+Running debug mode?
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _bool_ | | |
+
+```php
+public function isDebugModeEnabled(): bool
+```
+
+File location: `Application/ApiDocKernel.php:80`
+
+
+
+### configureConsoleApplication()
+
+Configure symfony/console application
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------------------------------------------------- | --------- | ----------- |
+| `$app` | _Symfony\Component\Console\Application_ | No | |
+| `$input` | _Symfony\Component\Console\Input\InputInterface_ | No | |
+| `$output` | _Symfony\Component\Console\Output\OutputInterface_ | No | |
+| **Return** | _void_ | | |
+
+```php
+public function configureConsoleApplication(Symfony\Component\Console\Application $app, Symfony\Component\Console\Input\InputInterface $input, Symfony\Component\Console\Output\OutputInterface $output): void
+```
+
+File location: `Application/ApiDocKernel.php:91`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Application/Console/GenerateCommand.md b/docs/Application/Console/GenerateCommand.md
new file mode 100644
index 0000000..b19da9f
--- /dev/null
+++ b/docs/Application/Console/GenerateCommand.md
@@ -0,0 +1,701 @@
+# Class GenerateCommand
+
+Full name: `spaceonfire\ApiDoc\Application\Console\GenerateCommand`
+
+Parent class name: `Symfony\Component\Console\Command\Command`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
+| _Constants_ | | | |
+| [SUCCESS](#symfony_component_console_command_command_success) | | | [📢](# "Visibility: public") |
+| [FAILURE](#symfony_component_console_command_command_failure) | | | [📢](# "Visibility: public") |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_application_console_generatecommand_construct) | | | [📢](# "Visibility: public") |
+| [getDefaultName](#symfony_component_console_command_command_getdefaultname) | _string|null_ | | [🇸](# "Static element") [📢](# "Visibility: public") |
+| [ignoreValidationErrors](#symfony_component_console_command_command_ignorevalidationerrors) | | Ignores validation errors. | [📢](# "Visibility: public") |
+| [setApplication](#symfony_component_console_command_command_setapplication) | | | [📢](# "Visibility: public") |
+| [setHelperSet](#symfony_component_console_command_command_sethelperset) | | | [📢](# "Visibility: public") |
+| [getHelperSet](#symfony_component_console_command_command_gethelperset) | _Symfony\Component\Console\Helper\HelperSet|null_ | Gets the helper set. | [📢](# "Visibility: public") |
+| [getApplication](#symfony_component_console_command_command_getapplication) | _Symfony\Component\Console\Application|null_ | Gets the application instance for this command. | [📢](# "Visibility: public") |
+| [isEnabled](#symfony_component_console_command_command_isenabled) | _bool_ | Checks whether the command is enabled or not in the current environment. | [📢](# "Visibility: public") |
+| [run](#symfony_component_console_command_command_run) | _int_ | Runs the command. | [📢](# "Visibility: public") |
+| [setCode](#symfony_component_console_command_command_setcode) | _Symfony\Component\Console\Command\Command_ | Sets the code to execute when running this command. | [📢](# "Visibility: public") |
+| [mergeApplicationDefinition](#symfony_component_console_command_command_mergeapplicationdefinition) | | Merges the application definition with the command definition. | [📢](# "Visibility: public") |
+| [setDefinition](#symfony_component_console_command_command_setdefinition) | _Symfony\Component\Console\Command\Command_ | Sets an array of argument and option instances. | [📢](# "Visibility: public") |
+| [getDefinition](#symfony_component_console_command_command_getdefinition) | _Symfony\Component\Console\Input\InputDefinition_ | Gets the InputDefinition attached to this Command. | [📢](# "Visibility: public") |
+| [getNativeDefinition](#symfony_component_console_command_command_getnativedefinition) | _Symfony\Component\Console\Input\InputDefinition_ | Gets the InputDefinition to be used to create representations of this Command. | [📢](# "Visibility: public") |
+| [addArgument](#symfony_component_console_command_command_addargument) | _Symfony\Component\Console\Command\Command_ | Adds an argument. | [📢](# "Visibility: public") |
+| [addOption](#symfony_component_console_command_command_addoption) | _Symfony\Component\Console\Command\Command_ | Adds an option. | [📢](# "Visibility: public") |
+| [setName](#symfony_component_console_command_command_setname) | _Symfony\Component\Console\Command\Command_ | Sets the name of the command. | [📢](# "Visibility: public") |
+| [setProcessTitle](#symfony_component_console_command_command_setprocesstitle) | _Symfony\Component\Console\Command\Command_ | Sets the process title of the command. | [📢](# "Visibility: public") |
+| [getName](#symfony_component_console_command_command_getname) | _string|null_ | Returns the command name. | [📢](# "Visibility: public") |
+| [setHidden](#symfony_component_console_command_command_sethidden) | _Symfony\Component\Console\Command\Command_ | | [📢](# "Visibility: public") |
+| [isHidden](#symfony_component_console_command_command_ishidden) | _bool_ | | [📢](# "Visibility: public") |
+| [setDescription](#symfony_component_console_command_command_setdescription) | _Symfony\Component\Console\Command\Command_ | Sets the description for the command. | [📢](# "Visibility: public") |
+| [getDescription](#symfony_component_console_command_command_getdescription) | _string_ | Returns the description for the command. | [📢](# "Visibility: public") |
+| [setHelp](#symfony_component_console_command_command_sethelp) | _Symfony\Component\Console\Command\Command_ | Sets the help for the command. | [📢](# "Visibility: public") |
+| [getHelp](#symfony_component_console_command_command_gethelp) | _string_ | Returns the help for the command. | [📢](# "Visibility: public") |
+| [getProcessedHelp](#symfony_component_console_command_command_getprocessedhelp) | _string_ | Returns the processed help for the command replacing the %command.name% and
%command.full_name% patterns with the real values dynamically. | [📢](# "Visibility: public") |
+| [setAliases](#symfony_component_console_command_command_setaliases) | _Symfony\Component\Console\Command\Command_ | Sets the aliases for the command. | [📢](# "Visibility: public") |
+| [getAliases](#symfony_component_console_command_command_getaliases) | _mixed[]_ | Returns the aliases for the command. | [📢](# "Visibility: public") |
+| [getSynopsis](#symfony_component_console_command_command_getsynopsis) | _string_ | Returns the synopsis for the command. | [📢](# "Visibility: public") |
+| [addUsage](#symfony_component_console_command_command_addusage) | _Symfony\Component\Console\Command\Command_ | Add a command usage example, it'll be prefixed with the command name. | [📢](# "Visibility: public") |
+| [getUsages](#symfony_component_console_command_command_getusages) | _mixed[]_ | Returns alternative usages of the command. | [📢](# "Visibility: public") |
+| [getHelper](#symfony_component_console_command_command_gethelper) | _mixed_ | Gets a helper instance by name. | [📢](# "Visibility: public") |
+
+## Constants
+
+
+
+### SUCCESS
+
+- **Visibility**: public
+- **Value**: `0`
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:32`
+
+
+
+### FAILURE
+
+- **Visibility**: public
+- **Value**: `1`
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:33`
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| --------- | --------------------------------------------- | --------- | ----------- |
+| `$kernel` | _spaceonfire\ApiDoc\Application\ApiDocKernel_ | No | |
+| `$name` | _string|null_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Application\ApiDocKernel $kernel, string|null $name = null)
+```
+
+File location: `Application/Console/GenerateCommand.php:27`
+
+
+
+### getDefaultName()
+
+- **Visibility**: public
+- **Static**: Yes
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------ | --------- | ------------------------------------------------------------ |
+| **Return** | _string|null_ | | The default command name or null when no default name is set |
+
+```php
+public static function getDefaultName(): string|null
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:59`
+
+
+
+### ignoreValidationErrors()
+
+Ignores validation errors.
+
+This is mainly useful for the help command.
+
+- **Visibility**: public
+
+```php
+public function ignoreValidationErrors()
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:88`
+
+
+
+### setApplication()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | ------------------------------------------------- | --------- | ----------- |
+| `$application` | _Symfony\Component\Console\Application|null_ | No | |
+
+```php
+public function setApplication(Symfony\Component\Console\Application|null $application = null)
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:93`
+
+
+
+### setHelperSet()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | -------------------------------------------- | --------- | ----------- |
+| `$helperSet` | _Symfony\Component\Console\Helper\HelperSet_ | No | |
+
+```php
+public function setHelperSet(Symfony\Component\Console\Helper\HelperSet $helperSet)
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:103`
+
+
+
+### getHelperSet()
+
+Gets the helper set.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------ | --------- | -------------------- |
+| **Return** | _Symfony\Component\Console\Helper\HelperSet|null_ | | A HelperSet instance |
+
+```php
+public function getHelperSet(): Symfony\Component\Console\Helper\HelperSet|null
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:113`
+
+
+
+### getApplication()
+
+Gets the application instance for this command.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------- | --------- | ----------------------- |
+| **Return** | _Symfony\Component\Console\Application|null_ | | An Application instance |
+
+```php
+public function getApplication(): Symfony\Component\Console\Application|null
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:123`
+
+
+
+### isEnabled()
+
+Checks whether the command is enabled or not in the current environment.
+
+Override this to check for x or y and return false if the command can not
+run properly under the current conditions.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _bool_ | | |
+
+```php
+public function isEnabled(): bool
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:136`
+
+
+
+### run()
+
+Runs the command.
+
+The code to execute is either defined directly with the
+setCode() method or by overriding the execute() method
+in a sub-class.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------------------------------------------------- | --------- | ---------------------------------------------------------------------------------- |
+| `$input` | _Symfony\Component\Console\Input\InputInterface_ | No | |
+| `$output` | _Symfony\Component\Console\Output\OutputInterface_ | No | |
+| **Return** | _int_ | | The command exit code |
+| **Throws** | _Exception_ | | When binding input fails. Bypass this by calling {@link ignoreValidationErrors()}. |
+
+```php
+public function run(Symfony\Component\Console\Input\InputInterface $input, Symfony\Component\Console\Output\OutputInterface $output): int
+```
+
+**Links**:
+
+- [\Symfony\Component\Console\Command\setCode](../../Symfony/Component/Console/Command/setCode.md#symfony_component_console_command_setcode)
+- [\Symfony\Component\Console\Command\execute](../../Symfony/Component/Console/Command/execute.md#symfony_component_console_command_execute)
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:206`
+
+
+
+### setCode()
+
+Sets the code to execute when running this command.
+
+If this method is used, it overrides the code defined
+in the execute() method.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------------------------------------------------------------- | --------- | ---------------------------------------------------------- |
+| `$code` | _callable_ | No | A callable(InputInterface $input, OutputInterface $output) |
+| **Return** | _Symfony\Component\Console\Command\Command_ | | |
+| **Throws** | _Symfony\Component\Console\Exception\InvalidArgumentException_ | | |
+
+```php
+public function setCode(callable $code): Symfony\Component\Console\Command\Command
+```
+
+**Links**:
+
+- [\Symfony\Component\Console\Command\execute](../../Symfony/Component/Console/Command/execute.md#symfony_component_console_command_execute)
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:282`
+
+
+
+### mergeApplicationDefinition()
+
+Merges the application definition with the command definition.
+
+This method is not part of public API and should not be used directly.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ------ | --------- | -------------------------------------------------------------------------------------------- |
+| `$mergeArgs` | _bool_ | No | Whether to merge or not the Application definition arguments to Command definition arguments |
+
+```php
+public function mergeApplicationDefinition(bool $mergeArgs = true)
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:303`
+
+
+
+### setDefinition()
+
+Sets an array of argument and option instances.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------------------------------------------------------------- | --------- | ------------------------------------------------------------------ |
+| `$definition` | _mixed[]|Symfony\Component\Console\Input\InputDefinition_ | No | An array of argument and option instances or a definition instance |
+| **Return** | _Symfony\Component\Console\Command\Command_ | | |
+
+```php
+public function setDefinition(mixed[]|Symfony\Component\Console\Input\InputDefinition $definition): Symfony\Component\Console\Command\Command
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:329`
+
+
+
+### getDefinition()
+
+Gets the InputDefinition attached to this Command.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------- | --------- | --------------------------- |
+| **Return** | _Symfony\Component\Console\Input\InputDefinition_ | | An InputDefinition instance |
+
+```php
+public function getDefinition(): Symfony\Component\Console\Input\InputDefinition
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:347`
+
+
+
+### getNativeDefinition()
+
+Gets the InputDefinition to be used to create representations of this Command.
+
+Can be overridden to provide the original command representation when it would otherwise
+be changed by merging with the application InputDefinition.
+
+This method is not part of public API and should not be used directly.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------- | --------- | --------------------------- |
+| **Return** | _Symfony\Component\Console\Input\InputDefinition_ | | An InputDefinition instance |
+
+```php
+public function getNativeDefinition(): Symfony\Component\Console\Input\InputDefinition
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:366`
+
+
+
+### addArgument()
+
+Adds an argument.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | -------------------------------------------------------------- | --------- | --------------------------------------------------------------------- |
+| `$name` | _string_ | No | |
+| `$mode` | _int|null_ | No | The argument mode: InputArgument::REQUIRED or InputArgument::OPTIONAL |
+| `$description` | _string_ | No | |
+| `$default` | _string|string[]|null_ | No | The default value (for InputArgument::OPTIONAL mode only) |
+| **Return** | _Symfony\Component\Console\Command\Command_ | | |
+| **Throws** | _Symfony\Component\Console\Exception\InvalidArgumentException_ | | When argument mode is not valid |
+
+```php
+public function addArgument(string $name, int|null $mode = null, string $description = '', string|string[]|null $default = null): Symfony\Component\Console\Command\Command
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:381`
+
+
+
+### addOption()
+
+Adds an option.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | -------------------------------------------------------------- | --------- | ---------------------------------------------------------------------------------------------- |
+| `$name` | _string_ | No | |
+| `$shortcut` | _string|mixed[]|null_ | No | The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts |
+| `$mode` | _int|null_ | No | The option mode: One of the InputOption::VALUE\_\* constants |
+| `$description` | _string_ | No | |
+| `$default` | _string|string[]|int|bool|null_ | No | The default value (must be null for InputOption::VALUE_NONE) |
+| **Return** | _Symfony\Component\Console\Command\Command_ | | |
+| **Throws** | _Symfony\Component\Console\Exception\InvalidArgumentException_ | | If option mode is invalid or incompatible |
+
+```php
+public function addOption(string $name, string|mixed[]|null $shortcut = null, int|null $mode = null, string $description = '', string|string[]|int|bool|null $default = null): Symfony\Component\Console\Command\Command
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:399`
+
+
+
+### setName()
+
+Sets the name of the command.
+
+This method can set both the namespace and the name if
+you separate them by a colon (:)
+
+ $command->setName('foo:bar');
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------------------------------------------------------------- | --------- | ------------------------ |
+| `$name` | _string_ | No | |
+| **Return** | _Symfony\Component\Console\Command\Command_ | | |
+| **Throws** | _Symfony\Component\Console\Exception\InvalidArgumentException_ | | When the name is invalid |
+
+```php
+public function setName(string $name): Symfony\Component\Console\Command\Command
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:418`
+
+
+
+### setProcessTitle()
+
+Sets the process title of the command.
+
+This feature should be used only when creating a long process command,
+like a daemon.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------- | --------- | ----------- |
+| `$title` | _string_ | No | |
+| **Return** | _Symfony\Component\Console\Command\Command_ | | |
+
+```php
+public function setProcessTitle(string $title): Symfony\Component\Console\Command\Command
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:435`
+
+
+
+### getName()
+
+Returns the command name.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------ | --------- | ----------- |
+| **Return** | _string|null_ | | |
+
+```php
+public function getName(): string|null
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:447`
+
+
+
+### setHidden()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------- |
+| `$hidden` | _bool_ | No | Whether or not the command should be hidden from the list of commands
The default value will be true in Symfony 6.0 |
+| **Return** | _Symfony\Component\Console\Command\Command_ | | The current instance |
+
+```php
+public function setHidden(bool $hidden): Symfony\Component\Console\Command\Command
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:460`
+
+
+
+### isHidden()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | --------------------------------------------------- |
+| **Return** | _bool_ | | whether the command should be publicly shown or not |
+
+```php
+public function isHidden(): bool
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:470`
+
+
+
+### setDescription()
+
+Sets the description for the command.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | ------------------------------------------- | --------- | ----------- |
+| `$description` | _string_ | No | |
+| **Return** | _Symfony\Component\Console\Command\Command_ | | |
+
+```php
+public function setDescription(string $description): Symfony\Component\Console\Command\Command
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:480`
+
+
+
+### getDescription()
+
+Returns the description for the command.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ------------------------------- |
+| **Return** | _string_ | | The description for the command |
+
+```php
+public function getDescription(): string
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:492`
+
+
+
+### setHelp()
+
+Sets the help for the command.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------- | --------- | ----------- |
+| `$help` | _string_ | No | |
+| **Return** | _Symfony\Component\Console\Command\Command_ | | |
+
+```php
+public function setHelp(string $help): Symfony\Component\Console\Command\Command
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:502`
+
+
+
+### getHelp()
+
+Returns the help for the command.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ------------------------ |
+| **Return** | _string_ | | The help for the command |
+
+```php
+public function getHelp(): string
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:514`
+
+
+
+### getProcessedHelp()
+
+Returns the processed help for the command replacing the %command.name% and
+%command.full_name% patterns with the real values dynamically.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ---------------------------------- |
+| **Return** | _string_ | | The processed help for the command |
+
+```php
+public function getProcessedHelp(): string
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:525`
+
+
+
+### setAliases()
+
+Sets the aliases for the command.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------------------------------------------------------------- | --------- | ----------------------------------- |
+| `$aliases` | _string[]|iterable_ | No | An array of aliases for the command |
+| **Return** | _Symfony\Component\Console\Command\Command_ | | |
+| **Throws** | _Symfony\Component\Console\Exception\InvalidArgumentException_ | | When an alias is invalid |
+
+```php
+public function setAliases(string[]|iterable $aliases): Symfony\Component\Console\Command\Command
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:551`
+
+
+
+### getAliases()
+
+Returns the aliases for the command.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------- | --------- | ----------------------------------- |
+| **Return** | _mixed[]_ | | An array of aliases for the command |
+
+```php
+public function getAliases(): mixed[]
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:567`
+
+
+
+### getSynopsis()
+
+Returns the synopsis for the command.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ------------------------------------------------------------------------------ |
+| `$short` | _bool_ | No | Whether to show the short version of the synopsis (with options folded) or not |
+| **Return** | _string_ | | The synopsis |
+
+```php
+public function getSynopsis(bool $short = false): string
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:579`
+
+
+
+### addUsage()
+
+Add a command usage example, it'll be prefixed with the command name.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------- | --------- | ----------- |
+| `$usage` | _string_ | No | |
+| **Return** | _Symfony\Component\Console\Command\Command_ | | |
+
+```php
+public function addUsage(string $usage): Symfony\Component\Console\Command\Command
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:595`
+
+
+
+### getUsages()
+
+Returns alternative usages of the command.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------- | --------- | ----------- |
+| **Return** | _mixed[]_ | | |
+
+```php
+public function getUsages(): mixed[]
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:611`
+
+
+
+### getHelper()
+
+Gets a helper instance by name.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------------------------------------------------------------- | --------- | ---------------------------- |
+| `$name` | _string_ | No | |
+| **Return** | _mixed_ | | The helper value |
+| **Throws** | _Symfony\Component\Console\Exception\LogicException_ | | if no HelperSet is defined |
+| **Throws** | _Symfony\Component\Console\Exception\InvalidArgumentException_ | | if the helper is not defined |
+
+```php
+public function getHelper(string $name): mixed
+```
+
+File location: `/var/www/html/vendor/composer/../symfony/console/Command/Command.php:624`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Application/ServiceProviders/ConfigProvider.md b/docs/Application/ServiceProviders/ConfigProvider.md
new file mode 100644
index 0000000..095f87b
--- /dev/null
+++ b/docs/Application/ServiceProviders/ConfigProvider.md
@@ -0,0 +1,375 @@
+# Class ConfigProvider
+
+Full name: `spaceonfire\ApiDoc\Application\ServiceProviders\ConfigProvider`
+
+Parent class name: `spaceonfire\Container\ServiceProvider\AbstractServiceProvider`
+
+This class implements:
+
+- `spaceonfire\Container\ServiceProvider\ServiceProviderInterface`
+- `spaceonfire\Container\ContainerAwareInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [provides](#spaceonfire_apidoc_application_serviceproviders_configprovider_provides) | _string[]|array_ | Returns list of services provided by current provider. | [📢](# "Visibility: public") |
+| [register](#spaceonfire_apidoc_application_serviceproviders_configprovider_register) | _void_ | Use the register method to register items with the container. | [📢](# "Visibility: public") |
+| [makeConfig](#spaceonfire_apidoc_application_serviceproviders_configprovider_makeconfig) | _spaceonfire\ApiDoc\Config\Config_ | | [📢](# "Visibility: public") |
+| [makePhpParser](#spaceonfire_apidoc_application_serviceproviders_configprovider_makephpparser) | _PhpParser\Parser_ | | [📢](# "Visibility: public") |
+| [makeBetterReflection](#spaceonfire_apidoc_application_serviceproviders_configprovider_makebetterreflection) | _Roave\BetterReflection\BetterReflection_ | | [📢](# "Visibility: public") |
+| [makeSourceLocator](#spaceonfire_apidoc_application_serviceproviders_configprovider_makesourcelocator) | _Roave\BetterReflection\SourceLocator\Type\SourceLocator_ | | [📢](# "Visibility: public") |
+| [makeClassReflector](#spaceonfire_apidoc_application_serviceproviders_configprovider_makeclassreflector) | _Roave\BetterReflection\Reflector\ClassReflector_ | | [📢](# "Visibility: public") |
+| [makeFunctionReflector](#spaceonfire_apidoc_application_serviceproviders_configprovider_makefunctionreflector) | _Roave\BetterReflection\Reflector\FunctionReflector_ | | [📢](# "Visibility: public") |
+| [makeConstantReflector](#spaceonfire_apidoc_application_serviceproviders_configprovider_makeconstantreflector) | _Roave\BetterReflection\Reflector\ConstantReflector_ | | [📢](# "Visibility: public") |
+| [makeFilenameStrategy](#spaceonfire_apidoc_application_serviceproviders_configprovider_makefilenamestrategy) | _spaceonfire\ApiDoc\Generator\FileNameStrategyInterface_ | | [📢](# "Visibility: public") |
+| [makePersister](#spaceonfire_apidoc_application_serviceproviders_configprovider_makepersister) | _spaceonfire\ApiDoc\Generator\PersisterInterface_ | | [📢](# "Visibility: public") |
+| [makeTwig](#spaceonfire_apidoc_application_serviceproviders_configprovider_maketwig) | _Twig\Environment_ | | [📢](# "Visibility: public") |
+| [makeExampleCodeSnippetResolver](#spaceonfire_apidoc_application_serviceproviders_configprovider_makeexamplecodesnippetresolver) | _spaceonfire\ApiDoc\Element\Example\ExampleCodeSnippetResolver_ | | [📢](# "Visibility: public") |
+| [makeLocationFactory](#spaceonfire_apidoc_application_serviceproviders_configprovider_makelocationfactory) | _spaceonfire\ApiDoc\Element\Location\LocationFactory_ | | [📢](# "Visibility: public") |
+| [makeClassMembersVisibilityFilter](#spaceonfire_apidoc_application_serviceproviders_configprovider_makeclassmembersvisibilityfilter) | _spaceonfire\ApiDoc\Element\ValueObject\ClassMembersVisibilityFilter_ | | [📢](# "Visibility: public") |
+| [setIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_setidentifier) | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | Set a custom id for the service provider. This allows to register the same service provider multiple times. | [📢](# "Visibility: public") |
+| [getIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_getidentifier) | _string_ | The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
registered. Defaults to class name of provider. | [📢](# "Visibility: public") |
+| [setContainer](#spaceonfire_container_containerawaretrait_setcontainer) | _spaceonfire\Container\ContainerAwareInterface_ | | [📢](# "Visibility: public") |
+| [getContainer](#spaceonfire_container_containerawaretrait_getcontainer) | _spaceonfire\Container\ContainerInterface_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### provides()
+
+Returns list of services provided by current provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------- | --------- | ----------- |
+| **Return** | _string[]|array_ | | |
+
+```php
+public function provides(): string[]|array
+```
+
+File location: `Application/ServiceProviders/ConfigProvider.php:55`
+
+
+
+### register()
+
+Use the register method to register items with the container.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _void_ | | |
+
+```php
+public function register(): void
+```
+
+File location: `Application/ServiceProviders/ConfigProvider.php:79`
+
+
+
+### makeConfig()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Config\Config_ | | |
+
+```php
+public function makeConfig(): spaceonfire\ApiDoc\Config\Config
+```
+
+File location: `Application/ServiceProviders/ConfigProvider.php:100`
+
+
+
+### makePhpParser()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------- | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| **Return** | _PhpParser\Parser_ | | |
+
+```php
+public function makePhpParser(spaceonfire\ApiDoc\Config\Config $config): PhpParser\Parser
+```
+
+File location: `Application/ServiceProviders/ConfigProvider.php:160`
+
+
+
+### makeBetterReflection()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ----------------------------------------- | --------- | ----------- |
+| `$phpParser` | _PhpParser\Parser_ | No | |
+| **Return** | _Roave\BetterReflection\BetterReflection_ | | |
+
+```php
+public function makeBetterReflection(PhpParser\Parser $phpParser): Roave\BetterReflection\BetterReflection
+```
+
+File location: `Application/ServiceProviders/ConfigProvider.php:170`
+
+
+
+### makeSourceLocator()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------- | --------------------------------------------------------- | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| `$betterReflection` | _Roave\BetterReflection\BetterReflection_ | No | |
+| **Return** | _Roave\BetterReflection\SourceLocator\Type\SourceLocator_ | | |
+
+```php
+public function makeSourceLocator(spaceonfire\ApiDoc\Config\Config $config, Roave\BetterReflection\BetterReflection $betterReflection): Roave\BetterReflection\SourceLocator\Type\SourceLocator
+```
+
+File location: `Application/ServiceProviders/ConfigProvider.php:181`
+
+
+
+### makeClassReflector()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------------- | --------------------------------------------------------- | --------- | ----------- |
+| `$sourceLocator` | _Roave\BetterReflection\SourceLocator\Type\SourceLocator_ | No | |
+| **Return** | _Roave\BetterReflection\Reflector\ClassReflector_ | | |
+
+```php
+public function makeClassReflector(Roave\BetterReflection\SourceLocator\Type\SourceLocator $sourceLocator): Roave\BetterReflection\Reflector\ClassReflector
+```
+
+File location: `Application/ServiceProviders/ConfigProvider.php:210`
+
+
+
+### makeFunctionReflector()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ----------------- | --------------------------------------------------------- | --------- | ----------- |
+| `$sourceLocator` | _Roave\BetterReflection\SourceLocator\Type\SourceLocator_ | No | |
+| `$classReflector` | _Roave\BetterReflection\Reflector\ClassReflector_ | No | |
+| **Return** | _Roave\BetterReflection\Reflector\FunctionReflector_ | | |
+
+```php
+public function makeFunctionReflector(Roave\BetterReflection\SourceLocator\Type\SourceLocator $sourceLocator, Roave\BetterReflection\Reflector\ClassReflector $classReflector): Roave\BetterReflection\Reflector\FunctionReflector
+```
+
+File location: `Application/ServiceProviders/ConfigProvider.php:215`
+
+
+
+### makeConstantReflector()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ----------------- | --------------------------------------------------------- | --------- | ----------- |
+| `$sourceLocator` | _Roave\BetterReflection\SourceLocator\Type\SourceLocator_ | No | |
+| `$classReflector` | _Roave\BetterReflection\Reflector\ClassReflector_ | No | |
+| **Return** | _Roave\BetterReflection\Reflector\ConstantReflector_ | | |
+
+```php
+public function makeConstantReflector(Roave\BetterReflection\SourceLocator\Type\SourceLocator $sourceLocator, Roave\BetterReflection\Reflector\ClassReflector $classReflector): Roave\BetterReflection\Reflector\ConstantReflector
+```
+
+File location: `Application/ServiceProviders/ConfigProvider.php:222`
+
+
+
+### makeFilenameStrategy()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------------------------------------------------------- | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Generator\FileNameStrategyInterface_ | | |
+
+```php
+public function makeFilenameStrategy(spaceonfire\ApiDoc\Config\Config $config): spaceonfire\ApiDoc\Generator\FileNameStrategyInterface
+```
+
+File location: `Application/ServiceProviders/ConfigProvider.php:229`
+
+
+
+### makePersister()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------- | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Generator\PersisterInterface_ | | |
+
+```php
+public function makePersister(spaceonfire\ApiDoc\Config\Config $config): spaceonfire\ApiDoc\Generator\PersisterInterface
+```
+
+File location: `Application/ServiceProviders/ConfigProvider.php:234`
+
+
+
+### makeTwig()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------- | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| **Return** | _Twig\Environment_ | | |
+
+```php
+public function makeTwig(spaceonfire\ApiDoc\Config\Config $config): Twig\Environment
+```
+
+File location: `Application/ServiceProviders/ConfigProvider.php:239`
+
+
+
+### makeExampleCodeSnippetResolver()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------------------- | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\Example\ExampleCodeSnippetResolver_ | | |
+
+```php
+public function makeExampleCodeSnippetResolver(spaceonfire\ApiDoc\Config\Config $config): spaceonfire\ApiDoc\Element\Example\ExampleCodeSnippetResolver
+```
+
+File location: `Application/ServiceProviders/ConfigProvider.php:255`
+
+
+
+### makeLocationFactory()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------------- | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\Location\LocationFactory_ | | |
+
+```php
+public function makeLocationFactory(spaceonfire\ApiDoc\Config\Config $config): spaceonfire\ApiDoc\Element\Location\LocationFactory
+```
+
+File location: `Application/ServiceProviders/ConfigProvider.php:260`
+
+
+
+### makeClassMembersVisibilityFilter()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------------------------- | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\ClassMembersVisibilityFilter_ | | |
+
+```php
+public function makeClassMembersVisibilityFilter(spaceonfire\ApiDoc\Config\Config $config): spaceonfire\ApiDoc\Element\ValueObject\ClassMembersVisibilityFilter
+```
+
+File location: `Application/ServiceProviders/ConfigProvider.php:265`
+
+
+
+### setIdentifier()
+
+Set a custom id for the service provider. This allows to register the same service provider multiple times.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$id` | _string_ | No | |
+| **Return** | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | | |
+
+```php
+public function setIdentifier(string $id): spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:21`
+
+
+
+### getIdentifier()
+
+The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
+registered. Defaults to class name of provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getIdentifier(): string
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:30`
+
+
+
+### setContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ----------------------------------------------- | --------- | ----------- |
+| `$container` | _spaceonfire\Container\ContainerInterface_ | No | |
+| **Return** | _spaceonfire\Container\ContainerAwareInterface_ | | |
+
+```php
+public function setContainer(spaceonfire\Container\ContainerInterface $container): spaceonfire\Container\ContainerAwareInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:17`
+
+
+
+### getContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------ | --------- | ----------- |
+| **Return** | _spaceonfire\Container\ContainerInterface_ | | |
+
+```php
+public function getContainer(): spaceonfire\Container\ContainerInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:26`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Application/ServiceProviders/ConsoleCommandsProvider.md b/docs/Application/ServiceProviders/ConsoleCommandsProvider.md
new file mode 100644
index 0000000..779a2e2
--- /dev/null
+++ b/docs/Application/ServiceProviders/ConsoleCommandsProvider.md
@@ -0,0 +1,139 @@
+# Class ConsoleCommandsProvider
+
+Full name: `spaceonfire\ApiDoc\Application\ServiceProviders\ConsoleCommandsProvider`
+
+Parent class name: `spaceonfire\Container\ServiceProvider\AbstractServiceProvider`
+
+This class implements:
+
+- `spaceonfire\Container\ServiceProvider\ServiceProviderInterface`
+- `spaceonfire\Container\ContainerAwareInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [provides](#spaceonfire_apidoc_application_serviceproviders_consolecommandsprovider_provides) | _string[]|array_ | Returns list of services provided by current provider. | [📢](# "Visibility: public") |
+| [register](#spaceonfire_apidoc_application_serviceproviders_consolecommandsprovider_register) | _void_ | Use the register method to register items with the container. | [📢](# "Visibility: public") |
+| [setIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_setidentifier) | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | Set a custom id for the service provider. This allows to register the same service provider multiple times. | [📢](# "Visibility: public") |
+| [getIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_getidentifier) | _string_ | The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
registered. Defaults to class name of provider. | [📢](# "Visibility: public") |
+| [setContainer](#spaceonfire_container_containerawaretrait_setcontainer) | _spaceonfire\Container\ContainerAwareInterface_ | | [📢](# "Visibility: public") |
+| [getContainer](#spaceonfire_container_containerawaretrait_getcontainer) | _spaceonfire\Container\ContainerInterface_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### provides()
+
+Returns list of services provided by current provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------- | --------- | ----------- |
+| **Return** | _string[]|array_ | | |
+
+```php
+public function provides(): string[]|array
+```
+
+File location: `Application/ServiceProviders/ConsoleCommandsProvider.php:20`
+
+
+
+### register()
+
+Use the register method to register items with the container.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _void_ | | |
+
+```php
+public function register(): void
+```
+
+File location: `Application/ServiceProviders/ConsoleCommandsProvider.php:31`
+
+
+
+### setIdentifier()
+
+Set a custom id for the service provider. This allows to register the same service provider multiple times.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$id` | _string_ | No | |
+| **Return** | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | | |
+
+```php
+public function setIdentifier(string $id): spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:21`
+
+
+
+### getIdentifier()
+
+The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
+registered. Defaults to class name of provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getIdentifier(): string
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:30`
+
+
+
+### setContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ----------------------------------------------- | --------- | ----------- |
+| `$container` | _spaceonfire\Container\ContainerInterface_ | No | |
+| **Return** | _spaceonfire\Container\ContainerAwareInterface_ | | |
+
+```php
+public function setContainer(spaceonfire\Container\ContainerInterface $container): spaceonfire\Container\ContainerAwareInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:17`
+
+
+
+### getContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------ | --------- | ----------- |
+| **Return** | _spaceonfire\Container\ContainerInterface_ | | |
+
+```php
+public function getContainer(): spaceonfire\Container\ContainerInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:26`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Application/ServiceProviders/DefaultApiDocGeneratorProvider.md b/docs/Application/ServiceProviders/DefaultApiDocGeneratorProvider.md
new file mode 100644
index 0000000..8ded545
--- /dev/null
+++ b/docs/Application/ServiceProviders/DefaultApiDocGeneratorProvider.md
@@ -0,0 +1,139 @@
+# Class DefaultApiDocGeneratorProvider
+
+Full name: `spaceonfire\ApiDoc\Application\ServiceProviders\DefaultApiDocGeneratorProvider`
+
+Parent class name: `spaceonfire\Container\ServiceProvider\AbstractServiceProvider`
+
+This class implements:
+
+- `spaceonfire\Container\ServiceProvider\ServiceProviderInterface`
+- `spaceonfire\Container\ContainerAwareInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [provides](#spaceonfire_apidoc_application_serviceproviders_defaultapidocgeneratorprovider_provides) | _string[]|array_ | Returns list of services provided by current provider. | [📢](# "Visibility: public") |
+| [register](#spaceonfire_apidoc_application_serviceproviders_defaultapidocgeneratorprovider_register) | _void_ | Use the register method to register items with the container. | [📢](# "Visibility: public") |
+| [setIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_setidentifier) | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | Set a custom id for the service provider. This allows to register the same service provider multiple times. | [📢](# "Visibility: public") |
+| [getIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_getidentifier) | _string_ | The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
registered. Defaults to class name of provider. | [📢](# "Visibility: public") |
+| [setContainer](#spaceonfire_container_containerawaretrait_setcontainer) | _spaceonfire\Container\ContainerAwareInterface_ | | [📢](# "Visibility: public") |
+| [getContainer](#spaceonfire_container_containerawaretrait_getcontainer) | _spaceonfire\Container\ContainerInterface_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### provides()
+
+Returns list of services provided by current provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------- | --------- | ----------- |
+| **Return** | _string[]|array_ | | |
+
+```php
+public function provides(): string[]|array
+```
+
+File location: `Application/ServiceProviders/DefaultApiDocGeneratorProvider.php:20`
+
+
+
+### register()
+
+Use the register method to register items with the container.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _void_ | | |
+
+```php
+public function register(): void
+```
+
+File location: `Application/ServiceProviders/DefaultApiDocGeneratorProvider.php:32`
+
+
+
+### setIdentifier()
+
+Set a custom id for the service provider. This allows to register the same service provider multiple times.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$id` | _string_ | No | |
+| **Return** | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | | |
+
+```php
+public function setIdentifier(string $id): spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:21`
+
+
+
+### getIdentifier()
+
+The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
+registered. Defaults to class name of provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getIdentifier(): string
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:30`
+
+
+
+### setContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ----------------------------------------------- | --------- | ----------- |
+| `$container` | _spaceonfire\Container\ContainerInterface_ | No | |
+| **Return** | _spaceonfire\Container\ContainerAwareInterface_ | | |
+
+```php
+public function setContainer(spaceonfire\Container\ContainerInterface $container): spaceonfire\Container\ContainerAwareInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:17`
+
+
+
+### getContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------ | --------- | ----------- |
+| **Return** | _spaceonfire\Container\ContainerInterface_ | | |
+
+```php
+public function getContainer(): spaceonfire\Container\ContainerInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:26`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Application/ServiceProviders/DefaultRendererProvider.md b/docs/Application/ServiceProviders/DefaultRendererProvider.md
new file mode 100644
index 0000000..fbe2c64
--- /dev/null
+++ b/docs/Application/ServiceProviders/DefaultRendererProvider.md
@@ -0,0 +1,139 @@
+# Class DefaultRendererProvider
+
+Full name: `spaceonfire\ApiDoc\Application\ServiceProviders\DefaultRendererProvider`
+
+Parent class name: `spaceonfire\Container\ServiceProvider\AbstractServiceProvider`
+
+This class implements:
+
+- `spaceonfire\Container\ServiceProvider\ServiceProviderInterface`
+- `spaceonfire\Container\ContainerAwareInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [provides](#spaceonfire_apidoc_application_serviceproviders_defaultrendererprovider_provides) | _string[]|array_ | Returns list of services provided by current provider. | [📢](# "Visibility: public") |
+| [register](#spaceonfire_apidoc_application_serviceproviders_defaultrendererprovider_register) | _void_ | Use the register method to register items with the container. | [📢](# "Visibility: public") |
+| [setIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_setidentifier) | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | Set a custom id for the service provider. This allows to register the same service provider multiple times. | [📢](# "Visibility: public") |
+| [getIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_getidentifier) | _string_ | The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
registered. Defaults to class name of provider. | [📢](# "Visibility: public") |
+| [setContainer](#spaceonfire_container_containerawaretrait_setcontainer) | _spaceonfire\Container\ContainerAwareInterface_ | | [📢](# "Visibility: public") |
+| [getContainer](#spaceonfire_container_containerawaretrait_getcontainer) | _spaceonfire\Container\ContainerInterface_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### provides()
+
+Returns list of services provided by current provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------- | --------- | ----------- |
+| **Return** | _string[]|array_ | | |
+
+```php
+public function provides(): string[]|array
+```
+
+File location: `Application/ServiceProviders/DefaultRendererProvider.php:24`
+
+
+
+### register()
+
+Use the register method to register items with the container.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _void_ | | |
+
+```php
+public function register(): void
+```
+
+File location: `Application/ServiceProviders/DefaultRendererProvider.php:34`
+
+
+
+### setIdentifier()
+
+Set a custom id for the service provider. This allows to register the same service provider multiple times.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$id` | _string_ | No | |
+| **Return** | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | | |
+
+```php
+public function setIdentifier(string $id): spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:21`
+
+
+
+### getIdentifier()
+
+The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
+registered. Defaults to class name of provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getIdentifier(): string
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:30`
+
+
+
+### setContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ----------------------------------------------- | --------- | ----------- |
+| `$container` | _spaceonfire\Container\ContainerInterface_ | No | |
+| **Return** | _spaceonfire\Container\ContainerAwareInterface_ | | |
+
+```php
+public function setContainer(spaceonfire\Container\ContainerInterface $container): spaceonfire\Container\ContainerAwareInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:17`
+
+
+
+### getContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------ | --------- | ----------- |
+| **Return** | _spaceonfire\Container\ContainerInterface_ | | |
+
+```php
+public function getContainer(): spaceonfire\Container\ContainerInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:26`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Application/ServiceProviders/DocBlockResolverProvider.md b/docs/Application/ServiceProviders/DocBlockResolverProvider.md
new file mode 100644
index 0000000..270b4b6
--- /dev/null
+++ b/docs/Application/ServiceProviders/DocBlockResolverProvider.md
@@ -0,0 +1,139 @@
+# Class DocBlockResolverProvider
+
+Full name: `spaceonfire\ApiDoc\Application\ServiceProviders\DocBlockResolverProvider`
+
+Parent class name: `spaceonfire\Container\ServiceProvider\AbstractServiceProvider`
+
+This class implements:
+
+- `spaceonfire\Container\ServiceProvider\ServiceProviderInterface`
+- `spaceonfire\Container\ContainerAwareInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [provides](#spaceonfire_apidoc_application_serviceproviders_docblockresolverprovider_provides) | _string[]|array_ | Returns list of services provided by current provider. | [📢](# "Visibility: public") |
+| [register](#spaceonfire_apidoc_application_serviceproviders_docblockresolverprovider_register) | _void_ | Use the register method to register items with the container. | [📢](# "Visibility: public") |
+| [setIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_setidentifier) | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | Set a custom id for the service provider. This allows to register the same service provider multiple times. | [📢](# "Visibility: public") |
+| [getIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_getidentifier) | _string_ | The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
registered. Defaults to class name of provider. | [📢](# "Visibility: public") |
+| [setContainer](#spaceonfire_container_containerawaretrait_setcontainer) | _spaceonfire\Container\ContainerAwareInterface_ | | [📢](# "Visibility: public") |
+| [getContainer](#spaceonfire_container_containerawaretrait_getcontainer) | _spaceonfire\Container\ContainerInterface_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### provides()
+
+Returns list of services provided by current provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------- | --------- | ----------- |
+| **Return** | _string[]|array_ | | |
+
+```php
+public function provides(): string[]|array
+```
+
+File location: `Application/ServiceProviders/DocBlockResolverProvider.php:25`
+
+
+
+### register()
+
+Use the register method to register items with the container.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _void_ | | |
+
+```php
+public function register(): void
+```
+
+File location: `Application/ServiceProviders/DocBlockResolverProvider.php:37`
+
+
+
+### setIdentifier()
+
+Set a custom id for the service provider. This allows to register the same service provider multiple times.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$id` | _string_ | No | |
+| **Return** | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | | |
+
+```php
+public function setIdentifier(string $id): spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:21`
+
+
+
+### getIdentifier()
+
+The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
+registered. Defaults to class name of provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getIdentifier(): string
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:30`
+
+
+
+### setContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ----------------------------------------------- | --------- | ----------- |
+| `$container` | _spaceonfire\Container\ContainerInterface_ | No | |
+| **Return** | _spaceonfire\Container\ContainerAwareInterface_ | | |
+
+```php
+public function setContainer(spaceonfire\Container\ContainerInterface $container): spaceonfire\Container\ContainerAwareInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:17`
+
+
+
+### getContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------ | --------- | ----------- |
+| **Return** | _spaceonfire\Container\ContainerInterface_ | | |
+
+```php
+public function getContainer(): spaceonfire\Container\ContainerInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:26`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Application/ServiceProviders/ElementFactoryProvider.md b/docs/Application/ServiceProviders/ElementFactoryProvider.md
new file mode 100644
index 0000000..52fa83c
--- /dev/null
+++ b/docs/Application/ServiceProviders/ElementFactoryProvider.md
@@ -0,0 +1,139 @@
+# Class ElementFactoryProvider
+
+Full name: `spaceonfire\ApiDoc\Application\ServiceProviders\ElementFactoryProvider`
+
+Parent class name: `spaceonfire\Container\ServiceProvider\AbstractServiceProvider`
+
+This class implements:
+
+- `spaceonfire\Container\ServiceProvider\ServiceProviderInterface`
+- `spaceonfire\Container\ContainerAwareInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [provides](#spaceonfire_apidoc_application_serviceproviders_elementfactoryprovider_provides) | _string[]|array_ | Returns list of services provided by current provider. | [📢](# "Visibility: public") |
+| [register](#spaceonfire_apidoc_application_serviceproviders_elementfactoryprovider_register) | _void_ | Use the register method to register items with the container. | [📢](# "Visibility: public") |
+| [setIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_setidentifier) | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | Set a custom id for the service provider. This allows to register the same service provider multiple times. | [📢](# "Visibility: public") |
+| [getIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_getidentifier) | _string_ | The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
registered. Defaults to class name of provider. | [📢](# "Visibility: public") |
+| [setContainer](#spaceonfire_container_containerawaretrait_setcontainer) | _spaceonfire\Container\ContainerAwareInterface_ | | [📢](# "Visibility: public") |
+| [getContainer](#spaceonfire_container_containerawaretrait_getcontainer) | _spaceonfire\Container\ContainerInterface_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### provides()
+
+Returns list of services provided by current provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------- | --------- | ----------- |
+| **Return** | _string[]|array_ | | |
+
+```php
+public function provides(): string[]|array
+```
+
+File location: `Application/ServiceProviders/ElementFactoryProvider.php:21`
+
+
+
+### register()
+
+Use the register method to register items with the container.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _void_ | | |
+
+```php
+public function register(): void
+```
+
+File location: `Application/ServiceProviders/ElementFactoryProvider.php:31`
+
+
+
+### setIdentifier()
+
+Set a custom id for the service provider. This allows to register the same service provider multiple times.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$id` | _string_ | No | |
+| **Return** | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | | |
+
+```php
+public function setIdentifier(string $id): spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:21`
+
+
+
+### getIdentifier()
+
+The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
+registered. Defaults to class name of provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getIdentifier(): string
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:30`
+
+
+
+### setContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ----------------------------------------------- | --------- | ----------- |
+| `$container` | _spaceonfire\Container\ContainerInterface_ | No | |
+| **Return** | _spaceonfire\Container\ContainerAwareInterface_ | | |
+
+```php
+public function setContainer(spaceonfire\Container\ContainerInterface $container): spaceonfire\Container\ContainerAwareInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:17`
+
+
+
+### getContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------ | --------- | ----------- |
+| **Return** | _spaceonfire\Container\ContainerInterface_ | | |
+
+```php
+public function getContainer(): spaceonfire\Container\ContainerInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:26`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Application/ServiceProviders/FallbackBetterReflectionProvider.md b/docs/Application/ServiceProviders/FallbackBetterReflectionProvider.md
new file mode 100644
index 0000000..8497507
--- /dev/null
+++ b/docs/Application/ServiceProviders/FallbackBetterReflectionProvider.md
@@ -0,0 +1,139 @@
+# Class FallbackBetterReflectionProvider
+
+Full name: `spaceonfire\ApiDoc\Application\ServiceProviders\FallbackBetterReflectionProvider`
+
+Parent class name: `spaceonfire\Container\ServiceProvider\AbstractServiceProvider`
+
+This class implements:
+
+- `spaceonfire\Container\ServiceProvider\ServiceProviderInterface`
+- `spaceonfire\Container\ContainerAwareInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [provides](#spaceonfire_apidoc_application_serviceproviders_fallbackbetterreflectionprovider_provides) | _string[]|array_ | Returns list of services provided by current provider. | [📢](# "Visibility: public") |
+| [register](#spaceonfire_apidoc_application_serviceproviders_fallbackbetterreflectionprovider_register) | _void_ | Use the register method to register items with the container. | [📢](# "Visibility: public") |
+| [setIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_setidentifier) | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | Set a custom id for the service provider. This allows to register the same service provider multiple times. | [📢](# "Visibility: public") |
+| [getIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_getidentifier) | _string_ | The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
registered. Defaults to class name of provider. | [📢](# "Visibility: public") |
+| [setContainer](#spaceonfire_container_containerawaretrait_setcontainer) | _spaceonfire\Container\ContainerAwareInterface_ | | [📢](# "Visibility: public") |
+| [getContainer](#spaceonfire_container_containerawaretrait_getcontainer) | _spaceonfire\Container\ContainerInterface_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### provides()
+
+Returns list of services provided by current provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------- | --------- | ----------- |
+| **Return** | _string[]|array_ | | |
+
+```php
+public function provides(): string[]|array
+```
+
+File location: `Application/ServiceProviders/FallbackBetterReflectionProvider.php:16`
+
+
+
+### register()
+
+Use the register method to register items with the container.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _void_ | | |
+
+```php
+public function register(): void
+```
+
+File location: `Application/ServiceProviders/FallbackBetterReflectionProvider.php:26`
+
+
+
+### setIdentifier()
+
+Set a custom id for the service provider. This allows to register the same service provider multiple times.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$id` | _string_ | No | |
+| **Return** | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | | |
+
+```php
+public function setIdentifier(string $id): spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:21`
+
+
+
+### getIdentifier()
+
+The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
+registered. Defaults to class name of provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getIdentifier(): string
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:30`
+
+
+
+### setContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ----------------------------------------------- | --------- | ----------- |
+| `$container` | _spaceonfire\Container\ContainerInterface_ | No | |
+| **Return** | _spaceonfire\Container\ContainerAwareInterface_ | | |
+
+```php
+public function setContainer(spaceonfire\Container\ContainerInterface $container): spaceonfire\Container\ContainerAwareInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:17`
+
+
+
+### getContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------ | --------- | ----------- |
+| **Return** | _spaceonfire\Container\ContainerInterface_ | | |
+
+```php
+public function getContainer(): spaceonfire\Container\ContainerInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:26`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Application/ServiceProviders/LinkServiceProvider.md b/docs/Application/ServiceProviders/LinkServiceProvider.md
new file mode 100644
index 0000000..8034a8c
--- /dev/null
+++ b/docs/Application/ServiceProviders/LinkServiceProvider.md
@@ -0,0 +1,139 @@
+# Class LinkServiceProvider
+
+Full name: `spaceonfire\ApiDoc\Application\ServiceProviders\LinkServiceProvider`
+
+Parent class name: `spaceonfire\Container\ServiceProvider\AbstractServiceProvider`
+
+This class implements:
+
+- `spaceonfire\Container\ServiceProvider\ServiceProviderInterface`
+- `spaceonfire\Container\ContainerAwareInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [provides](#spaceonfire_apidoc_application_serviceproviders_linkserviceprovider_provides) | _string[]|array_ | Returns list of services provided by current provider. | [📢](# "Visibility: public") |
+| [register](#spaceonfire_apidoc_application_serviceproviders_linkserviceprovider_register) | _void_ | Use the register method to register items with the container. | [📢](# "Visibility: public") |
+| [setIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_setidentifier) | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | Set a custom id for the service provider. This allows to register the same service provider multiple times. | [📢](# "Visibility: public") |
+| [getIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_getidentifier) | _string_ | The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
registered. Defaults to class name of provider. | [📢](# "Visibility: public") |
+| [setContainer](#spaceonfire_container_containerawaretrait_setcontainer) | _spaceonfire\Container\ContainerAwareInterface_ | | [📢](# "Visibility: public") |
+| [getContainer](#spaceonfire_container_containerawaretrait_getcontainer) | _spaceonfire\Container\ContainerInterface_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### provides()
+
+Returns list of services provided by current provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------- | --------- | ----------- |
+| **Return** | _string[]|array_ | | |
+
+```php
+public function provides(): string[]|array
+```
+
+File location: `Application/ServiceProviders/LinkServiceProvider.php:18`
+
+
+
+### register()
+
+Use the register method to register items with the container.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _void_ | | |
+
+```php
+public function register(): void
+```
+
+File location: `Application/ServiceProviders/LinkServiceProvider.php:28`
+
+
+
+### setIdentifier()
+
+Set a custom id for the service provider. This allows to register the same service provider multiple times.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$id` | _string_ | No | |
+| **Return** | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | | |
+
+```php
+public function setIdentifier(string $id): spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:21`
+
+
+
+### getIdentifier()
+
+The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
+registered. Defaults to class name of provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getIdentifier(): string
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:30`
+
+
+
+### setContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ----------------------------------------------- | --------- | ----------- |
+| `$container` | _spaceonfire\Container\ContainerInterface_ | No | |
+| **Return** | _spaceonfire\Container\ContainerAwareInterface_ | | |
+
+```php
+public function setContainer(spaceonfire\Container\ContainerInterface $container): spaceonfire\Container\ContainerAwareInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:17`
+
+
+
+### getContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------ | --------- | ----------- |
+| **Return** | _spaceonfire\Container\ContainerInterface_ | | |
+
+```php
+public function getContainer(): spaceonfire\Container\ContainerInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:26`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Application/ServiceProviders/SignatureRendererProvider.md b/docs/Application/ServiceProviders/SignatureRendererProvider.md
new file mode 100644
index 0000000..27854a6
--- /dev/null
+++ b/docs/Application/ServiceProviders/SignatureRendererProvider.md
@@ -0,0 +1,139 @@
+# Class SignatureRendererProvider
+
+Full name: `spaceonfire\ApiDoc\Application\ServiceProviders\SignatureRendererProvider`
+
+Parent class name: `spaceonfire\Container\ServiceProvider\AbstractServiceProvider`
+
+This class implements:
+
+- `spaceonfire\Container\ServiceProvider\ServiceProviderInterface`
+- `spaceonfire\Container\ContainerAwareInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [provides](#spaceonfire_apidoc_application_serviceproviders_signaturerendererprovider_provides) | _string[]|array_ | Returns list of services provided by current provider. | [📢](# "Visibility: public") |
+| [register](#spaceonfire_apidoc_application_serviceproviders_signaturerendererprovider_register) | _void_ | Use the register method to register items with the container. | [📢](# "Visibility: public") |
+| [setIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_setidentifier) | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | Set a custom id for the service provider. This allows to register the same service provider multiple times. | [📢](# "Visibility: public") |
+| [getIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_getidentifier) | _string_ | The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
registered. Defaults to class name of provider. | [📢](# "Visibility: public") |
+| [setContainer](#spaceonfire_container_containerawaretrait_setcontainer) | _spaceonfire\Container\ContainerAwareInterface_ | | [📢](# "Visibility: public") |
+| [getContainer](#spaceonfire_container_containerawaretrait_getcontainer) | _spaceonfire\Container\ContainerInterface_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### provides()
+
+Returns list of services provided by current provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------- | --------- | ----------- |
+| **Return** | _string[]|array_ | | |
+
+```php
+public function provides(): string[]|array
+```
+
+File location: `Application/ServiceProviders/SignatureRendererProvider.php:19`
+
+
+
+### register()
+
+Use the register method to register items with the container.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _void_ | | |
+
+```php
+public function register(): void
+```
+
+File location: `Application/ServiceProviders/SignatureRendererProvider.php:29`
+
+
+
+### setIdentifier()
+
+Set a custom id for the service provider. This allows to register the same service provider multiple times.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$id` | _string_ | No | |
+| **Return** | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | | |
+
+```php
+public function setIdentifier(string $id): spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:21`
+
+
+
+### getIdentifier()
+
+The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
+registered. Defaults to class name of provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getIdentifier(): string
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:30`
+
+
+
+### setContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ----------------------------------------------- | --------- | ----------- |
+| `$container` | _spaceonfire\Container\ContainerInterface_ | No | |
+| **Return** | _spaceonfire\Container\ContainerAwareInterface_ | | |
+
+```php
+public function setContainer(spaceonfire\Container\ContainerInterface $container): spaceonfire\Container\ContainerAwareInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:17`
+
+
+
+### getContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------ | --------- | ----------- |
+| **Return** | _spaceonfire\Container\ContainerInterface_ | | |
+
+```php
+public function getContainer(): spaceonfire\Container\ContainerInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:26`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Application/ServiceProviders/TranslatorProvider.md b/docs/Application/ServiceProviders/TranslatorProvider.md
new file mode 100644
index 0000000..f49e295
--- /dev/null
+++ b/docs/Application/ServiceProviders/TranslatorProvider.md
@@ -0,0 +1,157 @@
+# Class TranslatorProvider
+
+Full name: `spaceonfire\ApiDoc\Application\ServiceProviders\TranslatorProvider`
+
+Parent class name: `spaceonfire\Container\ServiceProvider\AbstractServiceProvider`
+
+This class implements:
+
+- `spaceonfire\Container\ServiceProvider\ServiceProviderInterface`
+- `spaceonfire\Container\ContainerAwareInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [provides](#spaceonfire_apidoc_application_serviceproviders_translatorprovider_provides) | _string[]|array_ | Returns list of services provided by current provider. | [📢](# "Visibility: public") |
+| [register](#spaceonfire_apidoc_application_serviceproviders_translatorprovider_register) | _void_ | Use the register method to register items with the container. | [📢](# "Visibility: public") |
+| [makeTranslator](#spaceonfire_apidoc_application_serviceproviders_translatorprovider_maketranslator) | _Symfony\Contracts\Translation\TranslatorInterface_ | | [📢](# "Visibility: public") |
+| [setIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_setidentifier) | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | Set a custom id for the service provider. This allows to register the same service provider multiple times. | [📢](# "Visibility: public") |
+| [getIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_getidentifier) | _string_ | The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
registered. Defaults to class name of provider. | [📢](# "Visibility: public") |
+| [setContainer](#spaceonfire_container_containerawaretrait_setcontainer) | _spaceonfire\Container\ContainerAwareInterface_ | | [📢](# "Visibility: public") |
+| [getContainer](#spaceonfire_container_containerawaretrait_getcontainer) | _spaceonfire\Container\ContainerInterface_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### provides()
+
+Returns list of services provided by current provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------- | --------- | ----------- |
+| **Return** | _string[]|array_ | | |
+
+```php
+public function provides(): string[]|array
+```
+
+File location: `Application/ServiceProviders/TranslatorProvider.php:27`
+
+
+
+### register()
+
+Use the register method to register items with the container.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _void_ | | |
+
+```php
+public function register(): void
+```
+
+File location: `Application/ServiceProviders/TranslatorProvider.php:38`
+
+
+
+### makeTranslator()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------- | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| **Return** | _Symfony\Contracts\Translation\TranslatorInterface_ | | |
+
+```php
+public function makeTranslator(spaceonfire\ApiDoc\Config\Config $config): Symfony\Contracts\Translation\TranslatorInterface
+```
+
+File location: `Application/ServiceProviders/TranslatorProvider.php:44`
+
+
+
+### setIdentifier()
+
+Set a custom id for the service provider. This allows to register the same service provider multiple times.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$id` | _string_ | No | |
+| **Return** | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | | |
+
+```php
+public function setIdentifier(string $id): spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:21`
+
+
+
+### getIdentifier()
+
+The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
+registered. Defaults to class name of provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getIdentifier(): string
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:30`
+
+
+
+### setContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ----------------------------------------------- | --------- | ----------- |
+| `$container` | _spaceonfire\Container\ContainerInterface_ | No | |
+| **Return** | _spaceonfire\Container\ContainerAwareInterface_ | | |
+
+```php
+public function setContainer(spaceonfire\Container\ContainerInterface $container): spaceonfire\Container\ContainerAwareInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:17`
+
+
+
+### getContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------ | --------- | ----------- |
+| **Return** | _spaceonfire\Container\ContainerInterface_ | | |
+
+```php
+public function getContainer(): spaceonfire\Container\ContainerInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:26`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Application/ServiceProviders/TypeFactoryProvider.md b/docs/Application/ServiceProviders/TypeFactoryProvider.md
new file mode 100644
index 0000000..40bd481
--- /dev/null
+++ b/docs/Application/ServiceProviders/TypeFactoryProvider.md
@@ -0,0 +1,139 @@
+# Class TypeFactoryProvider
+
+Full name: `spaceonfire\ApiDoc\Application\ServiceProviders\TypeFactoryProvider`
+
+Parent class name: `spaceonfire\Container\ServiceProvider\AbstractServiceProvider`
+
+This class implements:
+
+- `spaceonfire\Container\ServiceProvider\ServiceProviderInterface`
+- `spaceonfire\Container\ContainerAwareInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [provides](#spaceonfire_apidoc_application_serviceproviders_typefactoryprovider_provides) | _string[]|array_ | Returns list of services provided by current provider. | [📢](# "Visibility: public") |
+| [register](#spaceonfire_apidoc_application_serviceproviders_typefactoryprovider_register) | _void_ | Use the register method to register items with the container. | [📢](# "Visibility: public") |
+| [setIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_setidentifier) | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | Set a custom id for the service provider. This allows to register the same service provider multiple times. | [📢](# "Visibility: public") |
+| [getIdentifier](#spaceonfire_container_serviceprovider_abstractserviceprovider_getidentifier) | _string_ | The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
registered. Defaults to class name of provider. | [📢](# "Visibility: public") |
+| [setContainer](#spaceonfire_container_containerawaretrait_setcontainer) | _spaceonfire\Container\ContainerAwareInterface_ | | [📢](# "Visibility: public") |
+| [getContainer](#spaceonfire_container_containerawaretrait_getcontainer) | _spaceonfire\Container\ContainerInterface_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### provides()
+
+Returns list of services provided by current provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------- | --------- | ----------- |
+| **Return** | _string[]|array_ | | |
+
+```php
+public function provides(): string[]|array
+```
+
+File location: `Application/ServiceProviders/TypeFactoryProvider.php:20`
+
+
+
+### register()
+
+Use the register method to register items with the container.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _void_ | | |
+
+```php
+public function register(): void
+```
+
+File location: `Application/ServiceProviders/TypeFactoryProvider.php:30`
+
+
+
+### setIdentifier()
+
+Set a custom id for the service provider. This allows to register the same service provider multiple times.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$id` | _string_ | No | |
+| **Return** | _spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface_ | | |
+
+```php
+public function setIdentifier(string $id): spaceonfire\Container\ServiceProvider\AbstractServiceProvider|spaceonfire\Container\ServiceProvider\ServiceProviderInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:21`
+
+
+
+### getIdentifier()
+
+The id of the service provider uniquely identifies it, so that we can quickly determine if it has already been
+registered. Defaults to class name of provider.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getIdentifier(): string
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ServiceProvider/AbstractServiceProvider.php:30`
+
+
+
+### setContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ----------------------------------------------- | --------- | ----------- |
+| `$container` | _spaceonfire\Container\ContainerInterface_ | No | |
+| **Return** | _spaceonfire\Container\ContainerAwareInterface_ | | |
+
+```php
+public function setContainer(spaceonfire\Container\ContainerInterface $container): spaceonfire\Container\ContainerAwareInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:17`
+
+
+
+### getContainer()
+
+@inheritdoc
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------ | --------- | ----------- |
+| **Return** | _spaceonfire\Container\ContainerInterface_ | | |
+
+```php
+public function getContainer(): spaceonfire\Container\ContainerInterface
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/container/src/ContainerAwareTrait.php:26`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Config/Config.md b/docs/Config/Config.md
new file mode 100644
index 0000000..6e7e7fc
--- /dev/null
+++ b/docs/Config/Config.md
@@ -0,0 +1,303 @@
+# Class Config
+
+Full name: `spaceonfire\ApiDoc\Config\Config`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------------- | ----------------------------------------- | ------- | ---------------------------- |
+| _Properties_ | | | |
+| [\$projectName](#spaceonfire_apidoc_config_config_$projectname) | _string_ | | [📢](# "Visibility: public") |
+| [\$sourceDirectories](#spaceonfire_apidoc_config_config_$sourcedirectories) | _string[]_ | | [📢](# "Visibility: public") |
+| [\$outputDirectory](#spaceonfire_apidoc_config_config_$outputdirectory) | _string_ | | [📢](# "Visibility: public") |
+| [\$scanDirectories](#spaceonfire_apidoc_config_config_$scandirectories) | _string[]_ | | [📢](# "Visibility: public") |
+| [\$scanFiles](#spaceonfire_apidoc_config_config_$scanfiles) | _string[]_ | | [📢](# "Visibility: public") |
+| [\$phpVersion](#spaceonfire_apidoc_config_config_$phpversion) | _string_ | | [📢](# "Visibility: public") |
+| [\$baseNamespace](#spaceonfire_apidoc_config_config_$basenamespace) | _string_ | | [📢](# "Visibility: public") |
+| [\$fileExtension](#spaceonfire_apidoc_config_config_$fileextension) | _string_ | | [📢](# "Visibility: public") |
+| [\$twigTemplatesPath](#spaceonfire_apidoc_config_config_$twigtemplatespath) | _string_ | | [📢](# "Visibility: public") |
+| [\$twigOptions](#spaceonfire_apidoc_config_config_$twigoptions) | _array_ | | [📢](# "Visibility: public") |
+| [\$locale](#spaceonfire_apidoc_config_config_$locale) | _string_ | | [📢](# "Visibility: public") |
+| [\$translations](#spaceonfire_apidoc_config_config_$translations) | _array_ | | [📢](# "Visibility: public") |
+| [\$examplesDirectories](#spaceonfire_apidoc_config_config_$examplesdirectories) | _string[]_ | | [📢](# "Visibility: public") |
+| [\$visibility](#spaceonfire_apidoc_config_config_$visibility) | _string[]_ | | [📢](# "Visibility: public") |
+| [\$constantsVisibility](#spaceonfire_apidoc_config_config_$constantsvisibility) | _string[]_ | | [📢](# "Visibility: public") |
+| [\$propertiesVisibility](#spaceonfire_apidoc_config_config_$propertiesvisibility) | _string[]_ | | [📢](# "Visibility: public") |
+| [\$methodsVisibility](#spaceonfire_apidoc_config_config_$methodsvisibility) | _string[]_ | | [📢](# "Visibility: public") |
+| [\$composerClassLoader](#spaceonfire_apidoc_config_config_$composerclassloader) | _Composer\Autoload\ClassLoader|null_ | | [📢](# "Visibility: public") |
+
+## Properties
+
+
+
+### \$projectName
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $projectName
+```
+
+File location: `Config/Config.php:14`
+
+
+
+### \$sourceDirectories
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string[]_
+- **Default value**: none
+
+```php
+public string[] $sourceDirectories
+```
+
+File location: `Config/Config.php:18`
+
+
+
+### \$outputDirectory
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $outputDirectory
+```
+
+File location: `Config/Config.php:22`
+
+
+
+### \$scanDirectories
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string[]_
+- **Default value**: `[]`
+
+```php
+public string[] $scanDirectories = []
+```
+
+File location: `Config/Config.php:26`
+
+
+
+### \$scanFiles
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string[]_
+- **Default value**: `[]`
+
+```php
+public string[] $scanFiles = []
+```
+
+File location: `Config/Config.php:30`
+
+
+
+### \$phpVersion
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $phpVersion
+```
+
+File location: `Config/Config.php:34`
+
+
+
+### \$baseNamespace
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $baseNamespace
+```
+
+File location: `Config/Config.php:38`
+
+
+
+### \$fileExtension
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $fileExtension
+```
+
+File location: `Config/Config.php:42`
+
+
+
+### \$twigTemplatesPath
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $twigTemplatesPath
+```
+
+File location: `Config/Config.php:46`
+
+
+
+### \$twigOptions
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _array_
+- **Default value**: `[]`
+
+```php
+public array $twigOptions = []
+```
+
+File location: `Config/Config.php:50`
+
+
+
+### \$locale
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $locale
+```
+
+File location: `Config/Config.php:54`
+
+
+
+### \$translations
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _array_
+- **Default value**: `[]`
+
+```php
+public array $translations = []
+```
+
+File location: `Config/Config.php:58`
+
+
+
+### \$examplesDirectories
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string[]_
+- **Default value**: none
+
+```php
+public string[] $examplesDirectories
+```
+
+File location: `Config/Config.php:62`
+
+
+
+### \$visibility
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string[]_
+- **Default value**: `[]`
+
+```php
+public string[] $visibility = []
+```
+
+File location: `Config/Config.php:66`
+
+
+
+### \$constantsVisibility
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string[]_
+- **Default value**: `[]`
+
+```php
+public string[] $constantsVisibility = []
+```
+
+File location: `Config/Config.php:70`
+
+
+
+### \$propertiesVisibility
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string[]_
+- **Default value**: `[]`
+
+```php
+public string[] $propertiesVisibility = []
+```
+
+File location: `Config/Config.php:74`
+
+
+
+### \$methodsVisibility
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string[]_
+- **Default value**: `[]`
+
+```php
+public string[] $methodsVisibility = []
+```
+
+File location: `Config/Config.php:78`
+
+
+
+### \$composerClassLoader
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _Composer\Autoload\ClassLoader|null_
+- **Default value**: none
+
+```php
+public Composer\Autoload\ClassLoader|null $composerClassLoader
+```
+
+File location: `Config/Config.php:82`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Config/Processor/BuilderProcessor.md b/docs/Config/Processor/BuilderProcessor.md
new file mode 100644
index 0000000..646334a
--- /dev/null
+++ b/docs/Config/Processor/BuilderProcessor.md
@@ -0,0 +1,424 @@
+# Class BuilderProcessor
+
+Full name: `spaceonfire\ApiDoc\Config\Processor\BuilderProcessor`
+
+This class implements: `spaceonfire\ApiDoc\Config\Processor\ProcessorInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | ------- | ---------------------------- |
+| _Properties_ | | | |
+| [\$examplesDirectories](#spaceonfire_apidoc_config_processor_builderprocessor_$examplesdirectories) | _string[]_ | | [📢](# "Visibility: public") |
+| [\$visibility](#spaceonfire_apidoc_config_processor_builderprocessor_$visibility) | _string[]_ | | [📢](# "Visibility: public") |
+| [\$constantsVisibility](#spaceonfire_apidoc_config_processor_builderprocessor_$constantsvisibility) | _string[]_ | | [📢](# "Visibility: public") |
+| [\$propertiesVisibility](#spaceonfire_apidoc_config_processor_builderprocessor_$propertiesvisibility) | _string[]_ | | [📢](# "Visibility: public") |
+| [\$methodsVisibility](#spaceonfire_apidoc_config_processor_builderprocessor_$methodsvisibility) | _string[]_ | | [📢](# "Visibility: public") |
+| _Methods_ | | | |
+| [withProjectName](#spaceonfire_apidoc_config_processor_builderprocessor_withprojectname) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withSourceDirectories](#spaceonfire_apidoc_config_processor_builderprocessor_withsourcedirectories) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withOutputDirectory](#spaceonfire_apidoc_config_processor_builderprocessor_withoutputdirectory) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withScanDirectories](#spaceonfire_apidoc_config_processor_builderprocessor_withscandirectories) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withScanFiles](#spaceonfire_apidoc_config_processor_builderprocessor_withscanfiles) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withPhpVersion](#spaceonfire_apidoc_config_processor_builderprocessor_withphpversion) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withBaseNamespace](#spaceonfire_apidoc_config_processor_builderprocessor_withbasenamespace) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withFileExtension](#spaceonfire_apidoc_config_processor_builderprocessor_withfileextension) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withTwigTemplatesPath](#spaceonfire_apidoc_config_processor_builderprocessor_withtwigtemplatespath) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withTwigOptions](#spaceonfire_apidoc_config_processor_builderprocessor_withtwigoptions) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withLocale](#spaceonfire_apidoc_config_processor_builderprocessor_withlocale) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withTranslations](#spaceonfire_apidoc_config_processor_builderprocessor_withtranslations) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withExamplesDirectories](#spaceonfire_apidoc_config_processor_builderprocessor_withexamplesdirectories) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withVisibility](#spaceonfire_apidoc_config_processor_builderprocessor_withvisibility) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withConstantsVisibility](#spaceonfire_apidoc_config_processor_builderprocessor_withconstantsvisibility) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withPropertiesVisibility](#spaceonfire_apidoc_config_processor_builderprocessor_withpropertiesvisibility) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [withMethodsVisibility](#spaceonfire_apidoc_config_processor_builderprocessor_withmethodsvisibility) | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | [📢](# "Visibility: public") |
+| [process](#spaceonfire_apidoc_config_processor_builderprocessor_process) | _void_ | | [📢](# "Visibility: public") |
+
+## Properties
+
+
+
+### \$examplesDirectories
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string[]_
+- **Default value**: `[]`
+
+```php
+public string[] $examplesDirectories = []
+```
+
+File location: `Config/Processor/BuilderProcessor.php:66`
+
+
+
+### \$visibility
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string[]_
+- **Default value**: none
+
+```php
+public string[] $visibility
+```
+
+File location: `Config/Processor/BuilderProcessor.php:70`
+
+
+
+### \$constantsVisibility
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string[]_
+- **Default value**: none
+
+```php
+public string[] $constantsVisibility
+```
+
+File location: `Config/Processor/BuilderProcessor.php:74`
+
+
+
+### \$propertiesVisibility
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string[]_
+- **Default value**: none
+
+```php
+public string[] $propertiesVisibility
+```
+
+File location: `Config/Processor/BuilderProcessor.php:78`
+
+
+
+### \$methodsVisibility
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string[]_
+- **Default value**: none
+
+```php
+public string[] $methodsVisibility
+```
+
+File location: `Config/Processor/BuilderProcessor.php:82`
+
+## Methods
+
+
+
+### withProjectName()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | ------------------------------------------------------ | --------- | ----------- |
+| `$projectName` | _string_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withProjectName(string $projectName): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:84`
+
+
+
+### withSourceDirectories()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------------- | ------------------------------------------------------ | --------- | ----------- |
+| `$sourceDirectories` | _string[]|array_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withSourceDirectories(string[]|array $sourceDirectories): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:95`
+
+
+
+### withOutputDirectory()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------ | ------------------------------------------------------ | --------- | ----------- |
+| `$outputDirectory` | _string_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withOutputDirectory(string $outputDirectory): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:103`
+
+
+
+### withScanDirectories()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------ | ------------------------------------------------------ | --------- | ----------- |
+| `$scanDirectories` | _string[]|array_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withScanDirectories(string[]|array $scanDirectories): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:114`
+
+
+
+### withScanFiles()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ------------------------------------------------------ | --------- | ----------- |
+| `$scanFiles` | _string[]|array_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withScanFiles(string[]|array $scanFiles): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:126`
+
+
+
+### withPhpVersion()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ------------------------------------------------------ | --------- | ----------- |
+| `$phpVersion` | _string_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withPhpVersion(string $phpVersion): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:134`
+
+
+
+### withBaseNamespace()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------------- | ------------------------------------------------------ | --------- | ----------- |
+| `$baseNamespace` | _string_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withBaseNamespace(string $baseNamespace): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:141`
+
+
+
+### withFileExtension()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------------- | ------------------------------------------------------ | --------- | ----------- |
+| `$fileExtension` | _string_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withFileExtension(string $fileExtension): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:148`
+
+
+
+### withTwigTemplatesPath()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------------- | ------------------------------------------------------ | --------- | ----------- |
+| `$twigTemplatesPath` | _string_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withTwigTemplatesPath(string $twigTemplatesPath): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:155`
+
+
+
+### withTwigOptions()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | ------------------------------------------------------ | --------- | ----------- |
+| `$twigOptions` | _array|array_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withTwigOptions(array|array $twigOptions): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:166`
+
+
+
+### withLocale()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------ | --------- | ----------- |
+| `$locale` | _string_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withLocale(string $locale): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:173`
+
+
+
+### withTranslations()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| --------------- | ------------------------------------------------------ | --------- | ----------- |
+| `$translations` | _array|array_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withTranslations(array|array $translations): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:184`
+
+
+
+### withExamplesDirectories()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------------------- | ------------------------------------------------------ | --------- | ----------- |
+| `$examplesDirectories` | _string[]|array_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withExamplesDirectories(string[]|array $examplesDirectories): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:197`
+
+
+
+### withVisibility()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ------------------------------------------------------ | --------- | ----------- |
+| `$visibility` | _string[]|array_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withVisibility(string[]|array $visibility): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:209`
+
+
+
+### withConstantsVisibility()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------------------- | ------------------------------------------------------ | --------- | ----------- |
+| `$constantsVisibility` | _string[]|array_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withConstantsVisibility(string[]|array $constantsVisibility): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:221`
+
+
+
+### withPropertiesVisibility()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ----------------------- | ------------------------------------------------------ | --------- | ----------- |
+| `$propertiesVisibility` | _string[]|array_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withPropertiesVisibility(string[]|array $propertiesVisibility): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:233`
+
+
+
+### withMethodsVisibility()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------------- | ------------------------------------------------------ | --------- | ----------- |
+| `$methodsVisibility` | _string[]|array_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Config\Processor\BuilderProcessor_ | | |
+
+```php
+public function withMethodsVisibility(string[]|array $methodsVisibility): spaceonfire\ApiDoc\Config\Processor\BuilderProcessor
+```
+
+File location: `Config/Processor/BuilderProcessor.php:245`
+
+
+
+### process()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------- | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| **Return** | _void_ | | |
+
+```php
+public function process(spaceonfire\ApiDoc\Config\Config $config): void
+```
+
+File location: `Config/Processor/BuilderProcessor.php:253`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Config/Processor/ComposerJsonProcessor.md b/docs/Config/Processor/ComposerJsonProcessor.md
new file mode 100644
index 0000000..397aef1
--- /dev/null
+++ b/docs/Config/Processor/ComposerJsonProcessor.md
@@ -0,0 +1,56 @@
+# Class ComposerJsonProcessor
+
+Full name: `spaceonfire\ApiDoc\Config\Processor\ComposerJsonProcessor`
+
+This class implements: `spaceonfire\ApiDoc\Config\Processor\ProcessorInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------- | ------ | ---------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_config_processor_composerjsonprocessor_construct) | | ComposerJsonProcessor constructor. | [📢](# "Visibility: public") |
+| [process](#spaceonfire_apidoc_config_processor_composerjsonprocessor_process) | _void_ | Process config | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+ComposerJsonProcessor constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------- | -------- | --------- | ----------- |
+| `$composerJsonPath` | _string_ | No | |
+
+```php
+public function __construct(string $composerJsonPath)
+```
+
+File location: `Config/Processor/ComposerJsonProcessor.php:26`
+
+
+
+### process()
+
+Process config
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------- | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| **Return** | _void_ | | |
+
+```php
+public function process(spaceonfire\ApiDoc\Config\Config $config): void
+```
+
+File location: `Config/Processor/ComposerJsonProcessor.php:54`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Config/Processor/ConfigFileProcessor.md b/docs/Config/Processor/ConfigFileProcessor.md
new file mode 100644
index 0000000..1b408b2
--- /dev/null
+++ b/docs/Config/Processor/ConfigFileProcessor.md
@@ -0,0 +1,67 @@
+# Class ConfigFileProcessor
+
+Full name: `spaceonfire\ApiDoc\Config\Processor\ConfigFileProcessor`
+
+This class implements: `spaceonfire\ApiDoc\Config\Processor\ProcessorInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ----------------------------------------------------------------------------------------------------------- | ------ | -------------- | ---------------------------- |
+| _Constants_ | | | |
+| [DEFAULT_CONFIG_FILENAME](#spaceonfire_apidoc_config_processor_configfileprocessor_default_config_filename) | | | [📢](# "Visibility: public") |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_config_processor_configfileprocessor_construct) | | | [📢](# "Visibility: public") |
+| [process](#spaceonfire_apidoc_config_processor_configfileprocessor_process) | _void_ | Process config | [📢](# "Visibility: public") |
+
+## Constants
+
+
+
+### DEFAULT_CONFIG_FILENAME
+
+- **Visibility**: public
+- **Value**: `'.apidocrc.php'`
+
+File location: `Config/Processor/ConfigFileProcessor.php:12`
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ----------------- | -------- | --------- | ----------- |
+| `$configFilename` | _string_ | No | |
+
+```php
+public function __construct(string $configFilename)
+```
+
+File location: `Config/Processor/ConfigFileProcessor.php:19`
+
+
+
+### process()
+
+Process config
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------- | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| **Return** | _void_ | | |
+
+```php
+public function process(spaceonfire\ApiDoc\Config\Config $config): void
+```
+
+File location: `Config/Processor/ConfigFileProcessor.php:36`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Config/Processor/ConsoleInputProcessor.md b/docs/Config/Processor/ConsoleInputProcessor.md
new file mode 100644
index 0000000..b50225b
--- /dev/null
+++ b/docs/Config/Processor/ConsoleInputProcessor.md
@@ -0,0 +1,75 @@
+# Class ConsoleInputProcessor
+
+Full name: `spaceonfire\ApiDoc\Config\Processor\ConsoleInputProcessor`
+
+This class implements: `spaceonfire\ApiDoc\Config\Processor\ProcessorInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ----------------------------------------------------------------------------------------------- | ------ | ---------------------------------- | ----------------------------------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_config_processor_consoleinputprocessor_construct) | | ConsoleInputProcessor constructor. | [📢](# "Visibility: public") |
+| [process](#spaceonfire_apidoc_config_processor_consoleinputprocessor_process) | _void_ | Process config | [📢](# "Visibility: public") |
+| [configureCommand](#spaceonfire_apidoc_config_processor_consoleinputprocessor_configurecommand) | _void_ | | [🇸](# "Static element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+ConsoleInputProcessor constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------- | ------------------------------------------------ | --------- | ----------- |
+| `$input` | _Symfony\Component\Console\Input\InputInterface_ | No | |
+
+```php
+public function __construct(Symfony\Component\Console\Input\InputInterface $input)
+```
+
+File location: `Config/Processor/ConsoleInputProcessor.php:25`
+
+
+
+### process()
+
+Process config
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------- | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| **Return** | _void_ | | |
+
+```php
+public function process(spaceonfire\ApiDoc\Config\Config $config): void
+```
+
+File location: `Config/Processor/ConsoleInputProcessor.php:33`
+
+
+
+### configureCommand()
+
+- **Visibility**: public
+- **Static**: Yes
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------- | --------- | ----------- |
+| `$command` | _Symfony\Component\Console\Command\Command_ | No | |
+| **Return** | _void_ | | |
+
+```php
+public static function configureCommand(Symfony\Component\Console\Command\Command $command): void
+```
+
+File location: `Config/Processor/ConsoleInputProcessor.php:65`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Config/Processor/DefaultsProcessor.md b/docs/Config/Processor/DefaultsProcessor.md
new file mode 100644
index 0000000..8eeaa46
--- /dev/null
+++ b/docs/Config/Processor/DefaultsProcessor.md
@@ -0,0 +1,56 @@
+# Class DefaultsProcessor
+
+Full name: `spaceonfire\ApiDoc\Config\Processor\DefaultsProcessor`
+
+This class implements: `spaceonfire\ApiDoc\Config\Processor\ProcessorInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------------- | ------ | ------------------------------ | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_config_processor_defaultsprocessor_construct) | | DefaultsProcessor constructor. | [📢](# "Visibility: public") |
+| [process](#spaceonfire_apidoc_config_processor_defaultsprocessor_process) | _void_ | Process config | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+DefaultsProcessor constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------- | ------ | --------- | ----------- |
+| `$debug` | _bool_ | No | |
+
+```php
+public function __construct(bool $debug = false)
+```
+
+File location: `Config/Processor/DefaultsProcessor.php:23`
+
+
+
+### process()
+
+Process config
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------- | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| **Return** | _void_ | | |
+
+```php
+public function process(spaceonfire\ApiDoc\Config\Config $config): void
+```
+
+File location: `Config/Processor/DefaultsProcessor.php:31`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Config/Processor/ProcessorInterface.md b/docs/Config/Processor/ProcessorInterface.md
new file mode 100644
index 0000000..13be412
--- /dev/null
+++ b/docs/Config/Processor/ProcessorInterface.md
@@ -0,0 +1,36 @@
+# Interface ProcessorInterface
+
+Full name: `spaceonfire\ApiDoc\Config\Processor\ProcessorInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------- | ------ | -------------- | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [process](#spaceonfire_apidoc_config_processor_processorinterface_process) | _void_ | Process config | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### process()
+
+Process config
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------- | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| **Return** | _void_ | | |
+
+```php
+abstract public function process(spaceonfire\ApiDoc\Config\Config $config): void
+```
+
+File location: `Config/Processor/ProcessorInterface.php:15`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/AbstractElement.md b/docs/Element/AbstractElement.md
new file mode 100644
index 0000000..e3c74b3
--- /dev/null
+++ b/docs/Element/AbstractElement.md
@@ -0,0 +1,146 @@
+# Class AbstractElement
+
+Full name: `spaceonfire\ApiDoc\Element\AbstractElement`
+
+This class implements: `spaceonfire\ApiDoc\Element\ElementInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------- | -------------------------------------------------------- | ------- | ---------------------------------------------------- |
+| _Properties_ | | | |
+| [\$name](#spaceonfire_apidoc_element_abstractelement_$name) | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | | [📢](# "Visibility: public") |
+| [\$summary](#spaceonfire_apidoc_element_abstractelement_$summary) | _string_ | | [📢](# "Visibility: public") |
+| [\$description](#spaceonfire_apidoc_element_abstractelement_$description) | _string_ | | [📢](# "Visibility: public") |
+| [\$deprecated](#spaceonfire_apidoc_element_abstractelement_$deprecated) | _bool|string_ | | [📢](# "Visibility: public") |
+| [\$location](#spaceonfire_apidoc_element_abstractelement_$location) | _spaceonfire\ApiDoc\Element\Location\Location|null_ | | [📢](# "Visibility: public") |
+| [\$links](#spaceonfire_apidoc_element_abstractelement_$links) | _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_ | | [📢](# "Visibility: public") |
+| [\$examples](#spaceonfire_apidoc_element_abstractelement_$examples) | _spaceonfire\ApiDoc\Element\ValueObject\Example[]_ | | [📢](# "Visibility: public") |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_abstractelement_construct) | | | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Properties
+
+
+
+### \$name
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Fqsen $name
+```
+
+File location: `Element/AbstractElement.php:20`
+
+
+
+### \$summary
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $summary
+```
+
+File location: `Element/AbstractElement.php:24`
+
+
+
+### \$description
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $description
+```
+
+File location: `Element/AbstractElement.php:28`
+
+
+
+### \$deprecated
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _bool|string_
+- **Default value**: `false`
+
+```php
+public bool|string $deprecated = false
+```
+
+File location: `Element/AbstractElement.php:32`
+
+
+
+### \$location
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\Location\Location|null_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\Location\Location|null $location
+```
+
+File location: `Element/AbstractElement.php:36`
+
+
+
+### \$links
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[] $links
+```
+
+File location: `Element/AbstractElement.php:40`
+
+
+
+### \$examples
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Example[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Example[] $examples
+```
+
+File location: `Element/AbstractElement.php:44`
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Final method**: Yes
+- **Visibility**: public
+
+```php
+final public function __construct()
+```
+
+File location: `Element/AbstractElement.php:46`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ClassElement.md b/docs/Element/ClassElement.md
new file mode 100644
index 0000000..97e909a
--- /dev/null
+++ b/docs/Element/ClassElement.md
@@ -0,0 +1,308 @@
+# Class ClassElement
+
+Full name: `spaceonfire\ApiDoc\Element\ClassElement`
+
+Parent class name: `spaceonfire\ApiDoc\Element\AbstractElement`
+
+This class implements: `spaceonfire\ApiDoc\Element\ElementInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------ | -------------------------------------------------------- | ------- | ---------------------------------------------------- |
+| _Properties_ | | | |
+| [\$name](#spaceonfire_apidoc_element_abstractelement_$name) | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | | [📢](# "Visibility: public") |
+| [\$summary](#spaceonfire_apidoc_element_abstractelement_$summary) | _string_ | | [📢](# "Visibility: public") |
+| [\$description](#spaceonfire_apidoc_element_abstractelement_$description) | _string_ | | [📢](# "Visibility: public") |
+| [\$deprecated](#spaceonfire_apidoc_element_abstractelement_$deprecated) | _bool|string_ | | [📢](# "Visibility: public") |
+| [\$location](#spaceonfire_apidoc_element_abstractelement_$location) | _spaceonfire\ApiDoc\Element\Location\Location|null_ | | [📢](# "Visibility: public") |
+| [\$links](#spaceonfire_apidoc_element_abstractelement_$links) | _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_ | | [📢](# "Visibility: public") |
+| [\$examples](#spaceonfire_apidoc_element_abstractelement_$examples) | _spaceonfire\ApiDoc\Element\ValueObject\Example[]_ | | [📢](# "Visibility: public") |
+| [\$abstract](#spaceonfire_apidoc_element_classelement_$abstract) | _bool_ | | [📢](# "Visibility: public") |
+| [\$final](#spaceonfire_apidoc_element_classelement_$final) | _bool_ | | [📢](# "Visibility: public") |
+| [\$constants](#spaceonfire_apidoc_element_classelement_$constants) | _spaceonfire\ApiDoc\Element\ConstantElement[]_ | | [📢](# "Visibility: public") |
+| [\$properties](#spaceonfire_apidoc_element_classelement_$properties) | _spaceonfire\ApiDoc\Element\PropertyElement[]_ | | [📢](# "Visibility: public") |
+| [\$methods](#spaceonfire_apidoc_element_classelement_$methods) | _spaceonfire\ApiDoc\Element\MethodElement[]_ | | [📢](# "Visibility: public") |
+| [\$magicProperties](#spaceonfire_apidoc_element_classelement_$magicproperties) | _spaceonfire\ApiDoc\Element\PropertyElement[]_ | | [📢](# "Visibility: public") |
+| [\$magicMethods](#spaceonfire_apidoc_element_classelement_$magicmethods) | _spaceonfire\ApiDoc\Element\MethodElement[]_ | | [📢](# "Visibility: public") |
+| [\$parent](#spaceonfire_apidoc_element_classelement_$parent) | _spaceonfire\ApiDoc\Element\ClassElement|null_ | | [📢](# "Visibility: public") |
+| [\$interfaces](#spaceonfire_apidoc_element_classelement_$interfaces) | _spaceonfire\ApiDoc\Element\InterfaceElement[]_ | | [📢](# "Visibility: public") |
+| [\$traits](#spaceonfire_apidoc_element_classelement_$traits) | _spaceonfire\ApiDoc\Element\TraitElement[]_ | | [📢](# "Visibility: public") |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_abstractelement_construct) | | | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Properties
+
+
+
+### \$name
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Fqsen $name
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:20`
+
+
+
+### \$summary
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $summary
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:24`
+
+
+
+### \$description
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $description
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:28`
+
+
+
+### \$deprecated
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _bool|string_
+- **Default value**: `false`
+
+```php
+public bool|string $deprecated = false
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:32`
+
+
+
+### \$location
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\Location\Location|null_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\Location\Location|null $location
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:36`
+
+
+
+### \$links
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[] $links
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:40`
+
+
+
+### \$examples
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Example[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Example[] $examples
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:44`
+
+
+
+### \$abstract
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _bool_
+- **Default value**: none
+
+```php
+public bool $abstract
+```
+
+File location: `Element/ClassElement.php:17`
+
+
+
+### \$final
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _bool_
+- **Default value**: none
+
+```php
+public bool $final
+```
+
+File location: `Element/ClassElement.php:21`
+
+
+
+### \$constants
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ConstantElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ConstantElement[] $constants
+```
+
+File location: `Element/ClassElement.php:25`
+
+
+
+### \$properties
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\PropertyElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\PropertyElement[] $properties
+```
+
+File location: `Element/ClassElement.php:29`
+
+
+
+### \$methods
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\MethodElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\MethodElement[] $methods
+```
+
+File location: `Element/ClassElement.php:33`
+
+
+
+### \$magicProperties
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\PropertyElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\PropertyElement[] $magicProperties
+```
+
+File location: `Element/ClassElement.php:37`
+
+
+
+### \$magicMethods
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\MethodElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\MethodElement[] $magicMethods
+```
+
+File location: `Element/ClassElement.php:41`
+
+
+
+### \$parent
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ClassElement|null_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ClassElement|null $parent
+```
+
+File location: `Element/ClassElement.php:45`
+
+
+
+### \$interfaces
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\InterfaceElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\InterfaceElement[] $interfaces
+```
+
+File location: `Element/ClassElement.php:49`
+
+
+
+### \$traits
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\TraitElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\TraitElement[] $traits
+```
+
+File location: `Element/ClassElement.php:53`
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Final method**: Yes
+- **Visibility**: public
+
+```php
+final public function __construct()
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:46`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ConstantElement.md b/docs/Element/ConstantElement.md
new file mode 100644
index 0000000..6adfe35
--- /dev/null
+++ b/docs/Element/ConstantElement.md
@@ -0,0 +1,180 @@
+# Class ConstantElement
+
+Full name: `spaceonfire\ApiDoc\Element\ConstantElement`
+
+Parent class name: `spaceonfire\ApiDoc\Element\AbstractElement`
+
+This class implements: `spaceonfire\ApiDoc\Element\ElementInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------- | ------------------------------------------------------------- | ------- | ---------------------------------------------------- |
+| _Properties_ | | | |
+| [\$name](#spaceonfire_apidoc_element_abstractelement_$name) | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | | [📢](# "Visibility: public") |
+| [\$summary](#spaceonfire_apidoc_element_abstractelement_$summary) | _string_ | | [📢](# "Visibility: public") |
+| [\$description](#spaceonfire_apidoc_element_abstractelement_$description) | _string_ | | [📢](# "Visibility: public") |
+| [\$deprecated](#spaceonfire_apidoc_element_abstractelement_$deprecated) | _bool|string_ | | [📢](# "Visibility: public") |
+| [\$location](#spaceonfire_apidoc_element_abstractelement_$location) | _spaceonfire\ApiDoc\Element\Location\Location|null_ | | [📢](# "Visibility: public") |
+| [\$links](#spaceonfire_apidoc_element_abstractelement_$links) | _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_ | | [📢](# "Visibility: public") |
+| [\$examples](#spaceonfire_apidoc_element_abstractelement_$examples) | _spaceonfire\ApiDoc\Element\ValueObject\Example[]_ | | [📢](# "Visibility: public") |
+| [\$visibility](#spaceonfire_apidoc_element_constantelement_$visibility) | _spaceonfire\ApiDoc\Element\ValueObject\Visibility|null_ | | [📢](# "Visibility: public") |
+| [\$value](#spaceonfire_apidoc_element_constantelement_$value) | _spaceonfire\ApiDoc\Element\ValueObject\Value_ | | [📢](# "Visibility: public") |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_abstractelement_construct) | | | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Properties
+
+
+
+### \$name
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Fqsen $name
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:20`
+
+
+
+### \$summary
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $summary
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:24`
+
+
+
+### \$description
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $description
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:28`
+
+
+
+### \$deprecated
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _bool|string_
+- **Default value**: `false`
+
+```php
+public bool|string $deprecated = false
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:32`
+
+
+
+### \$location
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\Location\Location|null_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\Location\Location|null $location
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:36`
+
+
+
+### \$links
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[] $links
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:40`
+
+
+
+### \$examples
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Example[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Example[] $examples
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:44`
+
+
+
+### \$visibility
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Visibility|null_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Visibility|null $visibility
+```
+
+File location: `Element/ConstantElement.php:15`
+
+
+
+### \$value
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Value_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Value $value
+```
+
+File location: `Element/ConstantElement.php:19`
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Final method**: Yes
+- **Visibility**: public
+
+```php
+final public function __construct()
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:46`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ConstantsAggregate.md b/docs/Element/ConstantsAggregate.md
new file mode 100644
index 0000000..aec23d7
--- /dev/null
+++ b/docs/Element/ConstantsAggregate.md
@@ -0,0 +1,99 @@
+# Class ConstantsAggregate
+
+Class ConstantsAggregate
+
+Full name: `spaceonfire\ApiDoc\Element\ConstantsAggregate`
+
+This class implements:
+
+- `spaceonfire\ApiDoc\Element\ElementInterface`
+- `IteratorAggregate`
+- `Traversable`
+- `Countable`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_constantsaggregate_construct) | | | [📢](# "Visibility: public") |
+| [getFqsen](#spaceonfire_apidoc_element_constantsaggregate_getfqsen) | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | Getter for `fqsen` property. | [📢](# "Visibility: public") |
+| [getIterator](#spaceonfire_apidoc_element_constantsaggregate_getiterator) | _ArrayIterator|spaceonfire\ApiDoc\Element\ConstantElement[]_ | Retrieve an external iterator | [📢](# "Visibility: public") |
+| [count](#spaceonfire_apidoc_element_constantsaggregate_count) | _int_ | Count elements of an object | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------------------- | -------------------------------------------- | --------- | ----------- |
+| `...$constantElements` | _spaceonfire\ApiDoc\Element\ConstantElement_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\ConstantElement ...$constantElements)
+```
+
+File location: `Element/ConstantsAggregate.php:25`
+
+
+
+### getFqsen()
+
+Getter for `fqsen` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | | |
+
+```php
+public function getFqsen(): spaceonfire\ApiDoc\Element\ValueObject\Fqsen
+```
+
+File location: `Element/ConstantsAggregate.php:35`
+
+
+
+### getIterator()
+
+Retrieve an external iterator
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| **Return** | _ArrayIterator|spaceonfire\ApiDoc\Element\ConstantElement[]_ | | |
+| **Throws** | _Exception_ | | on failure. |
+
+```php
+public function getIterator(): ArrayIterator|spaceonfire\ApiDoc\Element\ConstantElement[]
+```
+
+File location: `Element/ConstantsAggregate.php:44`
+
+
+
+### count()
+
+Count elements of an object
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----- | --------- | ----------------------------------------------------------------------------------------- |
+| **Return** | _int_ | | The custom count as an integer.
The return value is cast to an integer. |
+
+```php
+public function count(): int
+```
+
+File location: `Element/ConstantsAggregate.php:52`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/DocBlock/DocBlock.md b/docs/Element/DocBlock/DocBlock.md
new file mode 100644
index 0000000..c12e8b8
--- /dev/null
+++ b/docs/Element/DocBlock/DocBlock.md
@@ -0,0 +1,181 @@
+# Class DocBlock
+
+Full name: `spaceonfire\ApiDoc\Element\DocBlock\DocBlock`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------ | ---------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_docblock_docblock_construct) | | DocBlock constructor. | [📢](# "Visibility: public") |
+| [getSummary](#spaceonfire_apidoc_element_docblock_docblock_getsummary) | _string_ | Getter for `summary` property. | [📢](# "Visibility: public") |
+| [getDescription](#spaceonfire_apidoc_element_docblock_docblock_getdescription) | _string_ | Getter for `description` property. | [📢](# "Visibility: public") |
+| [getTags](#spaceonfire_apidoc_element_docblock_docblock_gettags) | _phpDocumentor\Reflection\DocBlock\Tag[]|Generator_ | Getter for `tags` property. | [📢](# "Visibility: public") |
+| [getTagsByName](#spaceonfire_apidoc_element_docblock_docblock_gettagsbyname) | _phpDocumentor\Reflection\DocBlock\Tag[]|Generator_ | | [📢](# "Visibility: public") |
+| [getFirstTagByName](#spaceonfire_apidoc_element_docblock_docblock_getfirsttagbyname) | _phpDocumentor\Reflection\DocBlock\Tag|null_ | | [📢](# "Visibility: public") |
+| [hasTag](#spaceonfire_apidoc_element_docblock_docblock_hastag) | _bool_ | | [📢](# "Visibility: public") |
+| [getTagsGroupedByName](#spaceonfire_apidoc_element_docblock_docblock_gettagsgroupedbyname) | _array|array_ | | [📢](# "Visibility: public") |
+| [hasInheritTag](#spaceonfire_apidoc_element_docblock_docblock_hasinherittag) | _bool_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+DocBlock constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | ------------------------------------------------------- | --------- | ----------- |
+| `$summary` | _string_ | No | |
+| `$description` | _string_ | No | |
+| `$tags` | _phpDocumentor\Reflection\DocBlock\Tag[]|iterable_ | No | |
+
+```php
+public function __construct(string $summary, string $description, phpDocumentor\Reflection\DocBlock\Tag[]|iterable $tags = [])
+```
+
+File location: `Element/DocBlock/DocBlock.php:33`
+
+
+
+### getSummary()
+
+Getter for `summary` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getSummary(): string
+```
+
+File location: `Element/DocBlock/DocBlock.php:69`
+
+
+
+### getDescription()
+
+Getter for `description` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getDescription(): string
+```
+
+File location: `Element/DocBlock/DocBlock.php:78`
+
+
+
+### getTags()
+
+Getter for `tags` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------------------------------------------------------- | --------- | ----------- |
+| **Return** | _phpDocumentor\Reflection\DocBlock\Tag[]|Generator_ | | |
+
+```php
+public function getTags(): phpDocumentor\Reflection\DocBlock\Tag[]|Generator
+```
+
+File location: `Element/DocBlock/DocBlock.php:87`
+
+
+
+### getTagsByName()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------------------------------------------------------- | --------- | ----------- |
+| `$tagName` | _string_ | No | |
+| **Return** | _phpDocumentor\Reflection\DocBlock\Tag[]|Generator_ | | |
+
+```php
+public function getTagsByName(string $tagName): phpDocumentor\Reflection\DocBlock\Tag[]|Generator
+```
+
+File location: `Element/DocBlock/DocBlock.php:100`
+
+
+
+### getFirstTagByName()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------- | --------- | ----------- |
+| `$tagName` | _string_ | No | |
+| **Return** | _phpDocumentor\Reflection\DocBlock\Tag|null_ | | |
+
+```php
+public function getFirstTagByName(string $tagName): phpDocumentor\Reflection\DocBlock\Tag|null
+```
+
+File location: `Element/DocBlock/DocBlock.php:111`
+
+
+
+### hasTag()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| `$tagName` | _string_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function hasTag(string $tagName): bool
+```
+
+File location: `Element/DocBlock/DocBlock.php:120`
+
+
+
+### getTagsGroupedByName()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------------------ | --------- | ----------- |
+| **Return** | _array|array_ | | |
+
+```php
+public function getTagsGroupedByName(): array|array
+```
+
+File location: `Element/DocBlock/DocBlock.php:128`
+
+
+
+### hasInheritTag()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _bool_ | | |
+
+```php
+public function hasInheritTag(): bool
+```
+
+File location: `Element/DocBlock/DocBlock.php:133`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/DocBlock/Factory/DocBlockFactory.md b/docs/Element/DocBlock/Factory/DocBlockFactory.md
new file mode 100644
index 0000000..f77a42c
--- /dev/null
+++ b/docs/Element/DocBlock/Factory/DocBlockFactory.md
@@ -0,0 +1,54 @@
+# Class DocBlockFactory
+
+Full name: `spaceonfire\ApiDoc\Element\DocBlock\Factory\DocBlockFactory`
+
+This class implements: `spaceonfire\ApiDoc\Element\DocBlock\Factory\DocBlockFactoryInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------------------- | ---------------------------------------------- | -------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_docblock_factory_docblockfactory_construct) | | | [📢](# "Visibility: public") |
+| [make](#spaceonfire_apidoc_element_docblock_factory_docblockfactory_make) | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | Creates ApiDoc's DocBlock object from reflection object. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------ | ------------------------------------------ | --------- | ----------- |
+| `$docBlockFactory` | _phpDocumentor\Reflection\DocBlockFactory_ | No | |
+
+```php
+public function __construct(phpDocumentor\Reflection\DocBlockFactory $docBlockFactory)
+```
+
+File location: `Element/DocBlock/Factory/DocBlockFactory.php:28`
+
+
+
+### make()
+
+Creates ApiDoc's DocBlock object from reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | | |
+
+```php
+public function make(object $reflection): spaceonfire\ApiDoc\Element\DocBlock\DocBlock
+```
+
+File location: `Element/DocBlock/Factory/DocBlockFactory.php:37`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/DocBlock/Factory/DocBlockFactoryInterface.md b/docs/Element/DocBlock/Factory/DocBlockFactoryInterface.md
new file mode 100644
index 0000000..a893839
--- /dev/null
+++ b/docs/Element/DocBlock/Factory/DocBlockFactoryInterface.md
@@ -0,0 +1,36 @@
+# Interface DocBlockFactoryInterface
+
+Full name: `spaceonfire\ApiDoc\Element\DocBlock\Factory\DocBlockFactoryInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ---------------------------------------------------------------------------------- | ---------------------------------------------- | -------------------------------------------------------- | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [make](#spaceonfire_apidoc_element_docblock_factory_docblockfactoryinterface_make) | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | Creates ApiDoc's DocBlock object from reflection object. | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### make()
+
+Creates ApiDoc's DocBlock object from reflection object.
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | | |
+
+```php
+abstract public function make(object $reflection): spaceonfire\ApiDoc\Element\DocBlock\DocBlock
+```
+
+File location: `Element/DocBlock/Factory/DocBlockFactoryInterface.php:16`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/DocBlock/Resolver/AbstractDocBlockResolver.md b/docs/Element/DocBlock/Resolver/AbstractDocBlockResolver.md
new file mode 100644
index 0000000..93bcc7a
--- /dev/null
+++ b/docs/Element/DocBlock/Resolver/AbstractDocBlockResolver.md
@@ -0,0 +1,78 @@
+# Class AbstractDocBlockResolver
+
+Full name: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\AbstractDocBlockResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_docblock_resolver_abstractdocblockresolver_construct) | | DocBlockResolver constructor. | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_docblock_resolver_abstractdocblockresolver_resolve) | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | Creates ApiDoc's DocBlock object from Roave BetterReflection objects. | [📌](# "Final element") [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_docblock_resolver_docblockresolverinterface_supports) | _bool_ | Checks that current resolver works with given reflection object. | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+DocBlockResolver constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------ | ---------------------------------------------------------------------- | --------- | ----------- |
+| `$docBlockFactory` | _spaceonfire\ApiDoc\Element\DocBlock\Factory\DocBlockFactoryInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\DocBlock\Factory\DocBlockFactoryInterface $docBlockFactory)
+```
+
+File location: `Element/DocBlock/Resolver/AbstractDocBlockResolver.php:22`
+
+
+
+### resolve()
+
+Creates ApiDoc's DocBlock object from Roave BetterReflection objects.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | | |
+
+```php
+final public function resolve(object $reflection): spaceonfire\ApiDoc\Element\DocBlock\DocBlock
+```
+
+File location: `Element/DocBlock/Resolver/AbstractDocBlockResolver.php:30`
+
+
+
+### supports()
+
+Checks that current resolver works with given reflection object.
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+abstract public function supports(object $reflection): bool
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/DocBlock/Resolver/DocBlockResolverInterface.php:16`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/DocBlock/Resolver/ClassDocBlockResolver.md b/docs/Element/DocBlock/Resolver/ClassDocBlockResolver.md
new file mode 100644
index 0000000..59d5c4c
--- /dev/null
+++ b/docs/Element/DocBlock/Resolver/ClassDocBlockResolver.md
@@ -0,0 +1,79 @@
+# Class ClassDocBlockResolver
+
+Full name: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\ClassDocBlockResolver`
+
+Parent class name: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\AbstractDocBlockResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_docblock_resolver_classdocblockresolver_supports) | _bool_ | Checks that current resolver works with given reflection object. | [📢](# "Visibility: public") |
+| [\_\_construct](#spaceonfire_apidoc_element_docblock_resolver_abstractdocblockresolver_construct) | | DocBlockResolver constructor. | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_docblock_resolver_abstractdocblockresolver_resolve) | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | Creates ApiDoc's DocBlock object from Roave BetterReflection objects. | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+Checks that current resolver works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/DocBlock/Resolver/ClassDocBlockResolver.php:15`
+
+
+
+### \_\_construct()
+
+DocBlockResolver constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------ | ---------------------------------------------------------------------- | --------- | ----------- |
+| `$docBlockFactory` | _spaceonfire\ApiDoc\Element\DocBlock\Factory\DocBlockFactoryInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\DocBlock\Factory\DocBlockFactoryInterface $docBlockFactory)
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/DocBlock/Resolver/AbstractDocBlockResolver.php:22`
+
+
+
+### resolve()
+
+Creates ApiDoc's DocBlock object from Roave BetterReflection objects.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | | |
+
+```php
+final public function resolve(object $reflection): spaceonfire\ApiDoc\Element\DocBlock\DocBlock
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/DocBlock/Resolver/AbstractDocBlockResolver.php:30`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/DocBlock/Resolver/CompositeDocBlockResolver.md b/docs/Element/DocBlock/Resolver/CompositeDocBlockResolver.md
new file mode 100644
index 0000000..03de1fe
--- /dev/null
+++ b/docs/Element/DocBlock/Resolver/CompositeDocBlockResolver.md
@@ -0,0 +1,74 @@
+# Class CompositeDocBlockResolver
+
+Full name: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\CompositeDocBlockResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_docblock_resolver_compositedocblockresolver_construct) | | | [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_docblock_resolver_compositedocblockresolver_supports) | _bool_ | Checks that current resolver works with given reflection object. | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_docblock_resolver_compositedocblockresolver_resolve) | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | Creates ApiDoc's DocBlock object from Roave BetterReflection objects. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| --------------- | ------------------------------------------------------------------------ | --------- | ----------- |
+| `...$resolvers` | _spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface ...$resolvers)
+```
+
+File location: `Element/DocBlock/Resolver/CompositeDocBlockResolver.php:17`
+
+
+
+### supports()
+
+Checks that current resolver works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/DocBlock/Resolver/CompositeDocBlockResolver.php:25`
+
+
+
+### resolve()
+
+Creates ApiDoc's DocBlock object from Roave BetterReflection objects.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | | |
+
+```php
+public function resolve(object $reflection): spaceonfire\ApiDoc\Element\DocBlock\DocBlock
+```
+
+File location: `Element/DocBlock/Resolver/CompositeDocBlockResolver.php:39`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/DocBlock/Resolver/DefaultDocBlockResolver.md b/docs/Element/DocBlock/Resolver/DefaultDocBlockResolver.md
new file mode 100644
index 0000000..826c5a3
--- /dev/null
+++ b/docs/Element/DocBlock/Resolver/DefaultDocBlockResolver.md
@@ -0,0 +1,79 @@
+# Class DefaultDocBlockResolver
+
+Full name: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\DefaultDocBlockResolver`
+
+Parent class name: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\AbstractDocBlockResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_docblock_resolver_defaultdocblockresolver_supports) | _bool_ | Checks that current resolver works with given reflection object. | [📢](# "Visibility: public") |
+| [\_\_construct](#spaceonfire_apidoc_element_docblock_resolver_abstractdocblockresolver_construct) | | DocBlockResolver constructor. | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_docblock_resolver_abstractdocblockresolver_resolve) | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | Creates ApiDoc's DocBlock object from Roave BetterReflection objects. | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+Checks that current resolver works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/DocBlock/Resolver/DefaultDocBlockResolver.php:12`
+
+
+
+### \_\_construct()
+
+DocBlockResolver constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------ | ---------------------------------------------------------------------- | --------- | ----------- |
+| `$docBlockFactory` | _spaceonfire\ApiDoc\Element\DocBlock\Factory\DocBlockFactoryInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\DocBlock\Factory\DocBlockFactoryInterface $docBlockFactory)
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/DocBlock/Resolver/AbstractDocBlockResolver.php:22`
+
+
+
+### resolve()
+
+Creates ApiDoc's DocBlock object from Roave BetterReflection objects.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | | |
+
+```php
+final public function resolve(object $reflection): spaceonfire\ApiDoc\Element\DocBlock\DocBlock
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/DocBlock/Resolver/AbstractDocBlockResolver.php:30`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/DocBlock/Resolver/DocBlockMerger.md b/docs/Element/DocBlock/Resolver/DocBlockMerger.md
new file mode 100644
index 0000000..c46c89e
--- /dev/null
+++ b/docs/Element/DocBlock/Resolver/DocBlockMerger.md
@@ -0,0 +1,55 @@
+# Class DocBlockMerger
+
+Full name: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockMerger`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------------------- | ---------------------------------------------- | -------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_docblock_resolver_docblockmerger_construct) | | DocBlockMerger constructor. | [📢](# "Visibility: public") |
+| [\_\_invoke](#spaceonfire_apidoc_element_docblock_resolver_docblockmerger_invoke) | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | Merge child and parent DocBlocks | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+DocBlockMerger constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------ | --------------------- | --------- | ----------- |
+| `$inheritTagNames` | _string[]|array_ | No | |
+
+```php
+public function __construct(string[]|array $inheritTagNames)
+```
+
+File location: `Element/DocBlock/Resolver/DocBlockMerger.php:26`
+
+
+
+### \_\_invoke()
+
+Merge child and parent DocBlocks
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------------------- | --------- | ----------- |
+| `$child` | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | No | |
+| `$parent` | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | | |
+
+```php
+public function __invoke(spaceonfire\ApiDoc\Element\DocBlock\DocBlock $child, spaceonfire\ApiDoc\Element\DocBlock\DocBlock $parent): spaceonfire\ApiDoc\Element\DocBlock\DocBlock
+```
+
+File location: `Element/DocBlock/Resolver/DocBlockMerger.php:37`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/DocBlock/Resolver/DocBlockResolverInterface.md b/docs/Element/DocBlock/Resolver/DocBlockResolverInterface.md
new file mode 100644
index 0000000..722e377
--- /dev/null
+++ b/docs/Element/DocBlock/Resolver/DocBlockResolverInterface.md
@@ -0,0 +1,57 @@
+# Interface DocBlockResolverInterface
+
+Full name: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_docblock_resolver_docblockresolverinterface_supports) | _bool_ | Checks that current resolver works with given reflection object. | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_docblock_resolver_docblockresolverinterface_resolve) | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | Creates ApiDoc's DocBlock object from Roave BetterReflection objects. | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+Checks that current resolver works with given reflection object.
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+abstract public function supports(object $reflection): bool
+```
+
+File location: `Element/DocBlock/Resolver/DocBlockResolverInterface.php:16`
+
+
+
+### resolve()
+
+Creates ApiDoc's DocBlock object from Roave BetterReflection objects.
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | | |
+
+```php
+abstract public function resolve(object $reflection): spaceonfire\ApiDoc\Element\DocBlock\DocBlock
+```
+
+File location: `Element/DocBlock/Resolver/DocBlockResolverInterface.php:23`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/DocBlock/Resolver/MemoizedDocBlockResolver.md b/docs/Element/DocBlock/Resolver/MemoizedDocBlockResolver.md
new file mode 100644
index 0000000..3024457
--- /dev/null
+++ b/docs/Element/DocBlock/Resolver/MemoizedDocBlockResolver.md
@@ -0,0 +1,74 @@
+# Class MemoizedDocBlockResolver
+
+Full name: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\MemoizedDocBlockResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_docblock_resolver_memoizeddocblockresolver_construct) | | | [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_docblock_resolver_memoizeddocblockresolver_supports) | _bool_ | Checks that current resolver works with given reflection object. | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_docblock_resolver_memoizeddocblockresolver_resolve) | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | Creates ApiDoc's DocBlock object from Roave BetterReflection objects. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ----------- | ------------------------------------------------------------------------ | --------- | ----------- |
+| `$resolver` | _spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface $resolver)
+```
+
+File location: `Element/DocBlock/Resolver/MemoizedDocBlockResolver.php:24`
+
+
+
+### supports()
+
+Checks that current resolver works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/DocBlock/Resolver/MemoizedDocBlockResolver.php:34`
+
+
+
+### resolve()
+
+Creates ApiDoc's DocBlock object from Roave BetterReflection objects.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | | |
+
+```php
+public function resolve(object $reflection): spaceonfire\ApiDoc\Element\DocBlock\DocBlock
+```
+
+File location: `Element/DocBlock/Resolver/MemoizedDocBlockResolver.php:43`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/DocBlock/Resolver/MethodDocBlockResolver.md b/docs/Element/DocBlock/Resolver/MethodDocBlockResolver.md
new file mode 100644
index 0000000..5882f67
--- /dev/null
+++ b/docs/Element/DocBlock/Resolver/MethodDocBlockResolver.md
@@ -0,0 +1,79 @@
+# Class MethodDocBlockResolver
+
+Full name: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\MethodDocBlockResolver`
+
+Parent class name: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\AbstractDocBlockResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_docblock_resolver_methoddocblockresolver_supports) | _bool_ | Checks that current resolver works with given reflection object. | [📢](# "Visibility: public") |
+| [\_\_construct](#spaceonfire_apidoc_element_docblock_resolver_abstractdocblockresolver_construct) | | DocBlockResolver constructor. | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_docblock_resolver_abstractdocblockresolver_resolve) | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | Creates ApiDoc's DocBlock object from Roave BetterReflection objects. | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+Checks that current resolver works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/DocBlock/Resolver/MethodDocBlockResolver.php:15`
+
+
+
+### \_\_construct()
+
+DocBlockResolver constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------ | ---------------------------------------------------------------------- | --------- | ----------- |
+| `$docBlockFactory` | _spaceonfire\ApiDoc\Element\DocBlock\Factory\DocBlockFactoryInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\DocBlock\Factory\DocBlockFactoryInterface $docBlockFactory)
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/DocBlock/Resolver/AbstractDocBlockResolver.php:22`
+
+
+
+### resolve()
+
+Creates ApiDoc's DocBlock object from Roave BetterReflection objects.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | | |
+
+```php
+final public function resolve(object $reflection): spaceonfire\ApiDoc\Element\DocBlock\DocBlock
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/DocBlock/Resolver/AbstractDocBlockResolver.php:30`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/DocBlock/Resolver/PropertyDocBlockResolver.md b/docs/Element/DocBlock/Resolver/PropertyDocBlockResolver.md
new file mode 100644
index 0000000..a96bb58
--- /dev/null
+++ b/docs/Element/DocBlock/Resolver/PropertyDocBlockResolver.md
@@ -0,0 +1,79 @@
+# Class PropertyDocBlockResolver
+
+Full name: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\PropertyDocBlockResolver`
+
+Parent class name: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\AbstractDocBlockResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------------- | ---------------------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_docblock_resolver_propertydocblockresolver_supports) | _bool_ | Checks that current resolver works with given reflection object. | [📢](# "Visibility: public") |
+| [\_\_construct](#spaceonfire_apidoc_element_docblock_resolver_abstractdocblockresolver_construct) | | DocBlockResolver constructor. | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_docblock_resolver_abstractdocblockresolver_resolve) | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | Creates ApiDoc's DocBlock object from Roave BetterReflection objects. | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+Checks that current resolver works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/DocBlock/Resolver/PropertyDocBlockResolver.php:15`
+
+
+
+### \_\_construct()
+
+DocBlockResolver constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------ | ---------------------------------------------------------------------- | --------- | ----------- |
+| `$docBlockFactory` | _spaceonfire\ApiDoc\Element\DocBlock\Factory\DocBlockFactoryInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\DocBlock\Factory\DocBlockFactoryInterface $docBlockFactory)
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/DocBlock/Resolver/AbstractDocBlockResolver.php:22`
+
+
+
+### resolve()
+
+Creates ApiDoc's DocBlock object from Roave BetterReflection objects.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | | |
+
+```php
+final public function resolve(object $reflection): spaceonfire\ApiDoc\Element\DocBlock\DocBlock
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/DocBlock/Resolver/AbstractDocBlockResolver.php:30`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ElementInterface.md b/docs/Element/ElementInterface.md
new file mode 100644
index 0000000..d01fc53
--- /dev/null
+++ b/docs/Element/ElementInterface.md
@@ -0,0 +1,13 @@
+# Interface ElementInterface
+
+Full name: `spaceonfire\ApiDoc\Element\ElementInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ---- | ---- | ------- | ---------- |
+
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Example/ExampleCodeSnippetResolver.md b/docs/Element/Example/ExampleCodeSnippetResolver.md
new file mode 100644
index 0000000..22e9798
--- /dev/null
+++ b/docs/Element/Example/ExampleCodeSnippetResolver.md
@@ -0,0 +1,72 @@
+# Class ExampleCodeSnippetResolver
+
+Full name: `spaceonfire\ApiDoc\Element\Example\ExampleCodeSnippetResolver`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ----------------------------------------------------------------------------------------- | ---------------------------------------------------- | --------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_example_examplecodesnippetresolver_construct) | | ExampleCodeSnippetResolver constructor. | [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_example_examplecodesnippetresolver_supports) | _bool_ | | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_example_examplecodesnippetresolver_resolve) | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+ExampleCodeSnippetResolver constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------------- | --------------------------------- | --------- | ----------- |
+| `$exampleDirectories` | _string[]|array_ | No | |
+| `$trimEmptyLines` | _bool_ | No | |
+| `$extensionToLanguageMap` | _array|array_ | No | |
+
+```php
+public function __construct(string[]|array $exampleDirectories, bool $trimEmptyLines = true, array|array $extensionToLanguageMap = [])
+```
+
+File location: `Element/Example/ExampleCodeSnippetResolver.php:38`
+
+
+
+### supports()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------ | --------- | ----------- |
+| `$example` | _spaceonfire\ApiDoc\Element\ValueObject\Example_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(spaceonfire\ApiDoc\Element\ValueObject\Example $example): bool
+```
+
+File location: `Element/Example/ExampleCodeSnippetResolver.php:48`
+
+
+
+### resolve()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------------------------- | --------- | ----------- |
+| `$example` | _spaceonfire\ApiDoc\Element\ValueObject\Example_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet_ | | |
+
+```php
+public function resolve(spaceonfire\ApiDoc\Element\ValueObject\Example $example): spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet
+```
+
+File location: `Element/Example/ExampleCodeSnippetResolver.php:53`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Factory/AbstractElementFactory.md b/docs/Element/Factory/AbstractElementFactory.md
new file mode 100644
index 0000000..dc39adb
--- /dev/null
+++ b/docs/Element/Factory/AbstractElementFactory.md
@@ -0,0 +1,101 @@
+# Class AbstractElementFactory
+
+Full name: `spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory`
+
+This class implements: `spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_factory_abstractelementfactory_construct) | | ElementFactory constructor. | [📢](# "Visibility: public") |
+| [make](#spaceonfire_apidoc_element_factory_abstractelementfactory_make) | _spaceonfire\ApiDoc\Element\ElementInterface_ | Creates ApiDoc element from Roave BetterReflection objects. | [📌](# "Final element") [📢](# "Visibility: public") |
+| [setParent](#spaceonfire_apidoc_element_factory_abstractelementfactory_setparent) | _void_ | Sets parent factory. | [📌](# "Final element") [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_factory_elementfactoryinterface_supports) | _bool_ | Checks that current factory works with given reflection object. | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+ElementFactory constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------- | ------------------------------------------------------------------------ | --------- | ----------- |
+| `$docBlockResolver` | _spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface_ | No | |
+| `$typeFactory` | _spaceonfire\Type\Factory\TypeFactoryInterface_ | No | |
+| `$locationFactory` | _spaceonfire\ApiDoc\Element\Location\LocationFactory_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface $docBlockResolver, spaceonfire\Type\Factory\TypeFactoryInterface $typeFactory, spaceonfire\ApiDoc\Element\Location\LocationFactory $locationFactory)
+```
+
+File location: `Element/Factory/AbstractElementFactory.php:64`
+
+
+
+### make()
+
+Creates ApiDoc element from Roave BetterReflection objects.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | --------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ElementInterface_ | | |
+
+```php
+final public function make(object $reflection): spaceonfire\ApiDoc\Element\ElementInterface
+```
+
+File location: `Element/Factory/AbstractElementFactory.php:82`
+
+
+
+### setParent()
+
+Sets parent factory.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$factory` | _spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory|spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface_ | No | |
+| **Return** | _void_ | | |
+
+```php
+final public function setParent(spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory|spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface $factory): void
+```
+
+File location: `Element/Factory/AbstractElementFactory.php:100`
+
+
+
+### supports()
+
+Checks that current factory works with given reflection object.
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+abstract public function supports(object $reflection): bool
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Factory/ElementFactoryInterface.php:16`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Factory/ClassLikeElementFactory.md b/docs/Element/Factory/ClassLikeElementFactory.md
new file mode 100644
index 0000000..e3eddf2
--- /dev/null
+++ b/docs/Element/Factory/ClassLikeElementFactory.md
@@ -0,0 +1,101 @@
+# Class ClassLikeElementFactory
+
+Full name: `spaceonfire\ApiDoc\Element\Factory\ClassLikeElementFactory`
+
+Parent class name: `spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory`
+
+This class implements: `spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------------- | ---------------------------------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_factory_classlikeelementfactory_construct) | | | [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_factory_classlikeelementfactory_supports) | _bool_ | Checks that current factory works with given reflection object. | [📢](# "Visibility: public") |
+| [make](#spaceonfire_apidoc_element_factory_abstractelementfactory_make) | _spaceonfire\ApiDoc\Element\ElementInterface_ | Creates ApiDoc element from Roave BetterReflection objects. | [📌](# "Final element") [📢](# "Visibility: public") |
+| [setParent](#spaceonfire_apidoc_element_factory_abstractelementfactory_setparent) | _void_ | Sets parent factory. | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------------------- | ------------------------------------------------------------------------------- | --------- | ----------- |
+| `$docBlockResolver` | _spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface_ | No | |
+| `$typeFactory` | _spaceonfire\Type\Factory\TypeFactoryInterface_ | No | |
+| `$locationFactory` | _spaceonfire\ApiDoc\Element\Location\LocationFactory_ | No | |
+| `$membersVisibilityFilter` | _spaceonfire\ApiDoc\Element\ValueObject\ClassMembersVisibilityFilter|null_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface $docBlockResolver, spaceonfire\Type\Factory\TypeFactoryInterface $typeFactory, spaceonfire\ApiDoc\Element\Location\LocationFactory $locationFactory, spaceonfire\ApiDoc\Element\ValueObject\ClassMembersVisibilityFilter|null $membersVisibilityFilter = null)
+```
+
+File location: `Element/Factory/ClassLikeElementFactory.php:40`
+
+
+
+### supports()
+
+Checks that current factory works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/Factory/ClassLikeElementFactory.php:55`
+
+
+
+### make()
+
+Creates ApiDoc element from Roave BetterReflection objects.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | --------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ElementInterface_ | | |
+
+```php
+final public function make(object $reflection): spaceonfire\ApiDoc\Element\ElementInterface
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Factory/AbstractElementFactory.php:82`
+
+
+
+### setParent()
+
+Sets parent factory.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$factory` | _spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory|spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface_ | No | |
+| **Return** | _void_ | | |
+
+```php
+final public function setParent(spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory|spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface $factory): void
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Factory/AbstractElementFactory.php:100`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Factory/CompositeElementFactory.md b/docs/Element/Factory/CompositeElementFactory.md
new file mode 100644
index 0000000..64af327
--- /dev/null
+++ b/docs/Element/Factory/CompositeElementFactory.md
@@ -0,0 +1,96 @@
+# Class CompositeElementFactory
+
+Full name: `spaceonfire\ApiDoc\Element\Factory\CompositeElementFactory`
+
+This class implements: `spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_factory_compositeelementfactory_construct) | | CompositeElementFactory constructor. | [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_factory_compositeelementfactory_supports) | _bool_ | Checks that current factory works with given reflection object. | [📢](# "Visibility: public") |
+| [make](#spaceonfire_apidoc_element_factory_compositeelementfactory_make) | _spaceonfire\ApiDoc\Element\ElementInterface_ | Creates ApiDoc element from Roave BetterReflection objects. | [📢](# "Visibility: public") |
+| [setParent](#spaceonfire_apidoc_element_factory_compositeelementfactory_setparent) | _void_ | Sets parent factory. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+CompositeElementFactory constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| --------------- | ------------------------------------------------------------ | --------- | ----------- |
+| `...$factories` | _spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface ...$factories)
+```
+
+File location: `Element/Factory/CompositeElementFactory.php:25`
+
+
+
+### supports()
+
+Checks that current factory works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/Factory/CompositeElementFactory.php:33`
+
+
+
+### make()
+
+Creates ApiDoc element from Roave BetterReflection objects.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | --------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ElementInterface_ | | |
+
+```php
+public function make(object $reflection): spaceonfire\ApiDoc\Element\ElementInterface
+```
+
+File location: `Element/Factory/CompositeElementFactory.php:47`
+
+
+
+### setParent()
+
+Sets parent factory.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------------ | --------- | ----------- |
+| `$parent` | _spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface_ | No | |
+| **Return** | _void_ | | |
+
+```php
+public function setParent(spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface $parent): void
+```
+
+File location: `Element/Factory/CompositeElementFactory.php:62`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Factory/ConstantElementFactory.md b/docs/Element/Factory/ConstantElementFactory.md
new file mode 100644
index 0000000..16ee8e0
--- /dev/null
+++ b/docs/Element/Factory/ConstantElementFactory.md
@@ -0,0 +1,102 @@
+# Class ConstantElementFactory
+
+Full name: `spaceonfire\ApiDoc\Element\Factory\ConstantElementFactory`
+
+Parent class name: `spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory`
+
+This class implements: `spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------------- | ---------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_factory_constantelementfactory_supports) | _bool_ | Checks that current factory works with given reflection object. | [📢](# "Visibility: public") |
+| [\_\_construct](#spaceonfire_apidoc_element_factory_abstractelementfactory_construct) | | ElementFactory constructor. | [📢](# "Visibility: public") |
+| [make](#spaceonfire_apidoc_element_factory_abstractelementfactory_make) | _spaceonfire\ApiDoc\Element\ElementInterface_ | Creates ApiDoc element from Roave BetterReflection objects. | [📌](# "Final element") [📢](# "Visibility: public") |
+| [setParent](#spaceonfire_apidoc_element_factory_abstractelementfactory_setparent) | _void_ | Sets parent factory. | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+Checks that current factory works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/Factory/ConstantElementFactory.php:21`
+
+
+
+### \_\_construct()
+
+ElementFactory constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------- | ------------------------------------------------------------------------ | --------- | ----------- |
+| `$docBlockResolver` | _spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface_ | No | |
+| `$typeFactory` | _spaceonfire\Type\Factory\TypeFactoryInterface_ | No | |
+| `$locationFactory` | _spaceonfire\ApiDoc\Element\Location\LocationFactory_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface $docBlockResolver, spaceonfire\Type\Factory\TypeFactoryInterface $typeFactory, spaceonfire\ApiDoc\Element\Location\LocationFactory $locationFactory)
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Factory/AbstractElementFactory.php:64`
+
+
+
+### make()
+
+Creates ApiDoc element from Roave BetterReflection objects.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | --------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ElementInterface_ | | |
+
+```php
+final public function make(object $reflection): spaceonfire\ApiDoc\Element\ElementInterface
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Factory/AbstractElementFactory.php:82`
+
+
+
+### setParent()
+
+Sets parent factory.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$factory` | _spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory|spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface_ | No | |
+| **Return** | _void_ | | |
+
+```php
+final public function setParent(spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory|spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface $factory): void
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Factory/AbstractElementFactory.php:100`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Factory/ElementFactoryInterface.md b/docs/Element/Factory/ElementFactoryInterface.md
new file mode 100644
index 0000000..8a5953b
--- /dev/null
+++ b/docs/Element/Factory/ElementFactoryInterface.md
@@ -0,0 +1,78 @@
+# Interface ElementFactoryInterface
+
+Full name: `spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ---------------------------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------------- | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_factory_elementfactoryinterface_supports) | _bool_ | Checks that current factory works with given reflection object. | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+| [make](#spaceonfire_apidoc_element_factory_elementfactoryinterface_make) | _spaceonfire\ApiDoc\Element\ElementInterface_ | Creates ApiDoc element from Roave BetterReflection objects. | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+| [setParent](#spaceonfire_apidoc_element_factory_elementfactoryinterface_setparent) | _void_ | Sets parent factory. | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+Checks that current factory works with given reflection object.
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+abstract public function supports(object $reflection): bool
+```
+
+File location: `Element/Factory/ElementFactoryInterface.php:16`
+
+
+
+### make()
+
+Creates ApiDoc element from Roave BetterReflection objects.
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | --------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ElementInterface_ | | |
+
+```php
+abstract public function make(object $reflection): spaceonfire\ApiDoc\Element\ElementInterface
+```
+
+File location: `Element/Factory/ElementFactoryInterface.php:23`
+
+
+
+### setParent()
+
+Sets parent factory.
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------------ | --------- | ----------- |
+| `$factory` | _spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface_ | No | |
+| **Return** | _void_ | | |
+
+```php
+abstract public function setParent(spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface $factory): void
+```
+
+File location: `Element/Factory/ElementFactoryInterface.php:29`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Factory/FunctionLikeElementFactory.md b/docs/Element/Factory/FunctionLikeElementFactory.md
new file mode 100644
index 0000000..16a8cc6
--- /dev/null
+++ b/docs/Element/Factory/FunctionLikeElementFactory.md
@@ -0,0 +1,102 @@
+# Class FunctionLikeElementFactory
+
+Full name: `spaceonfire\ApiDoc\Element\Factory\FunctionLikeElementFactory`
+
+Parent class name: `spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory`
+
+This class implements: `spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------------- | ---------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_factory_functionlikeelementfactory_supports) | _bool_ | Checks that current factory works with given reflection object. | [📢](# "Visibility: public") |
+| [\_\_construct](#spaceonfire_apidoc_element_factory_abstractelementfactory_construct) | | ElementFactory constructor. | [📢](# "Visibility: public") |
+| [make](#spaceonfire_apidoc_element_factory_abstractelementfactory_make) | _spaceonfire\ApiDoc\Element\ElementInterface_ | Creates ApiDoc element from Roave BetterReflection objects. | [📌](# "Final element") [📢](# "Visibility: public") |
+| [setParent](#spaceonfire_apidoc_element_factory_abstractelementfactory_setparent) | _void_ | Sets parent factory. | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+Checks that current factory works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/Factory/FunctionLikeElementFactory.php:30`
+
+
+
+### \_\_construct()
+
+ElementFactory constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------- | ------------------------------------------------------------------------ | --------- | ----------- |
+| `$docBlockResolver` | _spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface_ | No | |
+| `$typeFactory` | _spaceonfire\Type\Factory\TypeFactoryInterface_ | No | |
+| `$locationFactory` | _spaceonfire\ApiDoc\Element\Location\LocationFactory_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface $docBlockResolver, spaceonfire\Type\Factory\TypeFactoryInterface $typeFactory, spaceonfire\ApiDoc\Element\Location\LocationFactory $locationFactory)
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Factory/AbstractElementFactory.php:64`
+
+
+
+### make()
+
+Creates ApiDoc element from Roave BetterReflection objects.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | --------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ElementInterface_ | | |
+
+```php
+final public function make(object $reflection): spaceonfire\ApiDoc\Element\ElementInterface
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Factory/AbstractElementFactory.php:82`
+
+
+
+### setParent()
+
+Sets parent factory.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$factory` | _spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory|spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface_ | No | |
+| **Return** | _void_ | | |
+
+```php
+final public function setParent(spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory|spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface $factory): void
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Factory/AbstractElementFactory.php:100`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Factory/MemoizedElementFactory.md b/docs/Element/Factory/MemoizedElementFactory.md
new file mode 100644
index 0000000..87e1fd0
--- /dev/null
+++ b/docs/Element/Factory/MemoizedElementFactory.md
@@ -0,0 +1,94 @@
+# Class MemoizedElementFactory
+
+Full name: `spaceonfire\ApiDoc\Element\Factory\MemoizedElementFactory`
+
+This class implements: `spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_factory_memoizedelementfactory_construct) | | | [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_factory_memoizedelementfactory_supports) | _bool_ | Checks that current factory works with given reflection object. | [📢](# "Visibility: public") |
+| [make](#spaceonfire_apidoc_element_factory_memoizedelementfactory_make) | _spaceonfire\ApiDoc\Element\ElementInterface_ | Creates ApiDoc element from Roave BetterReflection objects. | [📢](# "Visibility: public") |
+| [setParent](#spaceonfire_apidoc_element_factory_memoizedelementfactory_setparent) | _void_ | Sets parent factory. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------------ | --------- | ----------- |
+| `$factory` | _spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface $factory)
+```
+
+File location: `Element/Factory/MemoizedElementFactory.php:24`
+
+
+
+### supports()
+
+Checks that current factory works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/Factory/MemoizedElementFactory.php:35`
+
+
+
+### make()
+
+Creates ApiDoc element from Roave BetterReflection objects.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | --------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ElementInterface_ | | |
+
+```php
+public function make(object $reflection): spaceonfire\ApiDoc\Element\ElementInterface
+```
+
+File location: `Element/Factory/MemoizedElementFactory.php:44`
+
+
+
+### setParent()
+
+Sets parent factory.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$factory` | _spaceonfire\ApiDoc\Element\Factory\MemoizedElementFactory|spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface_ | No | |
+| **Return** | _void_ | | |
+
+```php
+public function setParent(spaceonfire\ApiDoc\Element\Factory\MemoizedElementFactory|spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface $factory): void
+```
+
+File location: `Element/Factory/MemoizedElementFactory.php:53`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Factory/PropertyElementFactory.md b/docs/Element/Factory/PropertyElementFactory.md
new file mode 100644
index 0000000..88a1789
--- /dev/null
+++ b/docs/Element/Factory/PropertyElementFactory.md
@@ -0,0 +1,102 @@
+# Class PropertyElementFactory
+
+Full name: `spaceonfire\ApiDoc\Element\Factory\PropertyElementFactory`
+
+Parent class name: `spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory`
+
+This class implements: `spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------- | --------------------------------------------- | --------------------------------------------------------------- | ---------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_factory_propertyelementfactory_supports) | _bool_ | Checks that current factory works with given reflection object. | [📢](# "Visibility: public") |
+| [\_\_construct](#spaceonfire_apidoc_element_factory_abstractelementfactory_construct) | | ElementFactory constructor. | [📢](# "Visibility: public") |
+| [make](#spaceonfire_apidoc_element_factory_abstractelementfactory_make) | _spaceonfire\ApiDoc\Element\ElementInterface_ | Creates ApiDoc element from Roave BetterReflection objects. | [📌](# "Final element") [📢](# "Visibility: public") |
+| [setParent](#spaceonfire_apidoc_element_factory_abstractelementfactory_setparent) | _void_ | Sets parent factory. | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+Checks that current factory works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/Factory/PropertyElementFactory.php:19`
+
+
+
+### \_\_construct()
+
+ElementFactory constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------- | ------------------------------------------------------------------------ | --------- | ----------- |
+| `$docBlockResolver` | _spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface_ | No | |
+| `$typeFactory` | _spaceonfire\Type\Factory\TypeFactoryInterface_ | No | |
+| `$locationFactory` | _spaceonfire\ApiDoc\Element\Location\LocationFactory_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface $docBlockResolver, spaceonfire\Type\Factory\TypeFactoryInterface $typeFactory, spaceonfire\ApiDoc\Element\Location\LocationFactory $locationFactory)
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Factory/AbstractElementFactory.php:64`
+
+
+
+### make()
+
+Creates ApiDoc element from Roave BetterReflection objects.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | --------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ElementInterface_ | | |
+
+```php
+final public function make(object $reflection): spaceonfire\ApiDoc\Element\ElementInterface
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Factory/AbstractElementFactory.php:82`
+
+
+
+### setParent()
+
+Sets parent factory.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$factory` | _spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory|spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface_ | No | |
+| **Return** | _void_ | | |
+
+```php
+final public function setParent(spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory|spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface $factory): void
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Factory/AbstractElementFactory.php:100`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/FunctionElement.md b/docs/Element/FunctionElement.md
new file mode 100644
index 0000000..c82dcab
--- /dev/null
+++ b/docs/Element/FunctionElement.md
@@ -0,0 +1,196 @@
+# Class FunctionElement
+
+Full name: `spaceonfire\ApiDoc\Element\FunctionElement`
+
+Parent class name: `spaceonfire\ApiDoc\Element\AbstractElement`
+
+This class implements: `spaceonfire\ApiDoc\Element\ElementInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------- | ----------------------------------------------------------------- | ------- | ---------------------------------------------------- |
+| _Properties_ | | | |
+| [\$name](#spaceonfire_apidoc_element_abstractelement_$name) | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | | [📢](# "Visibility: public") |
+| [\$summary](#spaceonfire_apidoc_element_abstractelement_$summary) | _string_ | | [📢](# "Visibility: public") |
+| [\$description](#spaceonfire_apidoc_element_abstractelement_$description) | _string_ | | [📢](# "Visibility: public") |
+| [\$deprecated](#spaceonfire_apidoc_element_abstractelement_$deprecated) | _bool|string_ | | [📢](# "Visibility: public") |
+| [\$location](#spaceonfire_apidoc_element_abstractelement_$location) | _spaceonfire\ApiDoc\Element\Location\Location|null_ | | [📢](# "Visibility: public") |
+| [\$links](#spaceonfire_apidoc_element_abstractelement_$links) | _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_ | | [📢](# "Visibility: public") |
+| [\$examples](#spaceonfire_apidoc_element_abstractelement_$examples) | _spaceonfire\ApiDoc\Element\ValueObject\Example[]_ | | [📢](# "Visibility: public") |
+| [\$parameters](#spaceonfire_apidoc_element_functionelement_$parameters) | _spaceonfire\ApiDoc\Element\ValueObject\FunctionParameter[]_ | | [📢](# "Visibility: public") |
+| [\$return](#spaceonfire_apidoc_element_functionelement_$return) | _spaceonfire\ApiDoc\Element\ValueObject\FunctionReturn|null_ | | [📢](# "Visibility: public") |
+| [\$throws](#spaceonfire_apidoc_element_functionelement_$throws) | _spaceonfire\ApiDoc\Element\ValueObject\FunctionThrows[]_ | | [📢](# "Visibility: public") |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_abstractelement_construct) | | | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Properties
+
+
+
+### \$name
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Fqsen $name
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:20`
+
+
+
+### \$summary
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $summary
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:24`
+
+
+
+### \$description
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $description
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:28`
+
+
+
+### \$deprecated
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _bool|string_
+- **Default value**: `false`
+
+```php
+public bool|string $deprecated = false
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:32`
+
+
+
+### \$location
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\Location\Location|null_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\Location\Location|null $location
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:36`
+
+
+
+### \$links
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[] $links
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:40`
+
+
+
+### \$examples
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Example[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Example[] $examples
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:44`
+
+
+
+### \$parameters
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\FunctionParameter[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\FunctionParameter[] $parameters
+```
+
+File location: `Element/FunctionElement.php:20`
+
+
+
+### \$return
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\FunctionReturn|null_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\FunctionReturn|null $return
+```
+
+File location: `Element/FunctionElement.php:24`
+
+
+
+### \$throws
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\FunctionThrows[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\FunctionThrows[] $throws
+```
+
+File location: `Element/FunctionElement.php:28`
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Final method**: Yes
+- **Visibility**: public
+
+```php
+final public function __construct()
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:46`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/FunctionsAggregate.md b/docs/Element/FunctionsAggregate.md
new file mode 100644
index 0000000..6433c87
--- /dev/null
+++ b/docs/Element/FunctionsAggregate.md
@@ -0,0 +1,99 @@
+# Class FunctionsAggregate
+
+Class FunctionsAggregate
+
+Full name: `spaceonfire\ApiDoc\Element\FunctionsAggregate`
+
+This class implements:
+
+- `spaceonfire\ApiDoc\Element\ElementInterface`
+- `IteratorAggregate`
+- `Traversable`
+- `Countable`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_functionsaggregate_construct) | | | [📢](# "Visibility: public") |
+| [getFqsen](#spaceonfire_apidoc_element_functionsaggregate_getfqsen) | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | Getter for `fqsen` property. | [📢](# "Visibility: public") |
+| [getIterator](#spaceonfire_apidoc_element_functionsaggregate_getiterator) | _ArrayIterator|spaceonfire\ApiDoc\Element\FunctionElement[]_ | Retrieve an external iterator | [📢](# "Visibility: public") |
+| [count](#spaceonfire_apidoc_element_functionsaggregate_count) | _int_ | Count elements of an object | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------------------- | -------------------------------------------- | --------- | ----------- |
+| `...$functionElements` | _spaceonfire\ApiDoc\Element\FunctionElement_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\FunctionElement ...$functionElements)
+```
+
+File location: `Element/FunctionsAggregate.php:25`
+
+
+
+### getFqsen()
+
+Getter for `fqsen` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | | |
+
+```php
+public function getFqsen(): spaceonfire\ApiDoc\Element\ValueObject\Fqsen
+```
+
+File location: `Element/FunctionsAggregate.php:35`
+
+
+
+### getIterator()
+
+Retrieve an external iterator
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| **Return** | _ArrayIterator|spaceonfire\ApiDoc\Element\FunctionElement[]_ | | |
+| **Throws** | _Exception_ | | on failure. |
+
+```php
+public function getIterator(): ArrayIterator|spaceonfire\ApiDoc\Element\FunctionElement[]
+```
+
+File location: `Element/FunctionsAggregate.php:44`
+
+
+
+### count()
+
+Count elements of an object
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----- | --------- | ----------------------------------------------------------------------------------------- |
+| **Return** | _int_ | | The custom count as an integer.
The return value is cast to an integer. |
+
+```php
+public function count(): int
+```
+
+File location: `Element/FunctionsAggregate.php:52`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/InterfaceElement.md b/docs/Element/InterfaceElement.md
new file mode 100644
index 0000000..7e80bc1
--- /dev/null
+++ b/docs/Element/InterfaceElement.md
@@ -0,0 +1,228 @@
+# Class InterfaceElement
+
+Full name: `spaceonfire\ApiDoc\Element\InterfaceElement`
+
+Parent class name: `spaceonfire\ApiDoc\Element\AbstractElement`
+
+This class implements: `spaceonfire\ApiDoc\Element\ElementInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ---------------------------------------------------------------------------------- | -------------------------------------------------------- | ------- | ---------------------------------------------------- |
+| _Properties_ | | | |
+| [\$name](#spaceonfire_apidoc_element_abstractelement_$name) | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | | [📢](# "Visibility: public") |
+| [\$summary](#spaceonfire_apidoc_element_abstractelement_$summary) | _string_ | | [📢](# "Visibility: public") |
+| [\$description](#spaceonfire_apidoc_element_abstractelement_$description) | _string_ | | [📢](# "Visibility: public") |
+| [\$deprecated](#spaceonfire_apidoc_element_abstractelement_$deprecated) | _bool|string_ | | [📢](# "Visibility: public") |
+| [\$location](#spaceonfire_apidoc_element_abstractelement_$location) | _spaceonfire\ApiDoc\Element\Location\Location|null_ | | [📢](# "Visibility: public") |
+| [\$links](#spaceonfire_apidoc_element_abstractelement_$links) | _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_ | | [📢](# "Visibility: public") |
+| [\$examples](#spaceonfire_apidoc_element_abstractelement_$examples) | _spaceonfire\ApiDoc\Element\ValueObject\Example[]_ | | [📢](# "Visibility: public") |
+| [\$constants](#spaceonfire_apidoc_element_interfaceelement_$constants) | _spaceonfire\ApiDoc\Element\ConstantElement[]_ | | [📢](# "Visibility: public") |
+| [\$methods](#spaceonfire_apidoc_element_interfaceelement_$methods) | _spaceonfire\ApiDoc\Element\MethodElement[]_ | | [📢](# "Visibility: public") |
+| [\$magicProperties](#spaceonfire_apidoc_element_interfaceelement_$magicproperties) | _spaceonfire\ApiDoc\Element\PropertyElement[]_ | | [📢](# "Visibility: public") |
+| [\$magicMethods](#spaceonfire_apidoc_element_interfaceelement_$magicmethods) | _spaceonfire\ApiDoc\Element\MethodElement[]_ | | [📢](# "Visibility: public") |
+| [\$parents](#spaceonfire_apidoc_element_interfaceelement_$parents) | _spaceonfire\ApiDoc\Element\InterfaceElement[]_ | | [📢](# "Visibility: public") |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_abstractelement_construct) | | | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Properties
+
+
+
+### \$name
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Fqsen $name
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:20`
+
+
+
+### \$summary
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $summary
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:24`
+
+
+
+### \$description
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $description
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:28`
+
+
+
+### \$deprecated
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _bool|string_
+- **Default value**: `false`
+
+```php
+public bool|string $deprecated = false
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:32`
+
+
+
+### \$location
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\Location\Location|null_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\Location\Location|null $location
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:36`
+
+
+
+### \$links
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[] $links
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:40`
+
+
+
+### \$examples
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Example[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Example[] $examples
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:44`
+
+
+
+### \$constants
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ConstantElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ConstantElement[] $constants
+```
+
+File location: `Element/InterfaceElement.php:17`
+
+
+
+### \$methods
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\MethodElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\MethodElement[] $methods
+```
+
+File location: `Element/InterfaceElement.php:21`
+
+
+
+### \$magicProperties
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\PropertyElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\PropertyElement[] $magicProperties
+```
+
+File location: `Element/InterfaceElement.php:25`
+
+
+
+### \$magicMethods
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\MethodElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\MethodElement[] $magicMethods
+```
+
+File location: `Element/InterfaceElement.php:29`
+
+
+
+### \$parents
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\InterfaceElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\InterfaceElement[] $parents
+```
+
+File location: `Element/InterfaceElement.php:33`
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Final method**: Yes
+- **Visibility**: public
+
+```php
+final public function __construct()
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:46`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Link/AnchorGenerator.md b/docs/Element/Link/AnchorGenerator.md
new file mode 100644
index 0000000..18f00af
--- /dev/null
+++ b/docs/Element/Link/AnchorGenerator.md
@@ -0,0 +1,33 @@
+# Class AnchorGenerator
+
+Full name: `spaceonfire\ApiDoc\Element\Link\AnchorGenerator`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------- | -------- | ------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_invoke](#spaceonfire_apidoc_element_link_anchorgenerator_invoke) | _string_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_invoke()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------------------- | --------- | ----------- |
+| `$fqsen` | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | No | |
+| **Return** | _string_ | | |
+
+```php
+public function __invoke(spaceonfire\ApiDoc\Element\ValueObject\Fqsen $fqsen): string
+```
+
+File location: `Element/Link/AnchorGenerator.php:12`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Link/CompositeLinkResolver.md b/docs/Element/Link/CompositeLinkResolver.md
new file mode 100644
index 0000000..6613923
--- /dev/null
+++ b/docs/Element/Link/CompositeLinkResolver.md
@@ -0,0 +1,73 @@
+# Class CompositeLinkResolver
+
+Full name: `spaceonfire\ApiDoc\Element\Link\CompositeLinkResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\Link\LinkResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------------- | ------------------------------- | ---------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_link_compositelinkresolver_construct) | | CompositeLinkResolver constructor. | [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_link_compositelinkresolver_supports) | _bool_ | | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_link_compositelinkresolver_resolve) | _Psr\Http\Message\UriInterface_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+CompositeLinkResolver constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| --------------- | ------------------------------------------------------- | --------- | ----------- |
+| `...$resolvers` | _spaceonfire\ApiDoc\Element\Link\LinkResolverInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\Link\LinkResolverInterface ...$resolvers)
+```
+
+File location: `Element/Link/CompositeLinkResolver.php:21`
+
+
+
+### supports()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------ | --------- | ----------- |
+| `$link` | _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(spaceonfire\ApiDoc\Element\ValueObject\LinkInterface $link): bool
+```
+
+File location: `Element/Link/CompositeLinkResolver.php:29`
+
+
+
+### resolve()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------ | --------- | ----------- |
+| `$link` | _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface_ | No | |
+| `$from` | _mixed|null_ | No | |
+| **Return** | _Psr\Http\Message\UriInterface_ | | |
+
+```php
+public function resolve(spaceonfire\ApiDoc\Element\ValueObject\LinkInterface $link, mixed|null $from = null): Psr\Http\Message\UriInterface
+```
+
+File location: `Element/Link/CompositeLinkResolver.php:43`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Link/ExternalLinkResolver.md b/docs/Element/Link/ExternalLinkResolver.md
new file mode 100644
index 0000000..7f638d6
--- /dev/null
+++ b/docs/Element/Link/ExternalLinkResolver.md
@@ -0,0 +1,54 @@
+# Class ExternalLinkResolver
+
+Full name: `spaceonfire\ApiDoc\Element\Link\ExternalLinkResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\Link\LinkResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------- | ------------------------------- | ------- | ---------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_link_externallinkresolver_supports) | _bool_ | | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_link_externallinkresolver_resolve) | _Psr\Http\Message\UriInterface_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------ | --------- | ----------- |
+| `$link` | _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(spaceonfire\ApiDoc\Element\ValueObject\LinkInterface $link): bool
+```
+
+File location: `Element/Link/ExternalLinkResolver.php:16`
+
+
+
+### resolve()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$link` | _spaceonfire\ApiDoc\Element\ValueObject\ExternalLink|spaceonfire\ApiDoc\Element\ValueObject\LinkInterface_ | No | |
+| `$_` | | No | |
+| **Return** | _Psr\Http\Message\UriInterface_ | | |
+
+```php
+public function resolve(spaceonfire\ApiDoc\Element\ValueObject\ExternalLink|spaceonfire\ApiDoc\Element\ValueObject\LinkInterface $link, $_ = null): Psr\Http\Message\UriInterface
+```
+
+File location: `Element/Link/ExternalLinkResolver.php:25`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Link/FqsenLinkResolver.md b/docs/Element/Link/FqsenLinkResolver.md
new file mode 100644
index 0000000..c791a7e
--- /dev/null
+++ b/docs/Element/Link/FqsenLinkResolver.md
@@ -0,0 +1,71 @@
+# Class FqsenLinkResolver
+
+Full name: `spaceonfire\ApiDoc\Element\Link\FqsenLinkResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\Link\LinkResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ----------------------------------------------------------------------------- | ------------------------------- | ------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_link_fqsenlinkresolver_construct) | | | [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_link_fqsenlinkresolver_supports) | _bool_ | | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_link_fqsenlinkresolver_resolve) | _Psr\Http\Message\UriInterface_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------- | -------------------------------------------------------- | --------- | ----------- |
+| `$fileNameStrategy` | _spaceonfire\ApiDoc\Generator\FileNameStrategyInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Generator\FileNameStrategyInterface $fileNameStrategy)
+```
+
+File location: `Element/Link/FqsenLinkResolver.php:31`
+
+
+
+### supports()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------ | --------- | ----------- |
+| `$link` | _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(spaceonfire\ApiDoc\Element\ValueObject\LinkInterface $link): bool
+```
+
+File location: `Element/Link/FqsenLinkResolver.php:41`
+
+
+
+### resolve()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------------------------------------------------------------ | --------- | ----------- |
+| `$link` | _spaceonfire\ApiDoc\Element\ValueObject\FqsenLink|spaceonfire\ApiDoc\Element\ValueObject\LinkInterface_ | No | |
+| `$from` | _mixed|null_ | No | |
+| **Return** | _Psr\Http\Message\UriInterface_ | | |
+
+```php
+public function resolve(spaceonfire\ApiDoc\Element\ValueObject\FqsenLink|spaceonfire\ApiDoc\Element\ValueObject\LinkInterface $link, mixed|null $from = null): Psr\Http\Message\UriInterface
+```
+
+File location: `Element/Link/FqsenLinkResolver.php:50`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Link/LinkResolverInterface.md b/docs/Element/Link/LinkResolverInterface.md
new file mode 100644
index 0000000..6a1c7da
--- /dev/null
+++ b/docs/Element/Link/LinkResolverInterface.md
@@ -0,0 +1,54 @@
+# Interface LinkResolverInterface
+
+Full name: `spaceonfire\ApiDoc\Element\Link\LinkResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------- | ------------------------------- | ------- | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_link_linkresolverinterface_supports) | _bool_ | | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_link_linkresolverinterface_resolve) | _Psr\Http\Message\UriInterface_ | | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------ | --------- | ----------- |
+| `$link` | _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+abstract public function supports(spaceonfire\ApiDoc\Element\ValueObject\LinkInterface $link): bool
+```
+
+File location: `Element/Link/LinkResolverInterface.php:16`
+
+
+
+### resolve()
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------ | --------- | ----------- |
+| `$link` | _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface_ | No | |
+| `$from` | _mixed|null_ | No | |
+| **Return** | _Psr\Http\Message\UriInterface_ | | |
+
+```php
+abstract public function resolve(spaceonfire\ApiDoc\Element\ValueObject\LinkInterface $link, mixed|null $from = null): Psr\Http\Message\UriInterface
+```
+
+File location: `Element/Link/LinkResolverInterface.php:23`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Location/Location.md b/docs/Element/Location/Location.md
new file mode 100644
index 0000000..fce76b5
--- /dev/null
+++ b/docs/Element/Location/Location.md
@@ -0,0 +1,113 @@
+# Class Location
+
+Full name: `spaceonfire\ApiDoc\Element\Location\Location`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------------- | -------- | ----------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_location_location_construct) | | Location constructor. | [📢](# "Visibility: public") |
+| [getAbsolutePath](#spaceonfire_apidoc_element_location_location_getabsolutepath) | _string_ | Getter for `absolutePath` property. | [📢](# "Visibility: public") |
+| [getFilename](#spaceonfire_apidoc_element_location_location_getfilename) | _string_ | Getter for `filename` property. | [📢](# "Visibility: public") |
+| [getLineNumber](#spaceonfire_apidoc_element_location_location_getlinenumber) | _int_ | Getter for `lineNumber` property. | [📢](# "Visibility: public") |
+| [getColumnNumber](#spaceonfire_apidoc_element_location_location_getcolumnnumber) | _int_ | Getter for `columnNumber` property. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+Location constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| --------------- | -------- | --------- | ----------- |
+| `$absolutePath` | _string_ | No | |
+| `$filename` | _string_ | No | |
+| `$lineNumber` | _int_ | No | |
+| `$columnNumber` | _int_ | No | |
+
+```php
+public function __construct(string $absolutePath, string $filename, int $lineNumber, int $columnNumber = 0)
+```
+
+File location: `Element/Location/Location.php:33`
+
+
+
+### getAbsolutePath()
+
+Getter for `absolutePath` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getAbsolutePath(): string
+```
+
+File location: `Element/Location/Location.php:45`
+
+
+
+### getFilename()
+
+Getter for `filename` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getFilename(): string
+```
+
+File location: `Element/Location/Location.php:54`
+
+
+
+### getLineNumber()
+
+Getter for `lineNumber` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----- | --------- | ----------- |
+| **Return** | _int_ | | |
+
+```php
+public function getLineNumber(): int
+```
+
+File location: `Element/Location/Location.php:63`
+
+
+
+### getColumnNumber()
+
+Getter for `columnNumber` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----- | --------- | ----------- |
+| **Return** | _int_ | | |
+
+```php
+public function getColumnNumber(): int
+```
+
+File location: `Element/Location/Location.php:72`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Location/LocationFactory.md b/docs/Element/Location/LocationFactory.md
new file mode 100644
index 0000000..0063bde
--- /dev/null
+++ b/docs/Element/Location/LocationFactory.md
@@ -0,0 +1,54 @@
+# Class LocationFactory
+
+Full name: `spaceonfire\ApiDoc\Element\Location\LocationFactory`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------- | ---------------------------------------------- | ---------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_location_locationfactory_construct) | | LocationFactory constructor. | [📢](# "Visibility: public") |
+| [make](#spaceonfire_apidoc_element_location_locationfactory_make) | _spaceonfire\ApiDoc\Element\Location\Location_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+LocationFactory constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------------- | --------------------- | --------- | ----------- |
+| `$sourceDirectories` | _string[]|array_ | No | |
+
+```php
+public function __construct(string[]|array $sourceDirectories)
+```
+
+File location: `Element/Location/LocationFactory.php:20`
+
+
+
+### make()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| --------------- | ---------------------------------------------- | --------- | ----------- |
+| `$absolutePath` | _string_ | No | |
+| `$lineNumber` | _int_ | No | |
+| `$columnNumber` | _int_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\Location\Location_ | | |
+
+```php
+public function make(string $absolutePath, int $lineNumber, int $columnNumber = 0): spaceonfire\ApiDoc\Element\Location\Location
+```
+
+File location: `Element/Location/LocationFactory.php:26`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/MethodElement.md b/docs/Element/MethodElement.md
new file mode 100644
index 0000000..b797f99
--- /dev/null
+++ b/docs/Element/MethodElement.md
@@ -0,0 +1,260 @@
+# Class MethodElement
+
+Full name: `spaceonfire\ApiDoc\Element\MethodElement`
+
+Parent class name: `spaceonfire\ApiDoc\Element\AbstractElement`
+
+This class implements: `spaceonfire\ApiDoc\Element\ElementInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------- | ----------------------------------------------------------------- | ------- | ---------------------------------------------------- |
+| _Properties_ | | | |
+| [\$name](#spaceonfire_apidoc_element_abstractelement_$name) | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | | [📢](# "Visibility: public") |
+| [\$summary](#spaceonfire_apidoc_element_abstractelement_$summary) | _string_ | | [📢](# "Visibility: public") |
+| [\$description](#spaceonfire_apidoc_element_abstractelement_$description) | _string_ | | [📢](# "Visibility: public") |
+| [\$deprecated](#spaceonfire_apidoc_element_abstractelement_$deprecated) | _bool|string_ | | [📢](# "Visibility: public") |
+| [\$location](#spaceonfire_apidoc_element_abstractelement_$location) | _spaceonfire\ApiDoc\Element\Location\Location|null_ | | [📢](# "Visibility: public") |
+| [\$links](#spaceonfire_apidoc_element_abstractelement_$links) | _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_ | | [📢](# "Visibility: public") |
+| [\$examples](#spaceonfire_apidoc_element_abstractelement_$examples) | _spaceonfire\ApiDoc\Element\ValueObject\Example[]_ | | [📢](# "Visibility: public") |
+| [\$static](#spaceonfire_apidoc_element_methodelement_$static) | _bool_ | | [📢](# "Visibility: public") |
+| [\$abstract](#spaceonfire_apidoc_element_methodelement_$abstract) | _bool_ | | [📢](# "Visibility: public") |
+| [\$final](#spaceonfire_apidoc_element_methodelement_$final) | _bool_ | | [📢](# "Visibility: public") |
+| [\$visibility](#spaceonfire_apidoc_element_methodelement_$visibility) | _spaceonfire\ApiDoc\Element\ValueObject\Visibility_ | | [📢](# "Visibility: public") |
+| [\$parameters](#spaceonfire_apidoc_element_methodelement_$parameters) | _spaceonfire\ApiDoc\Element\ValueObject\FunctionParameter[]_ | | [📢](# "Visibility: public") |
+| [\$return](#spaceonfire_apidoc_element_methodelement_$return) | _spaceonfire\ApiDoc\Element\ValueObject\FunctionReturn|null_ | | [📢](# "Visibility: public") |
+| [\$throws](#spaceonfire_apidoc_element_methodelement_$throws) | _spaceonfire\ApiDoc\Element\ValueObject\FunctionThrows[]_ | | [📢](# "Visibility: public") |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_abstractelement_construct) | | | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Properties
+
+
+
+### \$name
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Fqsen $name
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:20`
+
+
+
+### \$summary
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $summary
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:24`
+
+
+
+### \$description
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $description
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:28`
+
+
+
+### \$deprecated
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _bool|string_
+- **Default value**: `false`
+
+```php
+public bool|string $deprecated = false
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:32`
+
+
+
+### \$location
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\Location\Location|null_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\Location\Location|null $location
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:36`
+
+
+
+### \$links
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[] $links
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:40`
+
+
+
+### \$examples
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Example[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Example[] $examples
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:44`
+
+
+
+### \$static
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _bool_
+- **Default value**: none
+
+```php
+public bool $static
+```
+
+File location: `Element/MethodElement.php:21`
+
+
+
+### \$abstract
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _bool_
+- **Default value**: none
+
+```php
+public bool $abstract
+```
+
+File location: `Element/MethodElement.php:25`
+
+
+
+### \$final
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _bool_
+- **Default value**: none
+
+```php
+public bool $final
+```
+
+File location: `Element/MethodElement.php:29`
+
+
+
+### \$visibility
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Visibility_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Visibility $visibility
+```
+
+File location: `Element/MethodElement.php:33`
+
+
+
+### \$parameters
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\FunctionParameter[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\FunctionParameter[] $parameters
+```
+
+File location: `Element/MethodElement.php:37`
+
+
+
+### \$return
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\FunctionReturn|null_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\FunctionReturn|null $return
+```
+
+File location: `Element/MethodElement.php:41`
+
+
+
+### \$throws
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\FunctionThrows[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\FunctionThrows[] $throws
+```
+
+File location: `Element/MethodElement.php:45`
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Final method**: Yes
+- **Visibility**: public
+
+```php
+final public function __construct()
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:46`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/PropertyElement.md b/docs/Element/PropertyElement.md
new file mode 100644
index 0000000..cbd3098
--- /dev/null
+++ b/docs/Element/PropertyElement.md
@@ -0,0 +1,212 @@
+# Class PropertyElement
+
+Full name: `spaceonfire\ApiDoc\Element\PropertyElement`
+
+Parent class name: `spaceonfire\ApiDoc\Element\AbstractElement`
+
+This class implements: `spaceonfire\ApiDoc\Element\ElementInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------- | -------------------------------------------------------- | ------- | ---------------------------------------------------- |
+| _Properties_ | | | |
+| [\$name](#spaceonfire_apidoc_element_abstractelement_$name) | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | | [📢](# "Visibility: public") |
+| [\$summary](#spaceonfire_apidoc_element_abstractelement_$summary) | _string_ | | [📢](# "Visibility: public") |
+| [\$description](#spaceonfire_apidoc_element_abstractelement_$description) | _string_ | | [📢](# "Visibility: public") |
+| [\$deprecated](#spaceonfire_apidoc_element_abstractelement_$deprecated) | _bool|string_ | | [📢](# "Visibility: public") |
+| [\$location](#spaceonfire_apidoc_element_abstractelement_$location) | _spaceonfire\ApiDoc\Element\Location\Location|null_ | | [📢](# "Visibility: public") |
+| [\$links](#spaceonfire_apidoc_element_abstractelement_$links) | _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_ | | [📢](# "Visibility: public") |
+| [\$examples](#spaceonfire_apidoc_element_abstractelement_$examples) | _spaceonfire\ApiDoc\Element\ValueObject\Example[]_ | | [📢](# "Visibility: public") |
+| [\$static](#spaceonfire_apidoc_element_propertyelement_$static) | _bool_ | | [📢](# "Visibility: public") |
+| [\$visibility](#spaceonfire_apidoc_element_propertyelement_$visibility) | _spaceonfire\ApiDoc\Element\ValueObject\Visibility_ | | [📢](# "Visibility: public") |
+| [\$type](#spaceonfire_apidoc_element_propertyelement_$type) | _spaceonfire\Type\Type|null_ | | [📢](# "Visibility: public") |
+| [\$defaultValue](#spaceonfire_apidoc_element_propertyelement_$defaultvalue) | _spaceonfire\ApiDoc\Element\ValueObject\Value|null_ | | [📢](# "Visibility: public") |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_abstractelement_construct) | | | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Properties
+
+
+
+### \$name
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Fqsen $name
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:20`
+
+
+
+### \$summary
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $summary
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:24`
+
+
+
+### \$description
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $description
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:28`
+
+
+
+### \$deprecated
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _bool|string_
+- **Default value**: `false`
+
+```php
+public bool|string $deprecated = false
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:32`
+
+
+
+### \$location
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\Location\Location|null_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\Location\Location|null $location
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:36`
+
+
+
+### \$links
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[] $links
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:40`
+
+
+
+### \$examples
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Example[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Example[] $examples
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:44`
+
+
+
+### \$static
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _bool_
+- **Default value**: none
+
+```php
+public bool $static
+```
+
+File location: `Element/PropertyElement.php:16`
+
+
+
+### \$visibility
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Visibility_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Visibility $visibility
+```
+
+File location: `Element/PropertyElement.php:20`
+
+
+
+### \$type
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\Type\Type|null_
+- **Default value**: none
+
+```php
+public spaceonfire\Type\Type|null $type
+```
+
+File location: `Element/PropertyElement.php:24`
+
+
+
+### \$defaultValue
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Value|null_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Value|null $defaultValue
+```
+
+File location: `Element/PropertyElement.php:28`
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Final method**: Yes
+- **Visibility**: public
+
+```php
+final public function __construct()
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:46`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Signature/CompositeSignatureRenderer.md b/docs/Element/Signature/CompositeSignatureRenderer.md
new file mode 100644
index 0000000..da97c73
--- /dev/null
+++ b/docs/Element/Signature/CompositeSignatureRenderer.md
@@ -0,0 +1,70 @@
+# Class CompositeSignatureRenderer
+
+Full name: `spaceonfire\ApiDoc\Element\Signature\CompositeSignatureRenderer`
+
+This class implements: `spaceonfire\ApiDoc\Element\Signature\SignatureRendererInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------- | ---------------------------------------------------- | ------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_signature_compositesignaturerenderer_construct) | | | [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_signature_compositesignaturerenderer_supports) | _bool_ | | [📢](# "Visibility: public") |
+| [render](#spaceonfire_apidoc_element_signature_compositesignaturerenderer_render) | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| --------------- | ----------------------------------------------------------------- | --------- | ----------- |
+| `...$renderers` | _spaceonfire\ApiDoc\Element\Signature\SignatureRendererInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\Signature\SignatureRendererInterface ...$renderers)
+```
+
+File location: `Element/Signature/CompositeSignatureRenderer.php:17`
+
+
+
+### supports()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------- | --------- | ----------- |
+| `$element` | _spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(spaceonfire\ApiDoc\Element\ElementInterface $element): bool
+```
+
+File location: `Element/Signature/CompositeSignatureRenderer.php:25`
+
+
+
+### render()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------------------------- | --------- | ----------- |
+| `$element` | _spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet_ | | |
+
+```php
+public function render(spaceonfire\ApiDoc\Element\ElementInterface $element): spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet
+```
+
+File location: `Element/Signature/CompositeSignatureRenderer.php:39`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Signature/ConstantSignatureRenderer.md b/docs/Element/Signature/ConstantSignatureRenderer.md
new file mode 100644
index 0000000..8b7be8e
--- /dev/null
+++ b/docs/Element/Signature/ConstantSignatureRenderer.md
@@ -0,0 +1,53 @@
+# Class ConstantSignatureRenderer
+
+Full name: `spaceonfire\ApiDoc\Element\Signature\ConstantSignatureRenderer`
+
+This class implements: `spaceonfire\ApiDoc\Element\Signature\SignatureRendererInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------ | ---------------------------------------------------- | ------- | ---------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_signature_constantsignaturerenderer_supports) | _bool_ | | [📢](# "Visibility: public") |
+| [render](#spaceonfire_apidoc_element_signature_constantsignaturerenderer_render) | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------- | --------- | ----------- |
+| `$element` | _spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(spaceonfire\ApiDoc\Element\ElementInterface $element): bool
+```
+
+File location: `Element/Signature/ConstantSignatureRenderer.php:17`
+
+
+
+### render()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$element` | _spaceonfire\ApiDoc\Element\ConstantElement|spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet_ | | |
+
+```php
+public function render(spaceonfire\ApiDoc\Element\ConstantElement|spaceonfire\ApiDoc\Element\ElementInterface $element): spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet
+```
+
+File location: `Element/Signature/ConstantSignatureRenderer.php:26`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Signature/FunctionLikeElementSignatureRenderer.md b/docs/Element/Signature/FunctionLikeElementSignatureRenderer.md
new file mode 100644
index 0000000..c49d9dd
--- /dev/null
+++ b/docs/Element/Signature/FunctionLikeElementSignatureRenderer.md
@@ -0,0 +1,53 @@
+# Class FunctionLikeElementSignatureRenderer
+
+Full name: `spaceonfire\ApiDoc\Element\Signature\FunctionLikeElementSignatureRenderer`
+
+This class implements: `spaceonfire\ApiDoc\Element\Signature\SignatureRendererInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ----------------------------------------------------------------------------------------------- | ---------------------------------------------------- | ------- | ---------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_signature_functionlikeelementsignaturerenderer_supports) | _bool_ | | [📢](# "Visibility: public") |
+| [render](#spaceonfire_apidoc_element_signature_functionlikeelementsignaturerenderer_render) | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------- | --------- | ----------- |
+| `$element` | _spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(spaceonfire\ApiDoc\Element\ElementInterface $element): bool
+```
+
+File location: `Element/Signature/FunctionLikeElementSignatureRenderer.php:20`
+
+
+
+### render()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$element` | _spaceonfire\ApiDoc\Element\MethodElement|spaceonfire\ApiDoc\Element\FunctionElement|spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet_ | | |
+
+```php
+public function render(spaceonfire\ApiDoc\Element\MethodElement|spaceonfire\ApiDoc\Element\FunctionElement|spaceonfire\ApiDoc\Element\ElementInterface $element): spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet
+```
+
+File location: `Element/Signature/FunctionLikeElementSignatureRenderer.php:30`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Signature/PropertySignatureRenderer.md b/docs/Element/Signature/PropertySignatureRenderer.md
new file mode 100644
index 0000000..652eaa4
--- /dev/null
+++ b/docs/Element/Signature/PropertySignatureRenderer.md
@@ -0,0 +1,53 @@
+# Class PropertySignatureRenderer
+
+Full name: `spaceonfire\ApiDoc\Element\Signature\PropertySignatureRenderer`
+
+This class implements: `spaceonfire\ApiDoc\Element\Signature\SignatureRendererInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------ | ---------------------------------------------------- | ------- | ---------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_signature_propertysignaturerenderer_supports) | _bool_ | | [📢](# "Visibility: public") |
+| [render](#spaceonfire_apidoc_element_signature_propertysignaturerenderer_render) | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------- | --------- | ----------- |
+| `$element` | _spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(spaceonfire\ApiDoc\Element\ElementInterface $element): bool
+```
+
+File location: `Element/Signature/PropertySignatureRenderer.php:17`
+
+
+
+### render()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------------------------------------------------- | --------- | ----------- |
+| `$element` | _spaceonfire\ApiDoc\Element\PropertyElement|spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet_ | | |
+
+```php
+public function render(spaceonfire\ApiDoc\Element\PropertyElement|spaceonfire\ApiDoc\Element\ElementInterface $element): spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet
+```
+
+File location: `Element/Signature/PropertySignatureRenderer.php:26`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Signature/SignatureRendererInterface.md b/docs/Element/Signature/SignatureRendererInterface.md
new file mode 100644
index 0000000..ab070b2
--- /dev/null
+++ b/docs/Element/Signature/SignatureRendererInterface.md
@@ -0,0 +1,53 @@
+# Interface SignatureRendererInterface
+
+Full name: `spaceonfire\ApiDoc\Element\Signature\SignatureRendererInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------- | ---------------------------------------------------- | ------- | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_signature_signaturerendererinterface_supports) | _bool_ | | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+| [render](#spaceonfire_apidoc_element_signature_signaturerendererinterface_render) | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet_ | | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------- | --------- | ----------- |
+| `$element` | _spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+abstract public function supports(spaceonfire\ApiDoc\Element\ElementInterface $element): bool
+```
+
+File location: `Element/Signature/SignatureRendererInterface.php:16`
+
+
+
+### render()
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------------------------- | --------- | ----------- |
+| `$element` | _spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet_ | | |
+
+```php
+abstract public function render(spaceonfire\ApiDoc\Element\ElementInterface $element): spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet
+```
+
+File location: `Element/Signature/SignatureRendererInterface.php:22`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/TableOfContentsElement.md b/docs/Element/TableOfContentsElement.md
new file mode 100644
index 0000000..9c7aa65
--- /dev/null
+++ b/docs/Element/TableOfContentsElement.md
@@ -0,0 +1,81 @@
+# Class TableOfContentsElement
+
+Class TableOfContentsElement.
+
+Full name: `spaceonfire\ApiDoc\Element\TableOfContentsElement`
+
+This class implements:
+
+- `spaceonfire\ApiDoc\Element\ElementInterface`
+- `IteratorAggregate`
+- `Traversable`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ----------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_tableofcontentselement_construct) | | TableOfContentsElement constructor. | [📢](# "Visibility: public") |
+| [getFqsen](#spaceonfire_apidoc_element_tableofcontentselement_getfqsen) | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | Getter for `fqsen` property. | [📢](# "Visibility: public") |
+| [getIterator](#spaceonfire_apidoc_element_tableofcontentselement_getiterator) | _Generator|Generator_ | Retrieve an external iterator | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+TableOfContentsElement constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | --------------------------------------------- | --------- | ----------- |
+| `...$elements` | _spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\ElementInterface ...$elements)
+```
+
+File location: `Element/TableOfContentsElement.php:32`
+
+
+
+### getFqsen()
+
+Getter for `fqsen` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | | |
+
+```php
+public function getFqsen(): spaceonfire\ApiDoc\Element\ValueObject\Fqsen
+```
+
+File location: `Element/TableOfContentsElement.php:45`
+
+
+
+### getIterator()
+
+Retrieve an external iterator
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------------------------------------- | --------- | ----------- |
+| **Return** | _Generator|Generator_ | | |
+| **Throws** | _Exception_ | | on failure. |
+
+```php
+public function getIterator(): Generator|Generator
+```
+
+File location: `Element/TableOfContentsElement.php:54`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/TraitElement.md b/docs/Element/TraitElement.md
new file mode 100644
index 0000000..99f1d78
--- /dev/null
+++ b/docs/Element/TraitElement.md
@@ -0,0 +1,228 @@
+# Class TraitElement
+
+Full name: `spaceonfire\ApiDoc\Element\TraitElement`
+
+Parent class name: `spaceonfire\ApiDoc\Element\AbstractElement`
+
+This class implements: `spaceonfire\ApiDoc\Element\ElementInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------ | -------------------------------------------------------- | ------- | ---------------------------------------------------- |
+| _Properties_ | | | |
+| [\$name](#spaceonfire_apidoc_element_abstractelement_$name) | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | | [📢](# "Visibility: public") |
+| [\$summary](#spaceonfire_apidoc_element_abstractelement_$summary) | _string_ | | [📢](# "Visibility: public") |
+| [\$description](#spaceonfire_apidoc_element_abstractelement_$description) | _string_ | | [📢](# "Visibility: public") |
+| [\$deprecated](#spaceonfire_apidoc_element_abstractelement_$deprecated) | _bool|string_ | | [📢](# "Visibility: public") |
+| [\$location](#spaceonfire_apidoc_element_abstractelement_$location) | _spaceonfire\ApiDoc\Element\Location\Location|null_ | | [📢](# "Visibility: public") |
+| [\$links](#spaceonfire_apidoc_element_abstractelement_$links) | _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_ | | [📢](# "Visibility: public") |
+| [\$examples](#spaceonfire_apidoc_element_abstractelement_$examples) | _spaceonfire\ApiDoc\Element\ValueObject\Example[]_ | | [📢](# "Visibility: public") |
+| [\$properties](#spaceonfire_apidoc_element_traitelement_$properties) | _spaceonfire\ApiDoc\Element\PropertyElement[]_ | | [📢](# "Visibility: public") |
+| [\$methods](#spaceonfire_apidoc_element_traitelement_$methods) | _spaceonfire\ApiDoc\Element\MethodElement[]_ | | [📢](# "Visibility: public") |
+| [\$magicProperties](#spaceonfire_apidoc_element_traitelement_$magicproperties) | _spaceonfire\ApiDoc\Element\PropertyElement[]_ | | [📢](# "Visibility: public") |
+| [\$magicMethods](#spaceonfire_apidoc_element_traitelement_$magicmethods) | _spaceonfire\ApiDoc\Element\MethodElement[]_ | | [📢](# "Visibility: public") |
+| [\$parents](#spaceonfire_apidoc_element_traitelement_$parents) | _spaceonfire\ApiDoc\Element\TraitElement[]_ | | [📢](# "Visibility: public") |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_abstractelement_construct) | | | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Properties
+
+
+
+### \$name
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Fqsen $name
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:20`
+
+
+
+### \$summary
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $summary
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:24`
+
+
+
+### \$description
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _string_
+- **Default value**: none
+
+```php
+public string $description
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:28`
+
+
+
+### \$deprecated
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _bool|string_
+- **Default value**: `false`
+
+```php
+public bool|string $deprecated = false
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:32`
+
+
+
+### \$location
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\Location\Location|null_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\Location\Location|null $location
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:36`
+
+
+
+### \$links
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\LinkInterface[] $links
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:40`
+
+
+
+### \$examples
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\ValueObject\Example[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\ValueObject\Example[] $examples
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:44`
+
+
+
+### \$properties
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\PropertyElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\PropertyElement[] $properties
+```
+
+File location: `Element/TraitElement.php:17`
+
+
+
+### \$methods
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\MethodElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\MethodElement[] $methods
+```
+
+File location: `Element/TraitElement.php:21`
+
+
+
+### \$magicProperties
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\PropertyElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\PropertyElement[] $magicProperties
+```
+
+File location: `Element/TraitElement.php:25`
+
+
+
+### \$magicMethods
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\MethodElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\MethodElement[] $magicMethods
+```
+
+File location: `Element/TraitElement.php:29`
+
+
+
+### \$parents
+
+- **Visibility**: public
+- **Static**: No
+- **Type**: _spaceonfire\ApiDoc\Element\TraitElement[]_
+- **Default value**: none
+
+```php
+public spaceonfire\ApiDoc\Element\TraitElement[] $parents
+```
+
+File location: `Element/TraitElement.php:33`
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Final method**: Yes
+- **Visibility**: public
+
+```php
+final public function __construct()
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/AbstractElement.php:46`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Type/BetterReflectionInstanceOfType.md b/docs/Element/Type/BetterReflectionInstanceOfType.md
new file mode 100644
index 0000000..a40fa0b
--- /dev/null
+++ b/docs/Element/Type/BetterReflectionInstanceOfType.md
@@ -0,0 +1,75 @@
+# Class BetterReflectionInstanceOfType
+
+Full name: `spaceonfire\ApiDoc\Element\Type\BetterReflectionInstanceOfType`
+
+This class implements: `spaceonfire\Type\Type`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------ | -------- | ---------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_type_betterreflectioninstanceoftype_construct) | | BetterReflectionInstanceOfType constructor. | [📢](# "Visibility: public") |
+| [check](#spaceonfire_apidoc_element_type_betterreflectioninstanceoftype_check) | _bool_ | Check that type of given value satisfies constraints | [📢](# "Visibility: public") |
+| [\_\_toString](#spaceonfire_apidoc_element_type_betterreflectioninstanceoftype_tostring) | _string_ | Print type as a string | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+BetterReflectionInstanceOfType constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------ | --------------------------------------------------- | --------- | ----------- |
+| `$reflectionClass` | _Roave\BetterReflection\Reflection\ReflectionClass_ | No | |
+
+```php
+public function __construct(Roave\BetterReflection\Reflection\ReflectionClass $reflectionClass)
+```
+
+File location: `Element/Type/BetterReflectionInstanceOfType.php:22`
+
+
+
+### check()
+
+Check that type of given value satisfies constraints
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| `$_` | | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function check( $_): bool
+```
+
+File location: `Element/Type/BetterReflectionInstanceOfType.php:30`
+
+
+
+### \_\_toString()
+
+Print type as a string
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function __toString(): string
+```
+
+File location: `Element/Type/BetterReflectionInstanceOfType.php:38`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Type/Converter/PhpDocTypeConverter.md b/docs/Element/Type/Converter/PhpDocTypeConverter.md
new file mode 100644
index 0000000..7aa7f0b
--- /dev/null
+++ b/docs/Element/Type/Converter/PhpDocTypeConverter.md
@@ -0,0 +1,72 @@
+# Class PhpDocTypeConverter
+
+Full name: `spaceonfire\ApiDoc\Element\Type\Converter\PhpDocTypeConverter`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ----------------------------------------------------------------------------------------- | --------------------------------- | ------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_type_converter_phpdoctypeconverter_construct) | | | [📢](# "Visibility: public") |
+| [\_\_invoke](#spaceonfire_apidoc_element_type_converter_phpdoctypeconverter_invoke) | _spaceonfire\Type\Type|null_ | | [📢](# "Visibility: public") |
+| [convert](#spaceonfire_apidoc_element_type_converter_phpdoctypeconverter_convert) | _spaceonfire\Type\Type|null_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | ----------------------------------------------- | --------- | ----------- |
+| `$typeFactory` | _spaceonfire\Type\Factory\TypeFactoryInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\Type\Factory\TypeFactoryInterface $typeFactory)
+```
+
+File location: `Element/Type/Converter/PhpDocTypeConverter.php:35`
+
+
+
+### \_\_invoke()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------------- | --------------------------------- | --------- | ----------- |
+| `$type` | _phpDocumentor\Reflection\Type_ | No | |
+| `$selfReplacement` | _spaceonfire\Type\Type|null_ | No | |
+| `$parentReplacement` | _spaceonfire\Type\Type|null_ | No | |
+| **Return** | _spaceonfire\Type\Type|null_ | | |
+
+```php
+public function __invoke(phpDocumentor\Reflection\Type $type, spaceonfire\Type\Type|null $selfReplacement = null, spaceonfire\Type\Type|null $parentReplacement = null): spaceonfire\Type\Type|null
+```
+
+File location: `Element/Type/Converter/PhpDocTypeConverter.php:40`
+
+
+
+### convert()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------------- | --------------------------------- | --------- | ----------- |
+| `$type` | _phpDocumentor\Reflection\Type_ | No | |
+| `$selfReplacement` | _spaceonfire\Type\Type|null_ | No | |
+| `$parentReplacement` | _spaceonfire\Type\Type|null_ | No | |
+| **Return** | _spaceonfire\Type\Type|null_ | | |
+
+```php
+public function convert(phpDocumentor\Reflection\Type $type, spaceonfire\Type\Type|null $selfReplacement = null, spaceonfire\Type\Type|null $parentReplacement = null): spaceonfire\Type\Type|null
+```
+
+File location: `Element/Type/Converter/PhpDocTypeConverter.php:48`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Type/Converter/ReflectionTypeConverter.md b/docs/Element/Type/Converter/ReflectionTypeConverter.md
new file mode 100644
index 0000000..5e3877c
--- /dev/null
+++ b/docs/Element/Type/Converter/ReflectionTypeConverter.md
@@ -0,0 +1,52 @@
+# Class ReflectionTypeConverter
+
+Full name: `spaceonfire\ApiDoc\Element\Type\Converter\ReflectionTypeConverter`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------------------------- | --------------------------------- | ------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_type_converter_reflectiontypeconverter_construct) | | | [📢](# "Visibility: public") |
+| [\_\_invoke](#spaceonfire_apidoc_element_type_converter_reflectiontypeconverter_invoke) | _spaceonfire\Type\Type|null_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | ----------------------------------------------- | --------- | ----------- |
+| `$typeFactory` | _spaceonfire\Type\Factory\TypeFactoryInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\Type\Factory\TypeFactoryInterface $typeFactory)
+```
+
+File location: `Element/Type/Converter/ReflectionTypeConverter.php:20`
+
+
+
+### \_\_invoke()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------------- | -------------------------------------------------- | --------- | ----------- |
+| `$type` | _Roave\BetterReflection\Reflection\ReflectionType_ | No | |
+| `$selfReplacement` | _spaceonfire\Type\Type|null_ | No | |
+| `$parentReplacement` | _spaceonfire\Type\Type|null_ | No | |
+| **Return** | _spaceonfire\Type\Type|null_ | | |
+
+```php
+public function __invoke(Roave\BetterReflection\Reflection\ReflectionType $type, spaceonfire\Type\Type|null $selfReplacement = null, spaceonfire\Type\Type|null $parentReplacement = null): spaceonfire\Type\Type|null
+```
+
+File location: `Element/Type/Converter/ReflectionTypeConverter.php:25`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Type/Factory/BetterReflectionInstanceOfTypeFactory.md b/docs/Element/Type/Factory/BetterReflectionInstanceOfTypeFactory.md
new file mode 100644
index 0000000..365f20a
--- /dev/null
+++ b/docs/Element/Type/Factory/BetterReflectionInstanceOfTypeFactory.md
@@ -0,0 +1,98 @@
+# Class BetterReflectionInstanceOfTypeFactory
+
+Full name: `spaceonfire\ApiDoc\Element\Type\Factory\BetterReflectionInstanceOfTypeFactory`
+
+This class implements: `spaceonfire\Type\Factory\TypeFactoryInterface`
+
+This class uses: `spaceonfire\Type\Factory\TypeFactoryTrait`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------------------------------------- | ----------------------- | ------------------------------------------------------------------ | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_type_factory_betterreflectioninstanceoftypefactory_construct) | | BetterReflectionInstanceOfTypeFactory constructor. | [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_type_factory_betterreflectioninstanceoftypefactory_supports) | _bool_ | Check that given string can be used to create a new Type instance. | [📢](# "Visibility: public") |
+| [make](#spaceonfire_apidoc_element_type_factory_betterreflectioninstanceoftypefactory_make) | _spaceonfire\Type\Type_ | Create new Type instance from a string. | [📢](# "Visibility: public") |
+| [setParent](#spaceonfire_type_factory_typefactorytrait_setparent) | _void_ | Setter for `parent` property | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+BetterReflectionInstanceOfTypeFactory constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ------------------------------------------------- | --------- | ----------- |
+| `$reflector` | _Roave\BetterReflection\Reflector\ClassReflector_ | No | |
+
+```php
+public function __construct(Roave\BetterReflection\Reflector\ClassReflector $reflector)
+```
+
+File location: `Element/Type/Factory/BetterReflectionInstanceOfTypeFactory.php:28`
+
+
+
+### supports()
+
+Check that given string can be used to create a new Type instance.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| `$type` | _string_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(string $type): bool
+```
+
+File location: `Element/Type/Factory/BetterReflectionInstanceOfTypeFactory.php:36`
+
+
+
+### make()
+
+Create new Type instance from a string.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------- | --------- | ----------- |
+| `$type` | _string_ | No | |
+| **Return** | _spaceonfire\Type\Type_ | | |
+
+```php
+public function make(string $type): spaceonfire\Type\Type
+```
+
+File location: `Element/Type/Factory/BetterReflectionInstanceOfTypeFactory.php:49`
+
+
+
+### setParent()
+
+Setter for `parent` property
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------- | --------- | ----------- |
+| `$parent` | _spaceonfire\Type\Factory\TypeFactoryInterface_ | No | |
+| **Return** | _void_ | | |
+
+```php
+public function setParent(spaceonfire\Type\Factory\TypeFactoryInterface $parent): void
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/type/src/Factory/TypeFactoryTrait.php:18`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Type/Factory/BetterReflectionParentFactory.md b/docs/Element/Type/Factory/BetterReflectionParentFactory.md
new file mode 100644
index 0000000..ea3cdbb
--- /dev/null
+++ b/docs/Element/Type/Factory/BetterReflectionParentFactory.md
@@ -0,0 +1,98 @@
+# Class BetterReflectionParentFactory
+
+Full name: `spaceonfire\ApiDoc\Element\Type\Factory\BetterReflectionParentFactory`
+
+This class implements: `spaceonfire\Type\Factory\TypeFactoryInterface`
+
+This class uses: `spaceonfire\Type\Factory\TypeFactoryTrait`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------------- | ----------------------- | ------------------------------------------------------------------ | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_type_factory_betterreflectionparentfactory_construct) | | BetterReflectionParentFactory constructor. | [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_type_factory_betterreflectionparentfactory_supports) | _bool_ | Check that given string can be used to create a new Type instance. | [📢](# "Visibility: public") |
+| [make](#spaceonfire_apidoc_element_type_factory_betterreflectionparentfactory_make) | _spaceonfire\Type\Type_ | Create new Type instance from a string. | [📢](# "Visibility: public") |
+| [setParent](#spaceonfire_type_factory_typefactorytrait_setparent) | _void_ | Setter for `parent` property | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+BetterReflectionParentFactory constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------ | ------------------------------------------------- | --------- | ----------- |
+| `$reflector` | _Roave\BetterReflection\Reflector\ClassReflector_ | No | |
+
+```php
+public function __construct(Roave\BetterReflection\Reflector\ClassReflector $reflector)
+```
+
+File location: `Element/Type/Factory/BetterReflectionParentFactory.php:29`
+
+
+
+### supports()
+
+Check that given string can be used to create a new Type instance.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| `$type` | _string_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(string $type): bool
+```
+
+File location: `Element/Type/Factory/BetterReflectionParentFactory.php:37`
+
+
+
+### make()
+
+Create new Type instance from a string.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------- | --------- | ----------- |
+| `$type` | _string_ | No | |
+| **Return** | _spaceonfire\Type\Type_ | | |
+
+```php
+public function make(string $type): spaceonfire\Type\Type
+```
+
+File location: `Element/Type/Factory/BetterReflectionParentFactory.php:56`
+
+
+
+### setParent()
+
+Setter for `parent` property
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------- | --------- | ----------- |
+| `$parent` | _spaceonfire\Type\Factory\TypeFactoryInterface_ | No | |
+| **Return** | _void_ | | |
+
+```php
+public function setParent(spaceonfire\Type\Factory\TypeFactoryInterface $parent): void
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/type/src/Factory/TypeFactoryTrait.php:18`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Type/Resolver/AbstractTypeResolver.md b/docs/Element/Type/Resolver/AbstractTypeResolver.md
new file mode 100644
index 0000000..c48c39e
--- /dev/null
+++ b/docs/Element/Type/Resolver/AbstractTypeResolver.md
@@ -0,0 +1,79 @@
+# Class AbstractTypeResolver
+
+Full name: `spaceonfire\ApiDoc\Element\Type\Resolver\AbstractTypeResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\Type\Resolver\TypeResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ----------------------------------------------------------------------------------------- | --------------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_type_resolver_abstracttyperesolver_construct) | | TypeResolver constructor. | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_type_resolver_abstracttyperesolver_resolve) | _spaceonfire\Type\Type|null_ | Resolve type for given Roave BetterReflection object and its DocBlock. | [📌](# "Final element") [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_type_resolver_typeresolverinterface_supports) | _bool_ | Checks that current resolver works with given reflection object. | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+TypeResolver constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | ----------------------------------------------- | --------- | ----------- |
+| `$typeFactory` | _spaceonfire\Type\Factory\TypeFactoryInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\Type\Factory\TypeFactoryInterface $typeFactory)
+```
+
+File location: `Element/Type/Resolver/AbstractTypeResolver.php:33`
+
+
+
+### resolve()
+
+Resolve type for given Roave BetterReflection object and its DocBlock.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| `$docBlock` | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | No | |
+| **Return** | _spaceonfire\Type\Type|null_ | | |
+
+```php
+final public function resolve(object $reflection, spaceonfire\ApiDoc\Element\DocBlock\DocBlock $docBlock): spaceonfire\Type\Type|null
+```
+
+File location: `Element/Type/Resolver/AbstractTypeResolver.php:43`
+
+
+
+### supports()
+
+Checks that current resolver works with given reflection object.
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+abstract public function supports(object $reflection): bool
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Type/Resolver/TypeResolverInterface.php:17`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Type/Resolver/ArgumentTypeResolver.md b/docs/Element/Type/Resolver/ArgumentTypeResolver.md
new file mode 100644
index 0000000..a65aff5
--- /dev/null
+++ b/docs/Element/Type/Resolver/ArgumentTypeResolver.md
@@ -0,0 +1,80 @@
+# Class ArgumentTypeResolver
+
+Full name: `spaceonfire\ApiDoc\Element\Type\Resolver\ArgumentTypeResolver`
+
+Parent class name: `spaceonfire\ApiDoc\Element\Type\Resolver\AbstractTypeResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\Type\Resolver\TypeResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ----------------------------------------------------------------------------------------- | --------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_type_resolver_argumenttyperesolver_supports) | _bool_ | Checks that current resolver works with given reflection object. | [📢](# "Visibility: public") |
+| [\_\_construct](#spaceonfire_apidoc_element_type_resolver_abstracttyperesolver_construct) | | TypeResolver constructor. | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_type_resolver_abstracttyperesolver_resolve) | _spaceonfire\Type\Type|null_ | Resolve type for given Roave BetterReflection object and its DocBlock. | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+Checks that current resolver works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/Type/Resolver/ArgumentTypeResolver.php:19`
+
+
+
+### \_\_construct()
+
+TypeResolver constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | ----------------------------------------------- | --------- | ----------- |
+| `$typeFactory` | _spaceonfire\Type\Factory\TypeFactoryInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\Type\Factory\TypeFactoryInterface $typeFactory)
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Type/Resolver/AbstractTypeResolver.php:33`
+
+
+
+### resolve()
+
+Resolve type for given Roave BetterReflection object and its DocBlock.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| `$docBlock` | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | No | |
+| **Return** | _spaceonfire\Type\Type|null_ | | |
+
+```php
+final public function resolve(object $reflection, spaceonfire\ApiDoc\Element\DocBlock\DocBlock $docBlock): spaceonfire\Type\Type|null
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Type/Resolver/AbstractTypeResolver.php:43`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Type/Resolver/CompositeTypeResolver.md b/docs/Element/Type/Resolver/CompositeTypeResolver.md
new file mode 100644
index 0000000..a51534d
--- /dev/null
+++ b/docs/Element/Type/Resolver/CompositeTypeResolver.md
@@ -0,0 +1,77 @@
+# Class CompositeTypeResolver
+
+Full name: `spaceonfire\ApiDoc\Element\Type\Resolver\CompositeTypeResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\Type\Resolver\TypeResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------ | --------------------------------- | ---------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_type_resolver_compositetyperesolver_construct) | | CompositeTypeResolver constructor. | [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_type_resolver_compositetyperesolver_supports) | _bool_ | Checks that current resolver works with given reflection object. | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_type_resolver_compositetyperesolver_resolve) | _spaceonfire\Type\Type|null_ | Resolve type for given Roave BetterReflection object and its DocBlock. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+CompositeTypeResolver constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| --------------- | ---------------------------------------------------------------- | --------- | ----------- |
+| `...$resolvers` | _spaceonfire\ApiDoc\Element\Type\Resolver\TypeResolverInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\Type\Resolver\TypeResolverInterface ...$resolvers)
+```
+
+File location: `Element/Type/Resolver/CompositeTypeResolver.php:22`
+
+
+
+### supports()
+
+Checks that current resolver works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/Type/Resolver/CompositeTypeResolver.php:30`
+
+
+
+### resolve()
+
+Resolve type for given Roave BetterReflection object and its DocBlock.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| `$docBlock` | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | No | |
+| **Return** | _spaceonfire\Type\Type|null_ | | |
+
+```php
+public function resolve(object $reflection, spaceonfire\ApiDoc\Element\DocBlock\DocBlock $docBlock): spaceonfire\Type\Type|null
+```
+
+File location: `Element/Type/Resolver/CompositeTypeResolver.php:44`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Type/Resolver/FunctionReturnTypeResolver.md b/docs/Element/Type/Resolver/FunctionReturnTypeResolver.md
new file mode 100644
index 0000000..6fab20b
--- /dev/null
+++ b/docs/Element/Type/Resolver/FunctionReturnTypeResolver.md
@@ -0,0 +1,80 @@
+# Class FunctionReturnTypeResolver
+
+Full name: `spaceonfire\ApiDoc\Element\Type\Resolver\FunctionReturnTypeResolver`
+
+Parent class name: `spaceonfire\ApiDoc\Element\Type\Resolver\AbstractTypeResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\Type\Resolver\TypeResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ----------------------------------------------------------------------------------------- | --------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_type_resolver_functionreturntyperesolver_supports) | _bool_ | Checks that current resolver works with given reflection object. | [📢](# "Visibility: public") |
+| [\_\_construct](#spaceonfire_apidoc_element_type_resolver_abstracttyperesolver_construct) | | TypeResolver constructor. | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_type_resolver_abstracttyperesolver_resolve) | _spaceonfire\Type\Type|null_ | Resolve type for given Roave BetterReflection object and its DocBlock. | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+Checks that current resolver works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/Type/Resolver/FunctionReturnTypeResolver.php:19`
+
+
+
+### \_\_construct()
+
+TypeResolver constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | ----------------------------------------------- | --------- | ----------- |
+| `$typeFactory` | _spaceonfire\Type\Factory\TypeFactoryInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\Type\Factory\TypeFactoryInterface $typeFactory)
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Type/Resolver/AbstractTypeResolver.php:33`
+
+
+
+### resolve()
+
+Resolve type for given Roave BetterReflection object and its DocBlock.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| `$docBlock` | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | No | |
+| **Return** | _spaceonfire\Type\Type|null_ | | |
+
+```php
+final public function resolve(object $reflection, spaceonfire\ApiDoc\Element\DocBlock\DocBlock $docBlock): spaceonfire\Type\Type|null
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Type/Resolver/AbstractTypeResolver.php:43`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Type/Resolver/MemoizedTypeResolver.md b/docs/Element/Type/Resolver/MemoizedTypeResolver.md
new file mode 100644
index 0000000..f7c783a
--- /dev/null
+++ b/docs/Element/Type/Resolver/MemoizedTypeResolver.md
@@ -0,0 +1,75 @@
+# Class MemoizedTypeResolver
+
+Full name: `spaceonfire\ApiDoc\Element\Type\Resolver\MemoizedTypeResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\Type\Resolver\TypeResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ----------------------------------------------------------------------------------------- | --------------------------------- | ---------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_type_resolver_memoizedtyperesolver_construct) | | | [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_element_type_resolver_memoizedtyperesolver_supports) | _bool_ | Checks that current resolver works with given reflection object. | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_type_resolver_memoizedtyperesolver_resolve) | _spaceonfire\Type\Type|null_ | Resolve type for given Roave BetterReflection object and its DocBlock. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ----------- | ---------------------------------------------------------------- | --------- | ----------- |
+| `$resolver` | _spaceonfire\ApiDoc\Element\Type\Resolver\TypeResolverInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\Type\Resolver\TypeResolverInterface $resolver)
+```
+
+File location: `Element/Type/Resolver/MemoizedTypeResolver.php:25`
+
+
+
+### supports()
+
+Checks that current resolver works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/Type/Resolver/MemoizedTypeResolver.php:35`
+
+
+
+### resolve()
+
+Resolve type for given Roave BetterReflection object and its DocBlock.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| `$docBlock` | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | No | |
+| **Return** | _spaceonfire\Type\Type|null_ | | |
+
+```php
+public function resolve(object $reflection, spaceonfire\ApiDoc\Element\DocBlock\DocBlock $docBlock): spaceonfire\Type\Type|null
+```
+
+File location: `Element/Type/Resolver/MemoizedTypeResolver.php:44`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Type/Resolver/PropertyTypeResolver.md b/docs/Element/Type/Resolver/PropertyTypeResolver.md
new file mode 100644
index 0000000..4ee68c1
--- /dev/null
+++ b/docs/Element/Type/Resolver/PropertyTypeResolver.md
@@ -0,0 +1,80 @@
+# Class PropertyTypeResolver
+
+Full name: `spaceonfire\ApiDoc\Element\Type\Resolver\PropertyTypeResolver`
+
+Parent class name: `spaceonfire\ApiDoc\Element\Type\Resolver\AbstractTypeResolver`
+
+This class implements: `spaceonfire\ApiDoc\Element\Type\Resolver\TypeResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ----------------------------------------------------------------------------------------- | --------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_type_resolver_propertytyperesolver_supports) | _bool_ | Checks that current resolver works with given reflection object. | [📢](# "Visibility: public") |
+| [\_\_construct](#spaceonfire_apidoc_element_type_resolver_abstracttyperesolver_construct) | | TypeResolver constructor. | [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_type_resolver_abstracttyperesolver_resolve) | _spaceonfire\Type\Type|null_ | Resolve type for given Roave BetterReflection object and its DocBlock. | [📌](# "Final element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+Checks that current resolver works with given reflection object.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(object $reflection): bool
+```
+
+File location: `Element/Type/Resolver/PropertyTypeResolver.php:18`
+
+
+
+### \_\_construct()
+
+TypeResolver constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | ----------------------------------------------- | --------- | ----------- |
+| `$typeFactory` | _spaceonfire\Type\Factory\TypeFactoryInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\Type\Factory\TypeFactoryInterface $typeFactory)
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Type/Resolver/AbstractTypeResolver.php:33`
+
+
+
+### resolve()
+
+Resolve type for given Roave BetterReflection object and its DocBlock.
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| `$docBlock` | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | No | |
+| **Return** | _spaceonfire\Type\Type|null_ | | |
+
+```php
+final public function resolve(object $reflection, spaceonfire\ApiDoc\Element\DocBlock\DocBlock $docBlock): spaceonfire\Type\Type|null
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/Type/Resolver/AbstractTypeResolver.php:43`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/Type/Resolver/TypeResolverInterface.md b/docs/Element/Type/Resolver/TypeResolverInterface.md
new file mode 100644
index 0000000..579c027
--- /dev/null
+++ b/docs/Element/Type/Resolver/TypeResolverInterface.md
@@ -0,0 +1,58 @@
+# Interface TypeResolverInterface
+
+Full name: `spaceonfire\ApiDoc\Element\Type\Resolver\TypeResolverInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------ | --------------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_element_type_resolver_typeresolverinterface_supports) | _bool_ | Checks that current resolver works with given reflection object. | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+| [resolve](#spaceonfire_apidoc_element_type_resolver_typeresolverinterface_resolve) | _spaceonfire\Type\Type|null_ | Resolve type for given Roave BetterReflection object and its DocBlock. | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+Checks that current resolver works with given reflection object.
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | -------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+abstract public function supports(object $reflection): bool
+```
+
+File location: `Element/Type/Resolver/TypeResolverInterface.php:17`
+
+
+
+### resolve()
+
+Resolve type for given Roave BetterReflection object and its DocBlock.
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| `$docBlock` | _spaceonfire\ApiDoc\Element\DocBlock\DocBlock_ | No | |
+| **Return** | _spaceonfire\Type\Type|null_ | | |
+
+```php
+abstract public function resolve(object $reflection, spaceonfire\ApiDoc\Element\DocBlock\DocBlock $docBlock): spaceonfire\Type\Type|null
+```
+
+File location: `Element/Type/Resolver/TypeResolverInterface.php:25`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ValueObject/AbstractTypedSymbol.md b/docs/Element/ValueObject/AbstractTypedSymbol.md
new file mode 100644
index 0000000..ae61adc
--- /dev/null
+++ b/docs/Element/ValueObject/AbstractTypedSymbol.md
@@ -0,0 +1,73 @@
+# Class AbstractTypedSymbol
+
+Full name: `spaceonfire\ApiDoc\Element\ValueObject\AbstractTypedSymbol`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------------------------- | --------------------------------- | ---------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_valueobject_abstracttypedsymbol_construct) | | AbstractTypedSymbol constructor. | [📢](# "Visibility: public") |
+| [getDescription](#spaceonfire_apidoc_element_valueobject_abstracttypedsymbol_getdescription) | _string_ | Getter for `description` property. | [📢](# "Visibility: public") |
+| [getType](#spaceonfire_apidoc_element_valueobject_abstracttypedsymbol_gettype) | _spaceonfire\Type\Type|null_ | Getter for `type` property. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+AbstractTypedSymbol constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | --------------------------------- | --------- | ----------- |
+| `$description` | _string_ | No | |
+| `$type` | _spaceonfire\Type\Type|null_ | No | |
+
+```php
+public function __construct(string $description, spaceonfire\Type\Type|null $type = null)
+```
+
+File location: `Element/ValueObject/AbstractTypedSymbol.php:25`
+
+
+
+### getDescription()
+
+Getter for `description` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getDescription(): string
+```
+
+File location: `Element/ValueObject/AbstractTypedSymbol.php:35`
+
+
+
+### getType()
+
+Getter for `type` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\Type\Type|null_ | | |
+
+```php
+public function getType(): spaceonfire\Type\Type|null
+```
+
+File location: `Element/ValueObject/AbstractTypedSymbol.php:44`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ValueObject/ClassMembersVisibilityFilter.md b/docs/Element/ValueObject/ClassMembersVisibilityFilter.md
new file mode 100644
index 0000000..19d6ea9
--- /dev/null
+++ b/docs/Element/ValueObject/ClassMembersVisibilityFilter.md
@@ -0,0 +1,94 @@
+# Class ClassMembersVisibilityFilter
+
+Full name: `spaceonfire\ApiDoc\Element\ValueObject\ClassMembersVisibilityFilter`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_valueobject_classmembersvisibilityfilter_construct) | | ClassMembersVisibilityFilter constructor. | [📢](# "Visibility: public") |
+| [forConstants](#spaceonfire_apidoc_element_valueobject_classmembersvisibilityfilter_forconstants) | _spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter_ | Getter for `constantsVisibilityFilter` property. | [📢](# "Visibility: public") |
+| [forProperties](#spaceonfire_apidoc_element_valueobject_classmembersvisibilityfilter_forproperties) | _spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter_ | Getter for `propertiesVisibilityFilter` property. | [📢](# "Visibility: public") |
+| [forMethods](#spaceonfire_apidoc_element_valueobject_classmembersvisibilityfilter_formethods) | _spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter_ | Getter for `methodsVisibilityFilter` property. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+ClassMembersVisibilityFilter constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ----------------------------- | ------------------------------------------------------------------- | --------- | ----------- |
+| `$defaultVisibilityFilter` | _spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter_ | No | |
+| `$constantsVisibilityFilter` | _spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter|null_ | No | |
+| `$propertiesVisibilityFilter` | _spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter|null_ | No | |
+| `$methodsVisibilityFilter` | _spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter|null_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter $defaultVisibilityFilter, spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter|null $constantsVisibilityFilter = null, spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter|null $propertiesVisibilityFilter = null, spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter|null $methodsVisibilityFilter = null)
+```
+
+File location: `Element/ValueObject/ClassMembersVisibilityFilter.php:29`
+
+
+
+### forConstants()
+
+Getter for `constantsVisibilityFilter` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter_ | | |
+
+```php
+public function forConstants(): spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter
+```
+
+File location: `Element/ValueObject/ClassMembersVisibilityFilter.php:44`
+
+
+
+### forProperties()
+
+Getter for `propertiesVisibilityFilter` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter_ | | |
+
+```php
+public function forProperties(): spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter
+```
+
+File location: `Element/ValueObject/ClassMembersVisibilityFilter.php:53`
+
+
+
+### forMethods()
+
+Getter for `methodsVisibilityFilter` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter_ | | |
+
+```php
+public function forMethods(): spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter
+```
+
+File location: `Element/ValueObject/ClassMembersVisibilityFilter.php:62`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ValueObject/CodeSnippet.md b/docs/Element/ValueObject/CodeSnippet.md
new file mode 100644
index 0000000..5a1105c
--- /dev/null
+++ b/docs/Element/ValueObject/CodeSnippet.md
@@ -0,0 +1,90 @@
+# Class CodeSnippet
+
+Full name: `spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------ | ------------------ | ------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_valueobject_codesnippet_construct) | | CodeSnippet constructor. | [📢](# "Visibility: public") |
+| [getContent](#spaceonfire_apidoc_element_valueobject_codesnippet_getcontent) | _string_ | Getter for `content` property. | [📢](# "Visibility: public") |
+| [getLanguage](#spaceonfire_apidoc_element_valueobject_codesnippet_getlanguage) | _string|null_ | Getter for `language` property. | [📢](# "Visibility: public") |
+| [\_\_toString](#spaceonfire_apidoc_element_valueobject_codesnippet_tostring) | _string_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+CodeSnippet constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ----------- | ------------------ | --------- | ----------- |
+| `$content` | _string_ | No | |
+| `$language` | _string|null_ | No | |
+
+```php
+public function __construct(string $content, string|null $language = null)
+```
+
+File location: `Element/ValueObject/CodeSnippet.php:23`
+
+
+
+### getContent()
+
+Getter for `content` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getContent(): string
+```
+
+File location: `Element/ValueObject/CodeSnippet.php:33`
+
+
+
+### getLanguage()
+
+Getter for `language` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------ | --------- | ----------- |
+| **Return** | _string|null_ | | |
+
+```php
+public function getLanguage(): string|null
+```
+
+File location: `Element/ValueObject/CodeSnippet.php:42`
+
+
+
+### \_\_toString()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function __toString(): string
+```
+
+File location: `Element/ValueObject/CodeSnippet.php:50`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ValueObject/Example.md b/docs/Element/ValueObject/Example.md
new file mode 100644
index 0000000..d91aeef
--- /dev/null
+++ b/docs/Element/ValueObject/Example.md
@@ -0,0 +1,172 @@
+# Class Example
+
+Full name: `spaceonfire\ApiDoc\Element\ValueObject\Example`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ---------------------------------------------------------------------------------------- | ---------------------------------------------------- | ----------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_valueobject_example_construct) | | Example constructor. | [📢](# "Visibility: public") |
+| [getFilePath](#spaceonfire_apidoc_element_valueobject_example_getfilepath) | _string_ | Getter for `filePath` property. | [📢](# "Visibility: public") |
+| [getUri](#spaceonfire_apidoc_element_valueobject_example_geturi) | _Psr\Http\Message\UriInterface|null_ | Getter for `uri` property. | [📢](# "Visibility: public") |
+| [getLocation](#spaceonfire_apidoc_element_valueobject_example_getlocation) | _spaceonfire\ApiDoc\Element\Location\Location_ | Getter for `location` property. | [📢](# "Visibility: public") |
+| [getStartingLine](#spaceonfire_apidoc_element_valueobject_example_getstartingline) | _int_ | Getter for `startingLine` property. | [📢](# "Visibility: public") |
+| [getLineCount](#spaceonfire_apidoc_element_valueobject_example_getlinecount) | _int|null_ | Getter for `lineCount` property. | [📢](# "Visibility: public") |
+| [getDescription](#spaceonfire_apidoc_element_valueobject_example_getdescription) | _string|null_ | Getter for `description` property. | [📢](# "Visibility: public") |
+| [resolveCodeSnippet](#spaceonfire_apidoc_element_valueobject_example_resolvecodesnippet) | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet_ | Resolve and cache code snippet for this example | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+Example constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| --------------- | ---------------------------------------------- | --------- | ----------- |
+| `$filePath` | _string_ | No | |
+| `$location` | _spaceonfire\ApiDoc\Element\Location\Location_ | No | |
+| `$startingLine` | _int_ | No | |
+| `$lineCount` | _int|null_ | No | |
+| `$description` | _string|null_ | No | |
+
+```php
+public function __construct(string $filePath, spaceonfire\ApiDoc\Element\Location\Location $location, int $startingLine = 0, int|null $lineCount = null, string|null $description = null)
+```
+
+File location: `Element/ValueObject/Example.php:51`
+
+
+
+### getFilePath()
+
+Getter for `filePath` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getFilePath(): string
+```
+
+File location: `Element/ValueObject/Example.php:79`
+
+
+
+### getUri()
+
+Getter for `uri` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------- | --------- | ----------- |
+| **Return** | _Psr\Http\Message\UriInterface|null_ | | |
+
+```php
+public function getUri(): Psr\Http\Message\UriInterface|null
+```
+
+File location: `Element/ValueObject/Example.php:88`
+
+
+
+### getLocation()
+
+Getter for `location` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\Location\Location_ | | |
+
+```php
+public function getLocation(): spaceonfire\ApiDoc\Element\Location\Location
+```
+
+File location: `Element/ValueObject/Example.php:97`
+
+
+
+### getStartingLine()
+
+Getter for `startingLine` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----- | --------- | ----------- |
+| **Return** | _int_ | | |
+
+```php
+public function getStartingLine(): int
+```
+
+File location: `Element/ValueObject/Example.php:106`
+
+
+
+### getLineCount()
+
+Getter for `lineCount` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------- | --------- | ----------- |
+| **Return** | _int|null_ | | |
+
+```php
+public function getLineCount(): int|null
+```
+
+File location: `Element/ValueObject/Example.php:115`
+
+
+
+### getDescription()
+
+Getter for `description` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------ | --------- | ----------- |
+| **Return** | _string|null_ | | |
+
+```php
+public function getDescription(): string|null
+```
+
+File location: `Element/ValueObject/Example.php:124`
+
+
+
+### resolveCodeSnippet()
+
+Resolve and cache code snippet for this example
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ----------- | --------------------------------------------------------------- | --------- | ----------- |
+| `$resolver` | _spaceonfire\ApiDoc\Element\Example\ExampleCodeSnippetResolver_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet_ | | |
+
+```php
+public function resolveCodeSnippet(spaceonfire\ApiDoc\Element\Example\ExampleCodeSnippetResolver $resolver): spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet
+```
+
+File location: `Element/ValueObject/Example.php:134`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ValueObject/ExternalLink.md b/docs/Element/ValueObject/ExternalLink.md
new file mode 100644
index 0000000..63601e7
--- /dev/null
+++ b/docs/Element/ValueObject/ExternalLink.md
@@ -0,0 +1,94 @@
+# Class ExternalLink
+
+Full name: `spaceonfire\ApiDoc\Element\ValueObject\ExternalLink`
+
+This class implements: `spaceonfire\ApiDoc\Element\ValueObject\LinkInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------- | ------------------------------------------ | ------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_valueobject_externallink_construct) | | ExternalLink constructor. | [📢](# "Visibility: public") |
+| [getTarget](#spaceonfire_apidoc_element_valueobject_externallink_gettarget) | _mixed|Psr\Http\Message\UriInterface_ | Returns link target | [📢](# "Visibility: public") |
+| [getText](#spaceonfire_apidoc_element_valueobject_externallink_gettext) | _string_ | Returns link text | [📢](# "Visibility: public") |
+| [getDescription](#spaceonfire_apidoc_element_valueobject_externallink_getdescription) | _string|null_ | Returns link description | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+ExternalLink constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | ------------------------------- | --------- | ----------- |
+| `$target` | _Psr\Http\Message\UriInterface_ | No | |
+| `$description` | _string|null_ | No | |
+
+```php
+public function __construct(Psr\Http\Message\UriInterface $target, string|null $description = null)
+```
+
+File location: `Element/ValueObject/ExternalLink.php:25`
+
+
+
+### getTarget()
+
+Returns link target
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------ | --------- | ----------- |
+| **Return** | _mixed|Psr\Http\Message\UriInterface_ | | |
+
+```php
+public function getTarget(): mixed|Psr\Http\Message\UriInterface
+```
+
+File location: `Element/ValueObject/ExternalLink.php:34`
+
+
+
+### getText()
+
+Returns link text
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getText(): string
+```
+
+File location: `Element/ValueObject/ExternalLink.php:42`
+
+
+
+### getDescription()
+
+Returns link description
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------ | --------- | ----------- |
+| **Return** | _string|null_ | | |
+
+```php
+public function getDescription(): string|null
+```
+
+File location: `Element/ValueObject/ExternalLink.php:50`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ValueObject/Fqsen.md b/docs/Element/ValueObject/Fqsen.md
new file mode 100644
index 0000000..160009f
--- /dev/null
+++ b/docs/Element/ValueObject/Fqsen.md
@@ -0,0 +1,151 @@
+# Class Fqsen
+
+Full name: `spaceonfire\ApiDoc\Element\ValueObject\Fqsen`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------------ | ---------------------------------------------- | ------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_valueobject_fqsen_construct) | | | [📢](# "Visibility: public") |
+| [\_\_toString](#spaceonfire_apidoc_element_valueobject_fqsen_tostring) | _string_ | | [📢](# "Visibility: public") |
+| [getName](#spaceonfire_apidoc_element_valueobject_fqsen_getname) | _string_ | | [📢](# "Visibility: public") |
+| [getShortName](#spaceonfire_apidoc_element_valueobject_fqsen_getshortname) | _string_ | | [📢](# "Visibility: public") |
+| [getNamespace](#spaceonfire_apidoc_element_valueobject_fqsen_getnamespace) | _string_ | | [📢](# "Visibility: public") |
+| [getClassName](#spaceonfire_apidoc_element_valueobject_fqsen_getclassname) | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | | [📢](# "Visibility: public") |
+| [isPrefixedWithClassName](#spaceonfire_apidoc_element_valueobject_fqsen_isprefixedwithclassname) | _bool_ | | [📢](# "Visibility: public") |
+| [withoutClassName](#spaceonfire_apidoc_element_valueobject_fqsen_withoutclassname) | _string_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------- | -------- | --------- | ----------- |
+| `$fqsen` | _string_ | No | |
+
+```php
+public function __construct(string $fqsen)
+```
+
+File location: `Element/ValueObject/Fqsen.php:26`
+
+
+
+### \_\_toString()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function __toString(): string
+```
+
+File location: `Element/ValueObject/Fqsen.php:38`
+
+
+
+### getName()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getName(): string
+```
+
+File location: `Element/ValueObject/Fqsen.php:43`
+
+
+
+### getShortName()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getShortName(): string
+```
+
+File location: `Element/ValueObject/Fqsen.php:48`
+
+
+
+### getNamespace()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getNamespace(): string
+```
+
+File location: `Element/ValueObject/Fqsen.php:53`
+
+
+
+### getClassName()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | | |
+
+```php
+public function getClassName(): spaceonfire\ApiDoc\Element\ValueObject\Fqsen
+```
+
+File location: `Element/ValueObject/Fqsen.php:58`
+
+
+
+### isPrefixedWithClassName()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _bool_ | | |
+
+```php
+public function isPrefixedWithClassName(): bool
+```
+
+File location: `Element/ValueObject/Fqsen.php:68`
+
+
+
+### withoutClassName()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function withoutClassName(): string
+```
+
+File location: `Element/ValueObject/Fqsen.php:73`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ValueObject/FqsenLink.md b/docs/Element/ValueObject/FqsenLink.md
new file mode 100644
index 0000000..120b3f8
--- /dev/null
+++ b/docs/Element/ValueObject/FqsenLink.md
@@ -0,0 +1,94 @@
+# Class FqsenLink
+
+Full name: `spaceonfire\ApiDoc\Element\ValueObject\FqsenLink`
+
+This class implements: `spaceonfire\ApiDoc\Element\ValueObject\LinkInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ---------------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------------ | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_valueobject_fqsenlink_construct) | | FqsenLink constructor. | [📢](# "Visibility: public") |
+| [getTarget](#spaceonfire_apidoc_element_valueobject_fqsenlink_gettarget) | _mixed|spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | Returns link target | [📢](# "Visibility: public") |
+| [getText](#spaceonfire_apidoc_element_valueobject_fqsenlink_gettext) | _string_ | Returns link text | [📢](# "Visibility: public") |
+| [getDescription](#spaceonfire_apidoc_element_valueobject_fqsenlink_getdescription) | _string|null_ | Returns link description | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+FqsenLink constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | ---------------------------------------------- | --------- | ----------- |
+| `$target` | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | No | |
+| `$description` | _string|null_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\ValueObject\Fqsen $target, string|null $description = null)
+```
+
+File location: `Element/ValueObject/FqsenLink.php:23`
+
+
+
+### getTarget()
+
+Returns link target
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------------- | --------- | ----------- |
+| **Return** | _mixed|spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | | |
+
+```php
+public function getTarget(): mixed|spaceonfire\ApiDoc\Element\ValueObject\Fqsen
+```
+
+File location: `Element/ValueObject/FqsenLink.php:32`
+
+
+
+### getText()
+
+Returns link text
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getText(): string
+```
+
+File location: `Element/ValueObject/FqsenLink.php:40`
+
+
+
+### getDescription()
+
+Returns link description
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------ | --------- | ----------- |
+| **Return** | _string|null_ | | |
+
+```php
+public function getDescription(): string|null
+```
+
+File location: `Element/ValueObject/FqsenLink.php:48`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ValueObject/FunctionParameter.md b/docs/Element/ValueObject/FunctionParameter.md
new file mode 100644
index 0000000..721edf7
--- /dev/null
+++ b/docs/Element/ValueObject/FunctionParameter.md
@@ -0,0 +1,155 @@
+# Class FunctionParameter
+
+Full name: `spaceonfire\ApiDoc\Element\ValueObject\FunctionParameter`
+
+Parent class name: `spaceonfire\ApiDoc\Element\ValueObject\AbstractTypedSymbol`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ---------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ---------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_valueobject_functionparameter_construct) | | Argument constructor. | [📢](# "Visibility: public") |
+| [getName](#spaceonfire_apidoc_element_valueobject_functionparameter_getname) | _string_ | Getter for `name` property. | [📢](# "Visibility: public") |
+| [isVariadic](#spaceonfire_apidoc_element_valueobject_functionparameter_isvariadic) | _bool_ | Getter for `variadic` property. | [📢](# "Visibility: public") |
+| [isPassedByReference](#spaceonfire_apidoc_element_valueobject_functionparameter_ispassedbyreference) | _bool_ | Getter for `passedByReference` property. | [📢](# "Visibility: public") |
+| [getDefaultValue](#spaceonfire_apidoc_element_valueobject_functionparameter_getdefaultvalue) | _spaceonfire\ApiDoc\Element\ValueObject\Value|null_ | Getter for `defaultValue` property. | [📢](# "Visibility: public") |
+| [getDescription](#spaceonfire_apidoc_element_valueobject_abstracttypedsymbol_getdescription) | _string_ | Getter for `description` property. | [📢](# "Visibility: public") |
+| [getType](#spaceonfire_apidoc_element_valueobject_abstracttypedsymbol_gettype) | _spaceonfire\Type\Type|null_ | Getter for `type` property. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+Argument constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------------- | -------------------------------------------------------- | --------- | ----------- |
+| `$name` | _string_ | No | |
+| `$description` | _string_ | No | |
+| `$type` | _spaceonfire\Type\Type|null_ | No | |
+| `$variadic` | _bool_ | No | |
+| `$passedByReference` | _bool_ | No | |
+| `$defaultValue` | _spaceonfire\ApiDoc\Element\ValueObject\Value|null_ | No | |
+
+```php
+public function __construct(string $name, string $description, spaceonfire\Type\Type|null $type = null, bool $variadic = false, bool $passedByReference = false, spaceonfire\ApiDoc\Element\ValueObject\Value|null $defaultValue = null)
+```
+
+File location: `Element/ValueObject/FunctionParameter.php:37`
+
+
+
+### getName()
+
+Getter for `name` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getName(): string
+```
+
+File location: `Element/ValueObject/FunctionParameter.php:57`
+
+
+
+### isVariadic()
+
+Getter for `variadic` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _bool_ | | |
+
+```php
+public function isVariadic(): bool
+```
+
+File location: `Element/ValueObject/FunctionParameter.php:66`
+
+
+
+### isPassedByReference()
+
+Getter for `passedByReference` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _bool_ | | |
+
+```php
+public function isPassedByReference(): bool
+```
+
+File location: `Element/ValueObject/FunctionParameter.php:75`
+
+
+
+### getDefaultValue()
+
+Getter for `defaultValue` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------------------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\Value|null_ | | |
+
+```php
+public function getDefaultValue(): spaceonfire\ApiDoc\Element\ValueObject\Value|null
+```
+
+File location: `Element/ValueObject/FunctionParameter.php:84`
+
+
+
+### getDescription()
+
+Getter for `description` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getDescription(): string
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/ValueObject/AbstractTypedSymbol.php:35`
+
+
+
+### getType()
+
+Getter for `type` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\Type\Type|null_ | | |
+
+```php
+public function getType(): spaceonfire\Type\Type|null
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/ValueObject/AbstractTypedSymbol.php:44`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ValueObject/FunctionReturn.md b/docs/Element/ValueObject/FunctionReturn.md
new file mode 100644
index 0000000..525ef6e
--- /dev/null
+++ b/docs/Element/ValueObject/FunctionReturn.md
@@ -0,0 +1,75 @@
+# Class FunctionReturn
+
+Full name: `spaceonfire\ApiDoc\Element\ValueObject\FunctionReturn`
+
+Parent class name: `spaceonfire\ApiDoc\Element\ValueObject\AbstractTypedSymbol`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------------------------- | --------------------------------- | ---------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_valueobject_abstracttypedsymbol_construct) | | AbstractTypedSymbol constructor. | [📢](# "Visibility: public") |
+| [getDescription](#spaceonfire_apidoc_element_valueobject_abstracttypedsymbol_getdescription) | _string_ | Getter for `description` property. | [📢](# "Visibility: public") |
+| [getType](#spaceonfire_apidoc_element_valueobject_abstracttypedsymbol_gettype) | _spaceonfire\Type\Type|null_ | Getter for `type` property. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+AbstractTypedSymbol constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | --------------------------------- | --------- | ----------- |
+| `$description` | _string_ | No | |
+| `$type` | _spaceonfire\Type\Type|null_ | No | |
+
+```php
+public function __construct(string $description, spaceonfire\Type\Type|null $type = null)
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/ValueObject/AbstractTypedSymbol.php:25`
+
+
+
+### getDescription()
+
+Getter for `description` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getDescription(): string
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/ValueObject/AbstractTypedSymbol.php:35`
+
+
+
+### getType()
+
+Getter for `type` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\Type\Type|null_ | | |
+
+```php
+public function getType(): spaceonfire\Type\Type|null
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/ValueObject/AbstractTypedSymbol.php:44`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ValueObject/FunctionThrows.md b/docs/Element/ValueObject/FunctionThrows.md
new file mode 100644
index 0000000..4c3feb2
--- /dev/null
+++ b/docs/Element/ValueObject/FunctionThrows.md
@@ -0,0 +1,75 @@
+# Class FunctionThrows
+
+Full name: `spaceonfire\ApiDoc\Element\ValueObject\FunctionThrows`
+
+Parent class name: `spaceonfire\ApiDoc\Element\ValueObject\AbstractTypedSymbol`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------------------------- | --------------------------------- | ---------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_valueobject_abstracttypedsymbol_construct) | | AbstractTypedSymbol constructor. | [📢](# "Visibility: public") |
+| [getDescription](#spaceonfire_apidoc_element_valueobject_abstracttypedsymbol_getdescription) | _string_ | Getter for `description` property. | [📢](# "Visibility: public") |
+| [getType](#spaceonfire_apidoc_element_valueobject_abstracttypedsymbol_gettype) | _spaceonfire\Type\Type|null_ | Getter for `type` property. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+AbstractTypedSymbol constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------- | --------------------------------- | --------- | ----------- |
+| `$description` | _string_ | No | |
+| `$type` | _spaceonfire\Type\Type|null_ | No | |
+
+```php
+public function __construct(string $description, spaceonfire\Type\Type|null $type = null)
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/ValueObject/AbstractTypedSymbol.php:25`
+
+
+
+### getDescription()
+
+Getter for `description` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getDescription(): string
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/ValueObject/AbstractTypedSymbol.php:35`
+
+
+
+### getType()
+
+Getter for `type` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\Type\Type|null_ | | |
+
+```php
+public function getType(): spaceonfire\Type\Type|null
+```
+
+File location: `/var/www/html/vendor/composer/../../src/Element/ValueObject/AbstractTypedSymbol.php:44`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ValueObject/LinkInterface.md b/docs/Element/ValueObject/LinkInterface.md
new file mode 100644
index 0000000..f6249f1
--- /dev/null
+++ b/docs/Element/ValueObject/LinkInterface.md
@@ -0,0 +1,75 @@
+# Interface LinkInterface
+
+Full name: `spaceonfire\ApiDoc\Element\ValueObject\LinkInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------------------- | ------------------ | ------------------------ | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [getTarget](#spaceonfire_apidoc_element_valueobject_linkinterface_gettarget) | _mixed_ | Returns link target | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+| [getText](#spaceonfire_apidoc_element_valueobject_linkinterface_gettext) | _string_ | Returns link text | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+| [getDescription](#spaceonfire_apidoc_element_valueobject_linkinterface_getdescription) | _string|null_ | Returns link description | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### getTarget()
+
+Returns link target
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------- | --------- | ----------- |
+| **Return** | _mixed_ | | |
+
+```php
+abstract public function getTarget(): mixed
+```
+
+File location: `Element/ValueObject/LinkInterface.php:13`
+
+
+
+### getText()
+
+Returns link text
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+abstract public function getText(): string
+```
+
+File location: `Element/ValueObject/LinkInterface.php:19`
+
+
+
+### getDescription()
+
+Returns link description
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------ | --------- | ----------- |
+| **Return** | _string|null_ | | |
+
+```php
+abstract public function getDescription(): string|null
+```
+
+File location: `Element/ValueObject/LinkInterface.php:25`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ValueObject/Value.md b/docs/Element/ValueObject/Value.md
new file mode 100644
index 0000000..a270fc1
--- /dev/null
+++ b/docs/Element/ValueObject/Value.md
@@ -0,0 +1,53 @@
+# Class Value
+
+Full name: `spaceonfire\ApiDoc\Element\ValueObject\Value`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------ | ------- | ---------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_valueobject_value_construct) | | Value constructor. | [📢](# "Visibility: public") |
+| [getValue](#spaceonfire_apidoc_element_valueobject_value_getvalue) | _mixed_ | Getter for `value` property. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+Value constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------- | ------- | --------- | ----------- |
+| `$value` | _mixed_ | No | |
+
+```php
+public function __construct(mixed $value)
+```
+
+File location: `Element/ValueObject/Value.php:18`
+
+
+
+### getValue()
+
+Getter for `value` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------- | --------- | ----------- |
+| **Return** | _mixed_ | | |
+
+```php
+public function getValue(): mixed
+```
+
+File location: `Element/ValueObject/Value.php:27`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ValueObject/Visibility.md b/docs/Element/ValueObject/Visibility.md
new file mode 100644
index 0000000..d01eb24
--- /dev/null
+++ b/docs/Element/ValueObject/Visibility.md
@@ -0,0 +1,284 @@
+# Class Visibility
+
+Class Visibility
+
+Full name: `spaceonfire\ApiDoc\Element\ValueObject\Visibility`
+
+Parent class name: `spaceonfire\ValueObject\EnumValue`
+
+This class implements: `JsonSerializable`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | ----------------------------------------------------- |
+| _Constants_ | | | |
+| [PUBLIC](#spaceonfire_apidoc_element_valueobject_visibility_public) | | | [📢](# "Visibility: public") |
+| [PROTECTED](#spaceonfire_apidoc_element_valueobject_visibility_protected) | | | [📢](# "Visibility: public") |
+| [PRIVATE](#spaceonfire_apidoc_element_valueobject_visibility_private) | | | [📢](# "Visibility: public") |
+| _Methods_ | | | |
+| [equals](#spaceonfire_valueobject_enumvalue_equals) | _bool_ | Checks that current VO is bigger than provided one. | [📢](# "Visibility: public") |
+| [\_\_callStatic](#spaceonfire_valueobject_enumvalue_callstatic) | _spaceonfire\ValueObject\EnumValue_ | Support for magic methods | [🇸](# "Static element") [📢](# "Visibility: public") |
+| [randomValue](#spaceonfire_valueobject_enumvalue_randomvalue) | _mixed|string_ | Returns random value for this enum class. | [🇸](# "Static element") [📢](# "Visibility: public") |
+| [random](#spaceonfire_valueobject_enumvalue_random) | _spaceonfire\ValueObject\EnumValue_ | Creates new enum VO with random value. | [🇸](# "Static element") [📢](# "Visibility: public") |
+| [values](#spaceonfire_valueobject_enumvalue_values) | _mixed[]|array_ | Returns values array for this enum class. | [🇸](# "Static element") [📢](# "Visibility: public") |
+| [\_\_construct](#spaceonfire_valueobject_basevalueobject_construct) | | VO constructor | [📌](# "Final element") [📢](# "Visibility: public") |
+| [value](#spaceonfire_valueobject_basevalueobject_value) | _mixed_ | Returns inner value of VO | [📢](# "Visibility: public") |
+| [\_\_toString](#spaceonfire_valueobject_basevalueobject_tostring) | _string_ | Cast VO to string | [📢](# "Visibility: public") |
+| [jsonSerialize](#spaceonfire_valueobject_basevalueobject_jsonserialize) | _mixed|string_ | Specify data which should be serialized to JSON | [📢](# "Visibility: public") |
+| _Magic methods_ | | | |
+| [public](#spaceonfire_apidoc_element_valueobject_visibility_public) | _spaceonfire\ApiDoc\Element\ValueObject\Visibility_ | | [🇸](# "Static element") [📢](# "Visibility: public") |
+| [protected](#spaceonfire_apidoc_element_valueobject_visibility_protected) | _spaceonfire\ApiDoc\Element\ValueObject\Visibility_ | | [🇸](# "Static element") [📢](# "Visibility: public") |
+| [private](#spaceonfire_apidoc_element_valueobject_visibility_private) | _spaceonfire\ApiDoc\Element\ValueObject\Visibility_ | | [🇸](# "Static element") [📢](# "Visibility: public") |
+
+## Constants
+
+
+
+### PUBLIC
+
+- **Visibility**: public
+- **Value**: `'public'`
+
+File location: `Element/ValueObject/Visibility.php:18`
+
+
+
+### PROTECTED
+
+- **Visibility**: public
+- **Value**: `'protected'`
+
+File location: `Element/ValueObject/Visibility.php:19`
+
+
+
+### PRIVATE
+
+- **Visibility**: public
+- **Value**: `'private'`
+
+File location: `Element/ValueObject/Visibility.php:20`
+
+## Methods
+
+
+
+### equals()
+
+Checks that current VO is bigger than provided one.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------- | --------- | ----------- |
+| `$other` | _spaceonfire\ValueObject\EnumValue_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function equals(spaceonfire\ValueObject\EnumValue $other): bool
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/value-object/src/EnumValue.php:51`
+
+
+
+### \_\_callStatic()
+
+Support for magic methods
+
+- **Visibility**: public
+- **Static**: Yes
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------- | --------- | ----------- |
+| `$name` | _string_ | No | |
+| `$args` | _mixed[]_ | No | |
+| **Return** | _spaceonfire\ValueObject\EnumValue_ | | |
+
+```php
+public static function __callStatic(string $name, mixed[] $args): spaceonfire\ValueObject\EnumValue
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/value-object/src/EnumValue.php:63`
+
+
+
+### randomValue()
+
+Returns random value for this enum class.
+
+- **Visibility**: public
+- **Static**: Yes
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------- | --------- | ----------- |
+| **Return** | _mixed|string_ | | |
+
+```php
+public static function randomValue(): mixed|string
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/value-object/src/EnumValue.php:72`
+
+
+
+### random()
+
+Creates new enum VO with random value.
+
+- **Visibility**: public
+- **Static**: Yes
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ValueObject\EnumValue_ | | |
+
+```php
+public static function random(): spaceonfire\ValueObject\EnumValue
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/value-object/src/EnumValue.php:81`
+
+
+
+### values()
+
+Returns values array for this enum class.
+
+- **Visibility**: public
+- **Static**: Yes
+
+| Param | Type | Reference | Description |
+| ---------- | -------------------- | --------- | ----------- |
+| **Return** | _mixed[]|array_ | | |
+
+```php
+public static function values(): mixed[]|array
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/value-object/src/EnumValue.php:90`
+
+
+
+### \_\_construct()
+
+VO constructor
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------- | ------- | --------- | ----------- |
+| `$value` | _mixed_ | No | |
+
+```php
+final public function __construct(mixed $value)
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/value-object/src/BaseValueObject.php:22`
+
+
+
+### value()
+
+Returns inner value of VO
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------- | --------- | ----------- |
+| **Return** | _mixed_ | | |
+
+```php
+public function value(): mixed
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/value-object/src/BaseValueObject.php:71`
+
+
+
+### \_\_toString()
+
+Cast VO to string
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function __toString(): string
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/value-object/src/BaseValueObject.php:80`
+
+
+
+### jsonSerialize()
+
+Specify data which should be serialized to JSON
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------- | --------- | ----------- |
+| **Return** | _mixed|string_ | | |
+
+```php
+public function jsonSerialize(): mixed|string
+```
+
+File location: `/var/www/html/vendor/composer/../spaceonfire/value-object/src/BaseValueObject.php:89`
+
+## Magic methods
+
+
+
+### public()
+
+- **Visibility**: public
+- **Static**: Yes
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\Visibility_ | | |
+
+```php
+public static function public(): spaceonfire\ApiDoc\Element\ValueObject\Visibility
+```
+
+
+
+### protected()
+
+- **Visibility**: public
+- **Static**: Yes
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\Visibility_ | | |
+
+```php
+public static function protected(): spaceonfire\ApiDoc\Element\ValueObject\Visibility
+```
+
+
+
+### private()
+
+- **Visibility**: public
+- **Static**: Yes
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\Visibility_ | | |
+
+```php
+public static function private(): spaceonfire\ApiDoc\Element\ValueObject\Visibility
+```
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Element/ValueObject/VisibilityFilter.md b/docs/Element/ValueObject/VisibilityFilter.md
new file mode 100644
index 0000000..3b5f5ed
--- /dev/null
+++ b/docs/Element/ValueObject/VisibilityFilter.md
@@ -0,0 +1,83 @@
+# Class VisibilityFilter
+
+Full name: `spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------- | ------ | ------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_element_valueobject_visibilityfilter_construct) | | | [📢](# "Visibility: public") |
+| [hasPublic](#spaceonfire_apidoc_element_valueobject_visibilityfilter_haspublic) | _bool_ | | [📢](# "Visibility: public") |
+| [hasProtected](#spaceonfire_apidoc_element_valueobject_visibilityfilter_hasprotected) | _bool_ | | [📢](# "Visibility: public") |
+| [hasPrivate](#spaceonfire_apidoc_element_valueobject_visibilityfilter_hasprivate) | _bool_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------ | --------------------------------------------------- | --------- | ----------- |
+| `...$visibilities` | _spaceonfire\ApiDoc\Element\ValueObject\Visibility_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\ValueObject\Visibility ...$visibilities)
+```
+
+File location: `Element/ValueObject/VisibilityFilter.php:17`
+
+
+
+### hasPublic()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _bool_ | | |
+
+```php
+public function hasPublic(): bool
+```
+
+File location: `Element/ValueObject/VisibilityFilter.php:33`
+
+
+
+### hasProtected()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _bool_ | | |
+
+```php
+public function hasProtected(): bool
+```
+
+File location: `Element/ValueObject/VisibilityFilter.php:38`
+
+
+
+### hasPrivate()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------ | --------- | ----------- |
+| **Return** | _bool_ | | |
+
+```php
+public function hasPrivate(): bool
+```
+
+File location: `Element/ValueObject/VisibilityFilter.php:43`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Exception/GivenReflectionNotSupported.md b/docs/Exception/GivenReflectionNotSupported.md
new file mode 100644
index 0000000..2384d93
--- /dev/null
+++ b/docs/Exception/GivenReflectionNotSupported.md
@@ -0,0 +1,263 @@
+# Class GivenReflectionNotSupported
+
+Full name: `spaceonfire\ApiDoc\Exception\GivenReflectionNotSupported`
+
+Parent class name: `UnexpectedValueException`
+
+This class implements: `Throwable`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | --------------------------------------------- | ----------------------------------------------------- |
+| _Methods_ | | | |
+| [byElementFactory](#spaceonfire_apidoc_exception_givenreflectionnotsupported_byelementfactory) | _spaceonfire\ApiDoc\Exception\GivenReflectionNotSupported_ | | [🇸](# "Static element") [📢](# "Visibility: public") |
+| [byDocBlockResolver](#spaceonfire_apidoc_exception_givenreflectionnotsupported_bydocblockresolver) | _spaceonfire\ApiDoc\Exception\GivenReflectionNotSupported_ | | [🇸](# "Static element") [📢](# "Visibility: public") |
+| [forReason](#spaceonfire_apidoc_exception_givenreflectionnotsupported_forreason) | _spaceonfire\ApiDoc\Exception\GivenReflectionNotSupported_ | | [🇸](# "Static element") [📢](# "Visibility: public") |
+| [getMessage](#exception_getmessage) | _string_ | Gets the Exception message | [📌](# "Final element") [📢](# "Visibility: public") |
+| [getCode](#exception_getcode) | _mixed|int_ | Gets the Exception code | [📌](# "Final element") [📢](# "Visibility: public") |
+| [getFile](#exception_getfile) | _string_ | Gets the file in which the exception occurred | [📌](# "Final element") [📢](# "Visibility: public") |
+| [getLine](#exception_getline) | _int_ | Gets the line in which the exception occurred | [📌](# "Final element") [📢](# "Visibility: public") |
+| [getTrace](#exception_gettrace) | _mixed[]_ | Gets the stack trace | [📌](# "Final element") [📢](# "Visibility: public") |
+| [getPrevious](#exception_getprevious) | _Exception_ | Returns previous Exception | [📌](# "Final element") [📢](# "Visibility: public") |
+| [getTraceAsString](#exception_gettraceasstring) | _string_ | Gets the stack trace as a string | [📌](# "Final element") [📢](# "Visibility: public") |
+| [\_\_toString](#exception_tostring) | _string_ | String representation of the exception | [📢](# "Visibility: public") |
+| [\_\_wakeup](#exception_wakeup) | | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### byElementFactory()
+
+- **Visibility**: public
+- **Static**: Yes
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Exception\GivenReflectionNotSupported_ | | |
+
+```php
+public static function byElementFactory(object $reflection): spaceonfire\ApiDoc\Exception\GivenReflectionNotSupported
+```
+
+File location: `Exception/GivenReflectionNotSupported.php:17`
+
+
+
+### byDocBlockResolver()
+
+- **Visibility**: public
+- **Static**: Yes
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Exception\GivenReflectionNotSupported_ | | |
+
+```php
+public static function byDocBlockResolver(object $reflection): spaceonfire\ApiDoc\Exception\GivenReflectionNotSupported
+```
+
+File location: `Exception/GivenReflectionNotSupported.php:25`
+
+
+
+### forReason()
+
+- **Visibility**: public
+- **Static**: Yes
+
+| Param | Type | Reference | Description |
+| ------------- | ---------------------------------------------------------- | --------- | ----------- |
+| `$reflection` | _object_ | No | |
+| `$reason` | _string_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Exception\GivenReflectionNotSupported_ | | |
+
+```php
+public static function forReason(object $reflection, string $reason = ''): spaceonfire\ApiDoc\Exception\GivenReflectionNotSupported
+```
+
+File location: `Exception/GivenReflectionNotSupported.php:33`
+
+
+
+### getMessage()
+
+Gets the Exception message
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ---------------------------------- |
+| **Return** | _string_ | | the Exception message as a string. |
+
+```php
+final public function getMessage(): string
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.getmessage.php](https://php.net/manual/en/exception.getmessage.php)
+
+
+
+### getCode()
+
+Gets the Exception code
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **Return** | _mixed|int_ | | the exception code as integer in
Exception but possibly as other type in
Exception descendants (for example as
string in PDOException). |
+
+```php
+final public function getCode(): mixed|int
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.getcode.php](https://php.net/manual/en/exception.getcode.php)
+
+
+
+### getFile()
+
+Gets the file in which the exception occurred
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ------------------------------------------------ |
+| **Return** | _string_ | | the filename in which the exception was created. |
+
+```php
+final public function getFile(): string
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.getfile.php](https://php.net/manual/en/exception.getfile.php)
+
+
+
+### getLine()
+
+Gets the line in which the exception occurred
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----- | --------- | ------------------------------------------------ |
+| **Return** | _int_ | | the line number where the exception was created. |
+
+```php
+final public function getLine(): int
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.getline.php](https://php.net/manual/en/exception.getline.php)
+
+
+
+### getTrace()
+
+Gets the stack trace
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------- | --------- | -------------------------------------- |
+| **Return** | _mixed[]_ | | the Exception stack trace as an array. |
+
+```php
+final public function getTrace(): mixed[]
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.gettrace.php](https://php.net/manual/en/exception.gettrace.php)
+
+
+
+### getPrevious()
+
+Returns previous Exception
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------- | --------- | ---------------------------------------------------------------- |
+| **Return** | _Exception_ | | the previous Exception if available
or null otherwise. |
+
+```php
+final public function getPrevious(): Exception
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.getprevious.php](https://php.net/manual/en/exception.getprevious.php)
+
+
+
+### getTraceAsString()
+
+Gets the stack trace as a string
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | -------------------------------------- |
+| **Return** | _string_ | | the Exception stack trace as a string. |
+
+```php
+final public function getTraceAsString(): string
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.gettraceasstring.php](https://php.net/manual/en/exception.gettraceasstring.php)
+
+
+
+### \_\_toString()
+
+String representation of the exception
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ------------------------------------------- |
+| **Return** | _string_ | | the string representation of the exception. |
+
+```php
+public function __toString(): string
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.tostring.php](https://php.net/manual/en/exception.tostring.php)
+
+
+
+### \_\_wakeup()
+
+- **Visibility**: public
+
+```php
+public function __wakeup()
+```
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Exception/TypeCannotBeConverted.md b/docs/Exception/TypeCannotBeConverted.md
new file mode 100644
index 0000000..2b4393d
--- /dev/null
+++ b/docs/Exception/TypeCannotBeConverted.md
@@ -0,0 +1,222 @@
+# Class TypeCannotBeConverted
+
+Full name: `spaceonfire\ApiDoc\Exception\TypeCannotBeConverted`
+
+Parent class name: `UnexpectedValueException`
+
+This class implements: `Throwable`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------ | ---------------- | --------------------------------------------- | ---------------------------------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_exception_typecannotbeconverted_construct) | | | [📢](# "Visibility: public") |
+| [getMessage](#exception_getmessage) | _string_ | Gets the Exception message | [📌](# "Final element") [📢](# "Visibility: public") |
+| [getCode](#exception_getcode) | _mixed|int_ | Gets the Exception code | [📌](# "Final element") [📢](# "Visibility: public") |
+| [getFile](#exception_getfile) | _string_ | Gets the file in which the exception occurred | [📌](# "Final element") [📢](# "Visibility: public") |
+| [getLine](#exception_getline) | _int_ | Gets the line in which the exception occurred | [📌](# "Final element") [📢](# "Visibility: public") |
+| [getTrace](#exception_gettrace) | _mixed[]_ | Gets the stack trace | [📌](# "Final element") [📢](# "Visibility: public") |
+| [getPrevious](#exception_getprevious) | _Exception_ | Returns previous Exception | [📌](# "Final element") [📢](# "Visibility: public") |
+| [getTraceAsString](#exception_gettraceasstring) | _string_ | Gets the stack trace as a string | [📌](# "Final element") [📢](# "Visibility: public") |
+| [\_\_toString](#exception_tostring) | _string_ | String representation of the exception | [📢](# "Visibility: public") |
+| [\_\_wakeup](#exception_wakeup) | | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------- | ------------------------------- | --------- | ----------- |
+| `$type` | _phpDocumentor\Reflection\Type_ | No | |
+
+```php
+public function __construct(phpDocumentor\Reflection\Type $type)
+```
+
+File location: `Exception/TypeCannotBeConverted.php:12`
+
+
+
+### getMessage()
+
+Gets the Exception message
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ---------------------------------- |
+| **Return** | _string_ | | the Exception message as a string. |
+
+```php
+final public function getMessage(): string
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.getmessage.php](https://php.net/manual/en/exception.getmessage.php)
+
+
+
+### getCode()
+
+Gets the Exception code
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **Return** | _mixed|int_ | | the exception code as integer in
Exception but possibly as other type in
Exception descendants (for example as
string in PDOException). |
+
+```php
+final public function getCode(): mixed|int
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.getcode.php](https://php.net/manual/en/exception.getcode.php)
+
+
+
+### getFile()
+
+Gets the file in which the exception occurred
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ------------------------------------------------ |
+| **Return** | _string_ | | the filename in which the exception was created. |
+
+```php
+final public function getFile(): string
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.getfile.php](https://php.net/manual/en/exception.getfile.php)
+
+
+
+### getLine()
+
+Gets the line in which the exception occurred
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----- | --------- | ------------------------------------------------ |
+| **Return** | _int_ | | the line number where the exception was created. |
+
+```php
+final public function getLine(): int
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.getline.php](https://php.net/manual/en/exception.getline.php)
+
+
+
+### getTrace()
+
+Gets the stack trace
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------- | --------- | -------------------------------------- |
+| **Return** | _mixed[]_ | | the Exception stack trace as an array. |
+
+```php
+final public function getTrace(): mixed[]
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.gettrace.php](https://php.net/manual/en/exception.gettrace.php)
+
+
+
+### getPrevious()
+
+Returns previous Exception
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------- | --------- | ---------------------------------------------------------------- |
+| **Return** | _Exception_ | | the previous Exception if available
or null otherwise. |
+
+```php
+final public function getPrevious(): Exception
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.getprevious.php](https://php.net/manual/en/exception.getprevious.php)
+
+
+
+### getTraceAsString()
+
+Gets the stack trace as a string
+
+- **Final method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | -------------------------------------- |
+| **Return** | _string_ | | the Exception stack trace as a string. |
+
+```php
+final public function getTraceAsString(): string
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.gettraceasstring.php](https://php.net/manual/en/exception.gettraceasstring.php)
+
+
+
+### \_\_toString()
+
+String representation of the exception
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ------------------------------------------- |
+| **Return** | _string_ | | the string representation of the exception. |
+
+```php
+public function __toString(): string
+```
+
+**Links**:
+
+- [https://php.net/manual/en/exception.tostring.php](https://php.net/manual/en/exception.tostring.php)
+
+
+
+### \_\_wakeup()
+
+- **Visibility**: public
+
+```php
+public function __wakeup()
+```
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Generator/ApiDocGenerator.md b/docs/Generator/ApiDocGenerator.md
new file mode 100644
index 0000000..084f814
--- /dev/null
+++ b/docs/Generator/ApiDocGenerator.md
@@ -0,0 +1,57 @@
+# Class ApiDocGenerator
+
+Full name: `spaceonfire\ApiDoc\Generator\ApiDocGenerator`
+
+This class implements: `spaceonfire\ApiDoc\Generator\GeneratorInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------ | --------------------------------------------------- | ---------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_generator_apidocgenerator_construct) | | ApiDocGenerator constructor. | [📢](# "Visibility: public") |
+| [generate](#spaceonfire_apidoc_generator_apidocgenerator_generate) | _spaceonfire\ApiDoc\Generator\File[]|iterable_ | Generates apiDoc for given project | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+ApiDocGenerator constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------- | -------------------------------------------------------- | --------- | ----------- |
+| `$renderer` | _spaceonfire\ApiDoc\Render\RendererInterface_ | No | |
+| `$fileNameStrategy` | _spaceonfire\ApiDoc\Generator\FileNameStrategyInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Render\RendererInterface $renderer, spaceonfire\ApiDoc\Generator\FileNameStrategyInterface $fileNameStrategy)
+```
+
+File location: `Generator/ApiDocGenerator.php:26`
+
+
+
+### generate()
+
+Generates apiDoc for given project
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------- | --------- | ----------- |
+| `$project` | _spaceonfire\ApiDoc\Project\Project_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Generator\File[]|iterable_ | | |
+
+```php
+public function generate(spaceonfire\ApiDoc\Project\Project $project): spaceonfire\ApiDoc\Generator\File[]|iterable
+```
+
+File location: `Generator/ApiDocGenerator.php:35`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Generator/File.md b/docs/Generator/File.md
new file mode 100644
index 0000000..80dbadc
--- /dev/null
+++ b/docs/Generator/File.md
@@ -0,0 +1,73 @@
+# Class File
+
+Full name: `spaceonfire\ApiDoc\Generator\File`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------- | -------- | ------------------------------ | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_generator_file_construct) | | File constructor. | [📢](# "Visibility: public") |
+| [getName](#spaceonfire_apidoc_generator_file_getname) | _string_ | Getter for `name` property. | [📢](# "Visibility: public") |
+| [getContent](#spaceonfire_apidoc_generator_file_getcontent) | _string_ | Getter for `content` property. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+File constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| `$name` | _string_ | No | |
+| `$content` | _string_ | No | |
+
+```php
+public function __construct(string $name, string $content)
+```
+
+File location: `Generator/File.php:23`
+
+
+
+### getName()
+
+Getter for `name` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getName(): string
+```
+
+File location: `Generator/File.php:33`
+
+
+
+### getContent()
+
+Getter for `content` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getContent(): string
+```
+
+File location: `Generator/File.php:42`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Generator/FileNameStrategy.md b/docs/Generator/FileNameStrategy.md
new file mode 100644
index 0000000..11d6681
--- /dev/null
+++ b/docs/Generator/FileNameStrategy.md
@@ -0,0 +1,55 @@
+# Class FileNameStrategy
+
+Full name: `spaceonfire\ApiDoc\Generator\FileNameStrategy`
+
+This class implements: `spaceonfire\ApiDoc\Generator\FileNameStrategyInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------- | -------- | ----------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_generator_filenamestrategy_construct) | | FileNameStrategy constructor. | [📢](# "Visibility: public") |
+| [generate](#spaceonfire_apidoc_generator_filenamestrategy_generate) | _string_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+FileNameStrategy constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------------- | -------- | --------- | ----------- |
+| `$baseNamespace` | _string_ | No | |
+| `$fileExtension` | _string_ | No | |
+
+```php
+public function __construct(string $baseNamespace, string $fileExtension)
+```
+
+File location: `Generator/FileNameStrategy.php:25`
+
+
+
+### generate()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------------------- | --------- | ----------- |
+| `$fqsen` | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | No | |
+| **Return** | _string_ | | |
+
+```php
+public function generate(spaceonfire\ApiDoc\Element\ValueObject\Fqsen $fqsen): string
+```
+
+File location: `Generator/FileNameStrategy.php:34`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Generator/FileNameStrategyInterface.md b/docs/Generator/FileNameStrategyInterface.md
new file mode 100644
index 0000000..246bc9f
--- /dev/null
+++ b/docs/Generator/FileNameStrategyInterface.md
@@ -0,0 +1,34 @@
+# Interface FileNameStrategyInterface
+
+Full name: `spaceonfire\ApiDoc\Generator\FileNameStrategyInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ---------------------------------------------------------------------------- | -------- | ------- | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [generate](#spaceonfire_apidoc_generator_filenamestrategyinterface_generate) | _string_ | | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### generate()
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------------------- | --------- | ----------- |
+| `$fqsen` | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | No | |
+| **Return** | _string_ | | |
+
+```php
+abstract public function generate(spaceonfire\ApiDoc\Element\ValueObject\Fqsen $fqsen): string
+```
+
+File location: `Generator/FileNameStrategyInterface.php:15`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Generator/GeneratorInterface.md b/docs/Generator/GeneratorInterface.md
new file mode 100644
index 0000000..9d142c4
--- /dev/null
+++ b/docs/Generator/GeneratorInterface.md
@@ -0,0 +1,36 @@
+# Interface GeneratorInterface
+
+Full name: `spaceonfire\ApiDoc\Generator\GeneratorInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------- | --------------------------------------------------- | ---------------------------------- | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [generate](#spaceonfire_apidoc_generator_generatorinterface_generate) | _spaceonfire\ApiDoc\Generator\File[]|iterable_ | Generates apiDoc for given project | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### generate()
+
+Generates apiDoc for given project
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------- | --------- | ----------- |
+| `$project` | _spaceonfire\ApiDoc\Project\Project_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Generator\File[]|iterable_ | | |
+
+```php
+abstract public function generate(spaceonfire\ApiDoc\Project\Project $project): spaceonfire\ApiDoc\Generator\File[]|iterable
+```
+
+File location: `Generator/GeneratorInterface.php:16`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Generator/LocalFilesystemPersister.md b/docs/Generator/LocalFilesystemPersister.md
new file mode 100644
index 0000000..78d6af2
--- /dev/null
+++ b/docs/Generator/LocalFilesystemPersister.md
@@ -0,0 +1,55 @@
+# Class LocalFilesystemPersister
+
+Full name: `spaceonfire\ApiDoc\Generator\LocalFilesystemPersister`
+
+This class implements: `spaceonfire\ApiDoc\Generator\PersisterInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------------------- | ------ | ------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_generator_localfilesystempersister_construct) | | LocalFilesystemPersister constructor. | [📢](# "Visibility: public") |
+| [persist](#spaceonfire_apidoc_generator_localfilesystempersister_persist) | _void_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+LocalFilesystemPersister constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------ | --------------------------------------------------- | --------- | ----------- |
+| `$outputDirectory` | _string_ | No | |
+| `$filesystem` | _Symfony\Component\Filesystem\Filesystem|null_ | No | |
+
+```php
+public function __construct(string $outputDirectory, Symfony\Component\Filesystem\Filesystem|null $filesystem = null)
+```
+
+File location: `Generator/LocalFilesystemPersister.php:25`
+
+
+
+### persist()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------- | --------- | ----------- |
+| `$file` | _spaceonfire\ApiDoc\Generator\File_ | No | |
+| **Return** | _void_ | | |
+
+```php
+public function persist(spaceonfire\ApiDoc\Generator\File $file): void
+```
+
+File location: `Generator/LocalFilesystemPersister.php:34`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Generator/PersisterInterface.md b/docs/Generator/PersisterInterface.md
new file mode 100644
index 0000000..f9b41e3
--- /dev/null
+++ b/docs/Generator/PersisterInterface.md
@@ -0,0 +1,34 @@
+# Interface PersisterInterface
+
+Full name: `spaceonfire\ApiDoc\Generator\PersisterInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------- | ------ | ------- | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [persist](#spaceonfire_apidoc_generator_persisterinterface_persist) | _void_ | | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### persist()
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------- | --------- | ----------- |
+| `$file` | _spaceonfire\ApiDoc\Generator\File_ | No | |
+| **Return** | _void_ | | |
+
+```php
+abstract public function persist(spaceonfire\ApiDoc\Generator\File $file): void
+```
+
+File location: `Generator/PersisterInterface.php:12`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Project/Project.md b/docs/Project/Project.md
new file mode 100644
index 0000000..255afde
--- /dev/null
+++ b/docs/Project/Project.md
@@ -0,0 +1,132 @@
+# Class Project
+
+Full name: `spaceonfire\ApiDoc\Project\Project`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------------- | ------------------------------------------------------------- | ---------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_project_project_construct) | | Project constructor. | [📢](# "Visibility: public") |
+| [getName](#spaceonfire_apidoc_project_project_getname) | _string_ | Returns project name | [📢](# "Visibility: public") |
+| [getClassLikeElements](#spaceonfire_apidoc_project_project_getclasslikeelements) | _spaceonfire\ApiDoc\Element\ElementInterface[]|iterable_ | Getter for `classLikeElements` property. | [📢](# "Visibility: public") |
+| [getFunctions](#spaceonfire_apidoc_project_project_getfunctions) | _spaceonfire\ApiDoc\Element\FunctionsAggregate_ | Getter for `functions` property. | [📢](# "Visibility: public") |
+| [getConstants](#spaceonfire_apidoc_project_project_getconstants) | _spaceonfire\ApiDoc\Element\ConstantsAggregate_ | Getter for `constants` property. | [📢](# "Visibility: public") |
+| [getTableOfContents](#spaceonfire_apidoc_project_project_gettableofcontents) | _spaceonfire\ApiDoc\Element\TableOfContentsElement_ | Getter for `toc` property. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+Project constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------------- | ------------------------------------------------------------- | --------- | ----------- |
+| `$name` | _string_ | No | |
+| `$classLikeElements` | _spaceonfire\ApiDoc\Element\ElementInterface[]|iterable_ | No | |
+| `$functions` | _spaceonfire\ApiDoc\Element\FunctionElement[]|iterable_ | No | |
+| `$constants` | _spaceonfire\ApiDoc\Element\ConstantElement[]|iterable_ | No | |
+
+```php
+public function __construct(string $name, spaceonfire\ApiDoc\Element\ElementInterface[]|iterable $classLikeElements, spaceonfire\ApiDoc\Element\FunctionElement[]|iterable $functions = [], spaceonfire\ApiDoc\Element\ConstantElement[]|iterable $constants = [])
+```
+
+File location: `Project/Project.php:44`
+
+
+
+### getName()
+
+Returns project name
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| **Return** | _string_ | | |
+
+```php
+public function getName(): string
+```
+
+File location: `Project/Project.php:63`
+
+
+
+### getClassLikeElements()
+
+Getter for `classLikeElements` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\ElementInterface[]|iterable_ | | |
+
+```php
+public function getClassLikeElements(): spaceonfire\ApiDoc\Element\ElementInterface[]|iterable
+```
+
+File location: `Project/Project.php:72`
+
+
+
+### getFunctions()
+
+Getter for `functions` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\FunctionsAggregate_ | | |
+
+```php
+public function getFunctions(): spaceonfire\ApiDoc\Element\FunctionsAggregate
+```
+
+File location: `Project/Project.php:81`
+
+
+
+### getConstants()
+
+Getter for `constants` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ----------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\ConstantsAggregate_ | | |
+
+```php
+public function getConstants(): spaceonfire\ApiDoc\Element\ConstantsAggregate
+```
+
+File location: `Project/Project.php:90`
+
+
+
+### getTableOfContents()
+
+Getter for `toc` property.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------------- | --------- | ----------- |
+| **Return** | _spaceonfire\ApiDoc\Element\TableOfContentsElement_ | | |
+
+```php
+public function getTableOfContents(): spaceonfire\ApiDoc\Element\TableOfContentsElement
+```
+
+File location: `Project/Project.php:99`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Project/ProjectFactory.md b/docs/Project/ProjectFactory.md
new file mode 100644
index 0000000..bc9bcce
--- /dev/null
+++ b/docs/Project/ProjectFactory.md
@@ -0,0 +1,55 @@
+# Class ProjectFactory
+
+Full name: `spaceonfire\ApiDoc\Project\ProjectFactory`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| --------------------------------------------------------------------- | ------------------------------------ | --------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_project_projectfactory_construct) | | ProjectFactory constructor. | [📢](# "Visibility: public") |
+| [make](#spaceonfire_apidoc_project_projectfactory_make) | _spaceonfire\ApiDoc\Project\Project_ | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+ProjectFactory constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------------- | ------------------------------------------------------------ | --------- | ----------- |
+| `$elementFactory` | _spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface_ | No | |
+| `$classReflector` | _Roave\BetterReflection\Reflector\ClassReflector_ | No | |
+| `$functionReflector` | _Roave\BetterReflection\Reflector\FunctionReflector_ | No | |
+| `$constantReflector` | _Roave\BetterReflection\Reflector\ConstantReflector_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface $elementFactory, Roave\BetterReflection\Reflector\ClassReflector $classReflector, Roave\BetterReflection\Reflector\FunctionReflector $functionReflector, Roave\BetterReflection\Reflector\ConstantReflector $constantReflector)
+```
+
+File location: `Project/ProjectFactory.php:43`
+
+
+
+### make()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------ | --------- | ----------- |
+| `$config` | _spaceonfire\ApiDoc\Config\Config_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Project\Project_ | | |
+
+```php
+public function make(spaceonfire\ApiDoc\Config\Config $config): spaceonfire\ApiDoc\Project\Project
+```
+
+File location: `Project/ProjectFactory.php:59`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/README.md b/docs/README.md
index 0174bb6..e448a48 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,53 +1,176 @@
-# spaceonfire/simple-php-apidoc API Documentation
+# SpaceOnFire ApiDoc API documentation
-- [\spaceonfire\SimplePhpApiDoc](./spaceonfire/SimplePhpApiDoc)
- - Classes
- - [Context](./spaceonfire/SimplePhpApiDoc/Context.md)
- - [GeneratorCommand](./spaceonfire/SimplePhpApiDoc/GeneratorCommand.md)
-- [\spaceonfire\SimplePhpApiDoc\Elements](./spaceonfire/SimplePhpApiDoc/Elements)
- - Classes
- - [ArgumentElement](./spaceonfire/SimplePhpApiDoc/Elements/ArgumentElement.md)
- - [BaseElement](./spaceonfire/SimplePhpApiDoc/Elements/BaseElement.md)
- - [ClassElement](./spaceonfire/SimplePhpApiDoc/Elements/ClassElement.md)
- - [ConstantElement](./spaceonfire/SimplePhpApiDoc/Elements/ConstantElement.md)
- - [FunctionElement](./spaceonfire/SimplePhpApiDoc/Elements/FunctionElement.md)
- - [InterfaceElement](./spaceonfire/SimplePhpApiDoc/Elements/InterfaceElement.md)
- - [MethodElement](./spaceonfire/SimplePhpApiDoc/Elements/MethodElement.md)
- - [NamespaceElement](./spaceonfire/SimplePhpApiDoc/Elements/NamespaceElement.md)
- - [PropertyElement](./spaceonfire/SimplePhpApiDoc/Elements/PropertyElement.md)
- - [TraitElement](./spaceonfire/SimplePhpApiDoc/Elements/TraitElement.md)
- - Interfaces
- - [ElementDecoratorInterface](./spaceonfire/SimplePhpApiDoc/Elements/ElementDecoratorInterface.md)
- - [ElementInterface](./spaceonfire/SimplePhpApiDoc/Elements/ElementInterface.md)
- - [ElementVisibilityInterface](./spaceonfire/SimplePhpApiDoc/Elements/ElementVisibilityInterface.md)
- - [MethodOwnerInterface](./spaceonfire/SimplePhpApiDoc/Elements/MethodOwnerInterface.md)
- - [PropertyOwnerInterface](./spaceonfire/SimplePhpApiDoc/Elements/PropertyOwnerInterface.md)
-- [\spaceonfire\SimplePhpApiDoc\Elements\Collections](./spaceonfire/SimplePhpApiDoc/Elements/Collections)
- - Classes
- - [MethodsCollection](./spaceonfire/SimplePhpApiDoc/Elements/Collections/MethodsCollection.md)
- - [NamespacesCollection](./spaceonfire/SimplePhpApiDoc/Elements/Collections/NamespacesCollection.md)
- - [PropertiesCollection](./spaceonfire/SimplePhpApiDoc/Elements/Collections/PropertiesCollection.md)
- - [TraitsCollection](./spaceonfire/SimplePhpApiDoc/Elements/Collections/TraitsCollection.md)
- - Interfaces
- - [FilterableByVisibilityCollectionInterface](./spaceonfire/SimplePhpApiDoc/Elements/Collections/FilterableByVisibilityCollectionInterface.md)
- - Traits
- - [FilterableByVisibilityCollectionTrait](./spaceonfire/SimplePhpApiDoc/Elements/Collections/FilterableByVisibilityCollectionTrait.md)
-- [\spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver](./spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver)
- - Classes
- - [BaseDocBlockResolver](./spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/BaseDocBlockResolver.md)
- - [ClassDocBlockResolver](./spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/ClassDocBlockResolver.md)
- - [MethodDocBlockResolver](./spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/MethodDocBlockResolver.md)
- - [PropertyDocBlockResolver](./spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/PropertyDocBlockResolver.md)
-- [\spaceonfire\SimplePhpApiDoc\Renderers](./spaceonfire/SimplePhpApiDoc/Renderers)
- - Classes
- - [BaseRenderer](./spaceonfire/SimplePhpApiDoc/Renderers/BaseRenderer.md)
- - Interfaces
- - [RendererInterface](./spaceonfire/SimplePhpApiDoc/Renderers/RendererInterface.md)
-- [\spaceonfire\SimplePhpApiDoc\Renderers\Markdown](./spaceonfire/SimplePhpApiDoc/Renderers/Markdown)
- - Classes
- - [MarkdownHelper](./spaceonfire/SimplePhpApiDoc/Renderers/Markdown/MarkdownHelper.md)
- - [MarkdownRenderer](./spaceonfire/SimplePhpApiDoc/Renderers/Markdown/MarkdownRenderer.md)
+- spaceonfire\ApiDoc\Application
+ - Classes
+ - [spaceonfire\ApiDoc\Application\ApiDocKernel](Application/ApiDocKernel.md#spaceonfire_apidoc_application_apidockernel)
+- spaceonfire\ApiDoc\Application\Console
+ - Classes
+ - [spaceonfire\ApiDoc\Application\Console\GenerateCommand](Application/Console/GenerateCommand.md#spaceonfire_apidoc_application_console_generatecommand)
+- spaceonfire\ApiDoc\Application\ServiceProviders
+ - Classes
+ - [spaceonfire\ApiDoc\Application\ServiceProviders\ConfigProvider](Application/ServiceProviders/ConfigProvider.md#spaceonfire_apidoc_application_serviceproviders_configprovider)
+ - [spaceonfire\ApiDoc\Application\ServiceProviders\ConsoleCommandsProvider](Application/ServiceProviders/ConsoleCommandsProvider.md#spaceonfire_apidoc_application_serviceproviders_consolecommandsprovider)
+ - [spaceonfire\ApiDoc\Application\ServiceProviders\DefaultApiDocGeneratorProvider](Application/ServiceProviders/DefaultApiDocGeneratorProvider.md#spaceonfire_apidoc_application_serviceproviders_defaultapidocgeneratorprovider)
+ - [spaceonfire\ApiDoc\Application\ServiceProviders\DefaultRendererProvider](Application/ServiceProviders/DefaultRendererProvider.md#spaceonfire_apidoc_application_serviceproviders_defaultrendererprovider)
+ - [spaceonfire\ApiDoc\Application\ServiceProviders\DocBlockResolverProvider](Application/ServiceProviders/DocBlockResolverProvider.md#spaceonfire_apidoc_application_serviceproviders_docblockresolverprovider)
+ - [spaceonfire\ApiDoc\Application\ServiceProviders\ElementFactoryProvider](Application/ServiceProviders/ElementFactoryProvider.md#spaceonfire_apidoc_application_serviceproviders_elementfactoryprovider)
+ - [spaceonfire\ApiDoc\Application\ServiceProviders\FallbackBetterReflectionProvider](Application/ServiceProviders/FallbackBetterReflectionProvider.md#spaceonfire_apidoc_application_serviceproviders_fallbackbetterreflectionprovider)
+ - [spaceonfire\ApiDoc\Application\ServiceProviders\LinkServiceProvider](Application/ServiceProviders/LinkServiceProvider.md#spaceonfire_apidoc_application_serviceproviders_linkserviceprovider)
+ - [spaceonfire\ApiDoc\Application\ServiceProviders\SignatureRendererProvider](Application/ServiceProviders/SignatureRendererProvider.md#spaceonfire_apidoc_application_serviceproviders_signaturerendererprovider)
+ - [spaceonfire\ApiDoc\Application\ServiceProviders\TranslatorProvider](Application/ServiceProviders/TranslatorProvider.md#spaceonfire_apidoc_application_serviceproviders_translatorprovider)
+ - [spaceonfire\ApiDoc\Application\ServiceProviders\TypeFactoryProvider](Application/ServiceProviders/TypeFactoryProvider.md#spaceonfire_apidoc_application_serviceproviders_typefactoryprovider)
+- spaceonfire\ApiDoc\Config
+ - Classes
+ - [spaceonfire\ApiDoc\Config\Config](Config/Config.md#spaceonfire_apidoc_config_config)
+- spaceonfire\ApiDoc\Config\Processor
+ - Classes
+ - [spaceonfire\ApiDoc\Config\Processor\BuilderProcessor](Config/Processor/BuilderProcessor.md#spaceonfire_apidoc_config_processor_builderprocessor)
+ - [spaceonfire\ApiDoc\Config\Processor\ComposerJsonProcessor](Config/Processor/ComposerJsonProcessor.md#spaceonfire_apidoc_config_processor_composerjsonprocessor)
+ - [spaceonfire\ApiDoc\Config\Processor\ConfigFileProcessor](Config/Processor/ConfigFileProcessor.md#spaceonfire_apidoc_config_processor_configfileprocessor)
+ - [spaceonfire\ApiDoc\Config\Processor\ConsoleInputProcessor](Config/Processor/ConsoleInputProcessor.md#spaceonfire_apidoc_config_processor_consoleinputprocessor)
+ - [spaceonfire\ApiDoc\Config\Processor\DefaultsProcessor](Config/Processor/DefaultsProcessor.md#spaceonfire_apidoc_config_processor_defaultsprocessor)
+ - Interfaces
+ - [spaceonfire\ApiDoc\Config\Processor\ProcessorInterface](Config/Processor/ProcessorInterface.md#spaceonfire_apidoc_config_processor_processorinterface)
+- spaceonfire\ApiDoc\Element
+ - Classes
+ - [spaceonfire\ApiDoc\Element\AbstractElement](Element/AbstractElement.md#spaceonfire_apidoc_element_abstractelement)
+ - [spaceonfire\ApiDoc\Element\ClassElement](Element/ClassElement.md#spaceonfire_apidoc_element_classelement)
+ - [spaceonfire\ApiDoc\Element\ConstantElement](Element/ConstantElement.md#spaceonfire_apidoc_element_constantelement)
+ - [spaceonfire\ApiDoc\Element\ConstantsAggregate](Element/ConstantsAggregate.md#spaceonfire_apidoc_element_constantsaggregate)
+ - [spaceonfire\ApiDoc\Element\FunctionElement](Element/FunctionElement.md#spaceonfire_apidoc_element_functionelement)
+ - [spaceonfire\ApiDoc\Element\FunctionsAggregate](Element/FunctionsAggregate.md#spaceonfire_apidoc_element_functionsaggregate)
+ - [spaceonfire\ApiDoc\Element\InterfaceElement](Element/InterfaceElement.md#spaceonfire_apidoc_element_interfaceelement)
+ - [spaceonfire\ApiDoc\Element\MethodElement](Element/MethodElement.md#spaceonfire_apidoc_element_methodelement)
+ - [spaceonfire\ApiDoc\Element\PropertyElement](Element/PropertyElement.md#spaceonfire_apidoc_element_propertyelement)
+ - [spaceonfire\ApiDoc\Element\TableOfContentsElement](Element/TableOfContentsElement.md#spaceonfire_apidoc_element_tableofcontentselement)
+ - [spaceonfire\ApiDoc\Element\TraitElement](Element/TraitElement.md#spaceonfire_apidoc_element_traitelement)
+ - Interfaces
+ - [spaceonfire\ApiDoc\Element\ElementInterface](Element/ElementInterface.md#spaceonfire_apidoc_element_elementinterface)
+- spaceonfire\ApiDoc\Element\DocBlock
+ - Classes
+ - [spaceonfire\ApiDoc\Element\DocBlock\DocBlock](Element/DocBlock/DocBlock.md#spaceonfire_apidoc_element_docblock_docblock)
+- spaceonfire\ApiDoc\Element\DocBlock\Factory
+ - Classes
+ - [spaceonfire\ApiDoc\Element\DocBlock\Factory\DocBlockFactory](Element/DocBlock/Factory/DocBlockFactory.md#spaceonfire_apidoc_element_docblock_factory_docblockfactory)
+ - Interfaces
+ - [spaceonfire\ApiDoc\Element\DocBlock\Factory\DocBlockFactoryInterface](Element/DocBlock/Factory/DocBlockFactoryInterface.md#spaceonfire_apidoc_element_docblock_factory_docblockfactoryinterface)
+- spaceonfire\ApiDoc\Element\DocBlock\Resolver
+ - Classes
+ - [spaceonfire\ApiDoc\Element\DocBlock\Resolver\AbstractDocBlockResolver](Element/DocBlock/Resolver/AbstractDocBlockResolver.md#spaceonfire_apidoc_element_docblock_resolver_abstractdocblockresolver)
+ - [spaceonfire\ApiDoc\Element\DocBlock\Resolver\ClassDocBlockResolver](Element/DocBlock/Resolver/ClassDocBlockResolver.md#spaceonfire_apidoc_element_docblock_resolver_classdocblockresolver)
+ - [spaceonfire\ApiDoc\Element\DocBlock\Resolver\CompositeDocBlockResolver](Element/DocBlock/Resolver/CompositeDocBlockResolver.md#spaceonfire_apidoc_element_docblock_resolver_compositedocblockresolver)
+ - [spaceonfire\ApiDoc\Element\DocBlock\Resolver\DefaultDocBlockResolver](Element/DocBlock/Resolver/DefaultDocBlockResolver.md#spaceonfire_apidoc_element_docblock_resolver_defaultdocblockresolver)
+ - [spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockMerger](Element/DocBlock/Resolver/DocBlockMerger.md#spaceonfire_apidoc_element_docblock_resolver_docblockmerger)
+ - [spaceonfire\ApiDoc\Element\DocBlock\Resolver\MemoizedDocBlockResolver](Element/DocBlock/Resolver/MemoizedDocBlockResolver.md#spaceonfire_apidoc_element_docblock_resolver_memoizeddocblockresolver)
+ - [spaceonfire\ApiDoc\Element\DocBlock\Resolver\MethodDocBlockResolver](Element/DocBlock/Resolver/MethodDocBlockResolver.md#spaceonfire_apidoc_element_docblock_resolver_methoddocblockresolver)
+ - [spaceonfire\ApiDoc\Element\DocBlock\Resolver\PropertyDocBlockResolver](Element/DocBlock/Resolver/PropertyDocBlockResolver.md#spaceonfire_apidoc_element_docblock_resolver_propertydocblockresolver)
+ - Interfaces
+ - [spaceonfire\ApiDoc\Element\DocBlock\Resolver\DocBlockResolverInterface](Element/DocBlock/Resolver/DocBlockResolverInterface.md#spaceonfire_apidoc_element_docblock_resolver_docblockresolverinterface)
+- spaceonfire\ApiDoc\Element\Example
+ - Classes
+ - [spaceonfire\ApiDoc\Element\Example\ExampleCodeSnippetResolver](Element/Example/ExampleCodeSnippetResolver.md#spaceonfire_apidoc_element_example_examplecodesnippetresolver)
+- spaceonfire\ApiDoc\Element\Factory
+ - Classes
+ - [spaceonfire\ApiDoc\Element\Factory\AbstractElementFactory](Element/Factory/AbstractElementFactory.md#spaceonfire_apidoc_element_factory_abstractelementfactory)
+ - [spaceonfire\ApiDoc\Element\Factory\ClassLikeElementFactory](Element/Factory/ClassLikeElementFactory.md#spaceonfire_apidoc_element_factory_classlikeelementfactory)
+ - [spaceonfire\ApiDoc\Element\Factory\CompositeElementFactory](Element/Factory/CompositeElementFactory.md#spaceonfire_apidoc_element_factory_compositeelementfactory)
+ - [spaceonfire\ApiDoc\Element\Factory\ConstantElementFactory](Element/Factory/ConstantElementFactory.md#spaceonfire_apidoc_element_factory_constantelementfactory)
+ - [spaceonfire\ApiDoc\Element\Factory\FunctionLikeElementFactory](Element/Factory/FunctionLikeElementFactory.md#spaceonfire_apidoc_element_factory_functionlikeelementfactory)
+ - [spaceonfire\ApiDoc\Element\Factory\MemoizedElementFactory](Element/Factory/MemoizedElementFactory.md#spaceonfire_apidoc_element_factory_memoizedelementfactory)
+ - [spaceonfire\ApiDoc\Element\Factory\PropertyElementFactory](Element/Factory/PropertyElementFactory.md#spaceonfire_apidoc_element_factory_propertyelementfactory)
+ - Interfaces
+ - [spaceonfire\ApiDoc\Element\Factory\ElementFactoryInterface](Element/Factory/ElementFactoryInterface.md#spaceonfire_apidoc_element_factory_elementfactoryinterface)
+- spaceonfire\ApiDoc\Element\Link
+ - Classes
+ - [spaceonfire\ApiDoc\Element\Link\AnchorGenerator](Element/Link/AnchorGenerator.md#spaceonfire_apidoc_element_link_anchorgenerator)
+ - [spaceonfire\ApiDoc\Element\Link\CompositeLinkResolver](Element/Link/CompositeLinkResolver.md#spaceonfire_apidoc_element_link_compositelinkresolver)
+ - [spaceonfire\ApiDoc\Element\Link\ExternalLinkResolver](Element/Link/ExternalLinkResolver.md#spaceonfire_apidoc_element_link_externallinkresolver)
+ - [spaceonfire\ApiDoc\Element\Link\FqsenLinkResolver](Element/Link/FqsenLinkResolver.md#spaceonfire_apidoc_element_link_fqsenlinkresolver)
+ - Interfaces
+ - [spaceonfire\ApiDoc\Element\Link\LinkResolverInterface](Element/Link/LinkResolverInterface.md#spaceonfire_apidoc_element_link_linkresolverinterface)
+- spaceonfire\ApiDoc\Element\Location
+ - Classes
+ - [spaceonfire\ApiDoc\Element\Location\Location](Element/Location/Location.md#spaceonfire_apidoc_element_location_location)
+ - [spaceonfire\ApiDoc\Element\Location\LocationFactory](Element/Location/LocationFactory.md#spaceonfire_apidoc_element_location_locationfactory)
+- spaceonfire\ApiDoc\Element\Signature
+ - Classes
+ - [spaceonfire\ApiDoc\Element\Signature\CompositeSignatureRenderer](Element/Signature/CompositeSignatureRenderer.md#spaceonfire_apidoc_element_signature_compositesignaturerenderer)
+ - [spaceonfire\ApiDoc\Element\Signature\ConstantSignatureRenderer](Element/Signature/ConstantSignatureRenderer.md#spaceonfire_apidoc_element_signature_constantsignaturerenderer)
+ - [spaceonfire\ApiDoc\Element\Signature\FunctionLikeElementSignatureRenderer](Element/Signature/FunctionLikeElementSignatureRenderer.md#spaceonfire_apidoc_element_signature_functionlikeelementsignaturerenderer)
+ - [spaceonfire\ApiDoc\Element\Signature\PropertySignatureRenderer](Element/Signature/PropertySignatureRenderer.md#spaceonfire_apidoc_element_signature_propertysignaturerenderer)
+ - Interfaces
+ - [spaceonfire\ApiDoc\Element\Signature\SignatureRendererInterface](Element/Signature/SignatureRendererInterface.md#spaceonfire_apidoc_element_signature_signaturerendererinterface)
+- spaceonfire\ApiDoc\Element\Type
+ - Classes
+ - [spaceonfire\ApiDoc\Element\Type\BetterReflectionInstanceOfType](Element/Type/BetterReflectionInstanceOfType.md#spaceonfire_apidoc_element_type_betterreflectioninstanceoftype)
+- spaceonfire\ApiDoc\Element\Type\Converter
+ - Classes
+ - [spaceonfire\ApiDoc\Element\Type\Converter\PhpDocTypeConverter](Element/Type/Converter/PhpDocTypeConverter.md#spaceonfire_apidoc_element_type_converter_phpdoctypeconverter)
+ - [spaceonfire\ApiDoc\Element\Type\Converter\ReflectionTypeConverter](Element/Type/Converter/ReflectionTypeConverter.md#spaceonfire_apidoc_element_type_converter_reflectiontypeconverter)
+- spaceonfire\ApiDoc\Element\Type\Factory
+ - Classes
+ - [spaceonfire\ApiDoc\Element\Type\Factory\BetterReflectionInstanceOfTypeFactory](Element/Type/Factory/BetterReflectionInstanceOfTypeFactory.md#spaceonfire_apidoc_element_type_factory_betterreflectioninstanceoftypefactory)
+ - [spaceonfire\ApiDoc\Element\Type\Factory\BetterReflectionParentFactory](Element/Type/Factory/BetterReflectionParentFactory.md#spaceonfire_apidoc_element_type_factory_betterreflectionparentfactory)
+- spaceonfire\ApiDoc\Element\Type\Resolver
+ - Classes
+ - [spaceonfire\ApiDoc\Element\Type\Resolver\AbstractTypeResolver](Element/Type/Resolver/AbstractTypeResolver.md#spaceonfire_apidoc_element_type_resolver_abstracttyperesolver)
+ - [spaceonfire\ApiDoc\Element\Type\Resolver\ArgumentTypeResolver](Element/Type/Resolver/ArgumentTypeResolver.md#spaceonfire_apidoc_element_type_resolver_argumenttyperesolver)
+ - [spaceonfire\ApiDoc\Element\Type\Resolver\CompositeTypeResolver](Element/Type/Resolver/CompositeTypeResolver.md#spaceonfire_apidoc_element_type_resolver_compositetyperesolver)
+ - [spaceonfire\ApiDoc\Element\Type\Resolver\FunctionReturnTypeResolver](Element/Type/Resolver/FunctionReturnTypeResolver.md#spaceonfire_apidoc_element_type_resolver_functionreturntyperesolver)
+ - [spaceonfire\ApiDoc\Element\Type\Resolver\MemoizedTypeResolver](Element/Type/Resolver/MemoizedTypeResolver.md#spaceonfire_apidoc_element_type_resolver_memoizedtyperesolver)
+ - [spaceonfire\ApiDoc\Element\Type\Resolver\PropertyTypeResolver](Element/Type/Resolver/PropertyTypeResolver.md#spaceonfire_apidoc_element_type_resolver_propertytyperesolver)
+ - Interfaces
+ - [spaceonfire\ApiDoc\Element\Type\Resolver\TypeResolverInterface](Element/Type/Resolver/TypeResolverInterface.md#spaceonfire_apidoc_element_type_resolver_typeresolverinterface)
+- spaceonfire\ApiDoc\Element\ValueObject
+ - Classes
+ - [spaceonfire\ApiDoc\Element\ValueObject\AbstractTypedSymbol](Element/ValueObject/AbstractTypedSymbol.md#spaceonfire_apidoc_element_valueobject_abstracttypedsymbol)
+ - [spaceonfire\ApiDoc\Element\ValueObject\ClassMembersVisibilityFilter](Element/ValueObject/ClassMembersVisibilityFilter.md#spaceonfire_apidoc_element_valueobject_classmembersvisibilityfilter)
+ - [spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet](Element/ValueObject/CodeSnippet.md#spaceonfire_apidoc_element_valueobject_codesnippet)
+ - [spaceonfire\ApiDoc\Element\ValueObject\Example](Element/ValueObject/Example.md#spaceonfire_apidoc_element_valueobject_example)
+ - [spaceonfire\ApiDoc\Element\ValueObject\ExternalLink](Element/ValueObject/ExternalLink.md#spaceonfire_apidoc_element_valueobject_externallink)
+ - [spaceonfire\ApiDoc\Element\ValueObject\Fqsen](Element/ValueObject/Fqsen.md#spaceonfire_apidoc_element_valueobject_fqsen)
+ - [spaceonfire\ApiDoc\Element\ValueObject\FqsenLink](Element/ValueObject/FqsenLink.md#spaceonfire_apidoc_element_valueobject_fqsenlink)
+ - [spaceonfire\ApiDoc\Element\ValueObject\FunctionParameter](Element/ValueObject/FunctionParameter.md#spaceonfire_apidoc_element_valueobject_functionparameter)
+ - [spaceonfire\ApiDoc\Element\ValueObject\FunctionReturn](Element/ValueObject/FunctionReturn.md#spaceonfire_apidoc_element_valueobject_functionreturn)
+ - [spaceonfire\ApiDoc\Element\ValueObject\FunctionThrows](Element/ValueObject/FunctionThrows.md#spaceonfire_apidoc_element_valueobject_functionthrows)
+ - [spaceonfire\ApiDoc\Element\ValueObject\Value](Element/ValueObject/Value.md#spaceonfire_apidoc_element_valueobject_value)
+ - [spaceonfire\ApiDoc\Element\ValueObject\Visibility](Element/ValueObject/Visibility.md#spaceonfire_apidoc_element_valueobject_visibility)
+ - [spaceonfire\ApiDoc\Element\ValueObject\VisibilityFilter](Element/ValueObject/VisibilityFilter.md#spaceonfire_apidoc_element_valueobject_visibilityfilter)
+ - Interfaces
+ - [spaceonfire\ApiDoc\Element\ValueObject\LinkInterface](Element/ValueObject/LinkInterface.md#spaceonfire_apidoc_element_valueobject_linkinterface)
+- spaceonfire\ApiDoc\Exception
+ - Classes
+ - [spaceonfire\ApiDoc\Exception\GivenReflectionNotSupported](Exception/GivenReflectionNotSupported.md#spaceonfire_apidoc_exception_givenreflectionnotsupported)
+ - [spaceonfire\ApiDoc\Exception\TypeCannotBeConverted](Exception/TypeCannotBeConverted.md#spaceonfire_apidoc_exception_typecannotbeconverted)
+- spaceonfire\ApiDoc\Generator
+ - Classes
+ - [spaceonfire\ApiDoc\Generator\ApiDocGenerator](Generator/ApiDocGenerator.md#spaceonfire_apidoc_generator_apidocgenerator)
+ - [spaceonfire\ApiDoc\Generator\File](Generator/File.md#spaceonfire_apidoc_generator_file)
+ - [spaceonfire\ApiDoc\Generator\FileNameStrategy](Generator/FileNameStrategy.md#spaceonfire_apidoc_generator_filenamestrategy)
+ - [spaceonfire\ApiDoc\Generator\LocalFilesystemPersister](Generator/LocalFilesystemPersister.md#spaceonfire_apidoc_generator_localfilesystempersister)
+ - Interfaces
+ - [spaceonfire\ApiDoc\Generator\FileNameStrategyInterface](Generator/FileNameStrategyInterface.md#spaceonfire_apidoc_generator_filenamestrategyinterface)
+ - [spaceonfire\ApiDoc\Generator\GeneratorInterface](Generator/GeneratorInterface.md#spaceonfire_apidoc_generator_generatorinterface)
+ - [spaceonfire\ApiDoc\Generator\PersisterInterface](Generator/PersisterInterface.md#spaceonfire_apidoc_generator_persisterinterface)
+- spaceonfire\ApiDoc\Project
+ - Classes
+ - [spaceonfire\ApiDoc\Project\Project](Project/Project.md#spaceonfire_apidoc_project_project)
+ - [spaceonfire\ApiDoc\Project\ProjectFactory](Project/ProjectFactory.md#spaceonfire_apidoc_project_projectfactory)
+- spaceonfire\ApiDoc\Render
+ - Classes
+ - [spaceonfire\ApiDoc\Render\StaticListTemplateNameStrategy](Render/StaticListTemplateNameStrategy.md#spaceonfire_apidoc_render_staticlisttemplatenamestrategy)
+ - [spaceonfire\ApiDoc\Render\TwigRenderer](Render/TwigRenderer.md#spaceonfire_apidoc_render_twigrenderer)
+ - Interfaces
+ - [spaceonfire\ApiDoc\Render\RendererInterface](Render/RendererInterface.md#spaceonfire_apidoc_render_rendererinterface)
+ - [spaceonfire\ApiDoc\Render\TemplateNameStrategyInterface](Render/TemplateNameStrategyInterface.md#spaceonfire_apidoc_render_templatenamestrategyinterface)
+- spaceonfire\ApiDoc\Render\Twig
+ - Classes
+ - [spaceonfire\ApiDoc\Render\Twig\DumpExtension](Render/Twig/DumpExtension.md#spaceonfire_apidoc_render_twig_dumpextension)
+ - [spaceonfire\ApiDoc\Render\Twig\ExampleRendererExtension](Render/Twig/ExampleRendererExtension.md#spaceonfire_apidoc_render_twig_examplerendererextension)
+ - [spaceonfire\ApiDoc\Render\Twig\LinkExtension](Render/Twig/LinkExtension.md#spaceonfire_apidoc_render_twig_linkextension)
+ - [spaceonfire\ApiDoc\Render\Twig\MarkdownExtension](Render/Twig/MarkdownExtension.md#spaceonfire_apidoc_render_twig_markdownextension)
+ - [spaceonfire\ApiDoc\Render\Twig\SignatureExtension](Render/Twig/SignatureExtension.md#spaceonfire_apidoc_render_twig_signatureextension)
---
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Render/RendererInterface.md b/docs/Render/RendererInterface.md
new file mode 100644
index 0000000..3cd3d79
--- /dev/null
+++ b/docs/Render/RendererInterface.md
@@ -0,0 +1,56 @@
+# Interface RendererInterface
+
+Full name: `spaceonfire\ApiDoc\Render\RendererInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ----------------------------------------------------------------- | -------- | -------------------------------- | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [supports](#spaceonfire_apidoc_render_rendererinterface_supports) | _bool_ | | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+| [render](#spaceonfire_apidoc_render_rendererinterface_render) | _string_ | Renders apiDoc for given element | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### supports()
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------- | --------- | ----------- |
+| `$element` | _spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+abstract public function supports(spaceonfire\ApiDoc\Element\ElementInterface $element): bool
+```
+
+File location: `Render/RendererInterface.php:15`
+
+
+
+### render()
+
+Renders apiDoc for given element
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------- | --------- | ----------- |
+| `$element` | _spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+| `$context` | _array|array_ | No | |
+| **Return** | _string_ | | |
+
+```php
+abstract public function render(spaceonfire\ApiDoc\Element\ElementInterface $element, array|array $context = []): string
+```
+
+File location: `Render/RendererInterface.php:23`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Render/StaticListTemplateNameStrategy.md b/docs/Render/StaticListTemplateNameStrategy.md
new file mode 100644
index 0000000..59936f3
--- /dev/null
+++ b/docs/Render/StaticListTemplateNameStrategy.md
@@ -0,0 +1,86 @@
+# Class StaticListTemplateNameStrategy
+
+Full name: `spaceonfire\ApiDoc\Render\StaticListTemplateNameStrategy`
+
+This class implements:
+
+- `spaceonfire\ApiDoc\Render\TemplateNameStrategyInterface`
+- `Psr\Container\ContainerInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------ | ------------------- | --------------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_render_staticlisttemplatenamestrategy_construct) | | StaticListTemplateNameStrategy constructor. | [📢](# "Visibility: public") |
+| [get](#spaceonfire_apidoc_render_staticlisttemplatenamestrategy_get) | _mixed|string_ | Finds an entry of the container by its identifier and returns it. | [📢](# "Visibility: public") |
+| [has](#spaceonfire_apidoc_render_staticlisttemplatenamestrategy_has) | _bool_ | Returns true if the container can return an entry for the given identifier. | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+StaticListTemplateNameStrategy constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ------------------ | --------------------------------- | --------- | ----------- |
+| `$templateMapping` | _array|array_ | No | |
+
+```php
+public function __construct(array|array $templateMapping)
+```
+
+File location: `Render/StaticListTemplateNameStrategy.php:21`
+
+
+
+### get()
+
+Finds an entry of the container by its identifier and returns it.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------- | --------- | ------------------------------------------- |
+| `$id` | _string_ | No | Identifier of the entry to look for. |
+| **Return** | _mixed|string_ | | Entry. |
+| **Throws** | _Psr\Container\NotFoundExceptionInterface_ | | No entry was found for **this** identifier. |
+| **Throws** | _Psr\Container\ContainerExceptionInterface_ | | Error while retrieving the entry. |
+
+```php
+public function get(string $id): mixed|string
+```
+
+File location: `Render/StaticListTemplateNameStrategy.php:32`
+
+
+
+### has()
+
+Returns true if the container can return an entry for the given identifier.
+
+Returns false otherwise.
+
+`has($id)` returning true does not mean that `get($id)` will not throw an exception.
+It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ------------------------------------ |
+| `$id` | _string_ | No | Identifier of the entry to look for. |
+| **Return** | _bool_ | | |
+
+```php
+public function has(string $id): bool
+```
+
+File location: `Render/StaticListTemplateNameStrategy.php:44`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Render/TemplateNameStrategyInterface.md b/docs/Render/TemplateNameStrategyInterface.md
new file mode 100644
index 0000000..a6c9512
--- /dev/null
+++ b/docs/Render/TemplateNameStrategyInterface.md
@@ -0,0 +1,66 @@
+# Interface TemplateNameStrategyInterface
+
+Full name: `spaceonfire\ApiDoc\Render\TemplateNameStrategyInterface`
+
+This interface extends: `Psr\Container\ContainerInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------- | ------- | --------------------------------------------------------------------------- | ------------------------------------------------------- |
+| _Methods_ | | | |
+| [get](#psr_container_containerinterface_get) | _mixed_ | Finds an entry of the container by its identifier and returns it. | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+| [has](#psr_container_containerinterface_has) | _bool_ | Returns true if the container can return an entry for the given identifier. | [🇦](# "Abstract element") [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### get()
+
+Finds an entry of the container by its identifier and returns it.
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------- | --------- | ------------------------------------------- |
+| `$id` | _string_ | No | Identifier of the entry to look for. |
+| **Return** | _mixed_ | | Entry. |
+| **Throws** | _Psr\Container\NotFoundExceptionInterface_ | | No entry was found for **this** identifier. |
+| **Throws** | _Psr\Container\ContainerExceptionInterface_ | | Error while retrieving the entry. |
+
+```php
+abstract public function get(string $id): mixed
+```
+
+File location: `/var/www/html/vendor/composer/../psr/container/src/ContainerInterface.php:23`
+
+
+
+### has()
+
+Returns true if the container can return an entry for the given identifier.
+
+Returns false otherwise.
+
+`has($id)` returning true does not mean that `get($id)` will not throw an exception.
+It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.
+
+- **Abstract method**: Yes
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ------------------------------------ |
+| `$id` | _string_ | No | Identifier of the entry to look for. |
+| **Return** | _bool_ | | |
+
+```php
+abstract public function has(string $id): bool
+```
+
+File location: `/var/www/html/vendor/composer/../psr/container/src/ContainerInterface.php:36`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Render/Twig/DumpExtension.md b/docs/Render/Twig/DumpExtension.md
new file mode 100644
index 0000000..dc423fd
--- /dev/null
+++ b/docs/Render/Twig/DumpExtension.md
@@ -0,0 +1,169 @@
+# Class DumpExtension
+
+Full name: `spaceonfire\ApiDoc\Render\Twig\DumpExtension`
+
+Parent class name: `Twig\Extension\AbstractExtension`
+
+This class implements: `Twig\Extension\ExtensionInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------- | ------------------ | ----------------------------------------------------------------------------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_render_twig_dumpextension_construct) | | | [📢](# "Visibility: public") |
+| [getFunctions](#spaceonfire_apidoc_render_twig_dumpextension_getfunctions) | _array_ | | [📢](# "Visibility: public") |
+| [getFilters](#spaceonfire_apidoc_render_twig_dumpextension_getfilters) | _array_ | | [📢](# "Visibility: public") |
+| [dump](#spaceonfire_apidoc_render_twig_dumpextension_dump) | _string|null_ | Implementation of `dump()` twig function using `symfony/var-dumper` compatible with `twig_var_dump()` | [📢](# "Visibility: public") |
+| [export](#spaceonfire_apidoc_render_twig_dumpextension_export) | _string_ | | [📢](# "Visibility: public") |
+| [getTokenParsers](#twig_extension_abstractextension_gettokenparsers) | | | [📢](# "Visibility: public") |
+| [getNodeVisitors](#twig_extension_abstractextension_getnodevisitors) | | | [📢](# "Visibility: public") |
+| [getTests](#twig_extension_abstractextension_gettests) | | | [📢](# "Visibility: public") |
+| [getOperators](#twig_extension_abstractextension_getoperators) | | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| --------- | ------------------------------------------------------------------ | --------- | ----------- |
+| `$dumper` | _Symfony\Component\VarDumper\Dumper\DataDumperInterface|null_ | No | |
+| `$cloner` | _Symfony\Component\VarDumper\Cloner\ClonerInterface|null_ | No | |
+
+```php
+public function __construct(Symfony\Component\VarDumper\Dumper\DataDumperInterface|null $dumper = null, Symfony\Component\VarDumper\Cloner\ClonerInterface|null $cloner = null)
+```
+
+File location: `Render/Twig/DumpExtension.php:33`
+
+
+
+### getFunctions()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------- | --------- | ----------- |
+| **Return** | _array_ | | |
+
+```php
+public function getFunctions(): array
+```
+
+File location: `Render/Twig/DumpExtension.php:49`
+
+
+
+### getFilters()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------- | --------- | ----------- |
+| **Return** | _array_ | | |
+
+```php
+public function getFilters(): array
+```
+
+File location: `Render/Twig/DumpExtension.php:61`
+
+
+
+### dump()
+
+Implementation of `dump()` twig function using `symfony/var-dumper` compatible with `twig_var_dump()`
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------------------------------- | --------- | ----------- |
+| `$env` | _Twig\Environment_ | No | |
+| `$context` | _array|array_ | No | |
+| `...$vars` | _mixed_ | No | |
+| **Return** | _string|null_ | | |
+| **Throws** | _ErrorException_ | | |
+
+```php
+public function dump(Twig\Environment $env, array|array $context, mixed ...$vars): string|null
+```
+
+**Links**:
+
+- [\spaceonfire\ApiDoc\Render\Twig\twig_var_dump](./twig_var_dump.md#spaceonfire_apidoc_render_twig_twig_var_dump)
+
+File location: `Render/Twig/DumpExtension.php:79`
+
+
+
+### export()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------------ | --------- | ----------- |
+| `$var` | _mixed_ | No | |
+| **Return** | _string_ | | |
+| **Throws** | _Symfony\Component\VarExporter\Exception\ExceptionInterface_ | | |
+
+```php
+public function export(mixed $var): string
+```
+
+File location: `Render/Twig/DumpExtension.php:109`
+
+
+
+### getTokenParsers()
+
+- **Visibility**: public
+
+```php
+public function getTokenParsers()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:16`
+
+
+
+### getNodeVisitors()
+
+- **Visibility**: public
+
+```php
+public function getNodeVisitors()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:21`
+
+
+
+### getTests()
+
+- **Visibility**: public
+
+```php
+public function getTests()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:31`
+
+
+
+### getOperators()
+
+- **Visibility**: public
+
+```php
+public function getOperators()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:41`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Render/Twig/ExampleRendererExtension.md b/docs/Render/Twig/ExampleRendererExtension.md
new file mode 100644
index 0000000..ee61f33
--- /dev/null
+++ b/docs/Render/Twig/ExampleRendererExtension.md
@@ -0,0 +1,136 @@
+# Class ExampleRendererExtension
+
+Full name: `spaceonfire\ApiDoc\Render\Twig\ExampleRendererExtension`
+
+Parent class name: `Twig\Extension\AbstractExtension`
+
+This class implements: `Twig\Extension\ExtensionInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | ------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_render_twig_examplerendererextension_construct) | | | [📢](# "Visibility: public") |
+| [getFunctions](#spaceonfire_apidoc_render_twig_examplerendererextension_getfunctions) | _array_ | | [📢](# "Visibility: public") |
+| [exampleCodeSnippet](#spaceonfire_apidoc_render_twig_examplerendererextension_examplecodesnippet) | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet|null_ | | [📢](# "Visibility: public") |
+| [getTokenParsers](#twig_extension_abstractextension_gettokenparsers) | | | [📢](# "Visibility: public") |
+| [getNodeVisitors](#twig_extension_abstractextension_getnodevisitors) | | | [📢](# "Visibility: public") |
+| [getFilters](#twig_extension_abstractextension_getfilters) | | | [📢](# "Visibility: public") |
+| [getTests](#twig_extension_abstractextension_gettests) | | | [📢](# "Visibility: public") |
+| [getOperators](#twig_extension_abstractextension_getoperators) | | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ----------------------------- | --------------------------------------------------------------- | --------- | ----------- |
+| `$exampleCodeSnippetResolver` | _spaceonfire\ApiDoc\Element\Example\ExampleCodeSnippetResolver_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\Example\ExampleCodeSnippetResolver $exampleCodeSnippetResolver)
+```
+
+File location: `Render/Twig/ExampleRendererExtension.php:20`
+
+
+
+### getFunctions()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------- | --------- | ----------- |
+| **Return** | _array_ | | |
+
+```php
+public function getFunctions(): array
+```
+
+File location: `Render/Twig/ExampleRendererExtension.php:25`
+
+
+
+### exampleCodeSnippet()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------------------------------------------------------------- | --------- | ----------- |
+| `$example` | _spaceonfire\ApiDoc\Element\ValueObject\Example_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet|null_ | | |
+
+```php
+public function exampleCodeSnippet(spaceonfire\ApiDoc\Element\ValueObject\Example $example): spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet|null
+```
+
+File location: `Render/Twig/ExampleRendererExtension.php:32`
+
+
+
+### getTokenParsers()
+
+- **Visibility**: public
+
+```php
+public function getTokenParsers()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:16`
+
+
+
+### getNodeVisitors()
+
+- **Visibility**: public
+
+```php
+public function getNodeVisitors()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:21`
+
+
+
+### getFilters()
+
+- **Visibility**: public
+
+```php
+public function getFilters()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:26`
+
+
+
+### getTests()
+
+- **Visibility**: public
+
+```php
+public function getTests()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:31`
+
+
+
+### getOperators()
+
+- **Visibility**: public
+
+```php
+public function getOperators()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:41`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Render/Twig/LinkExtension.md b/docs/Render/Twig/LinkExtension.md
new file mode 100644
index 0000000..85cd9a6
--- /dev/null
+++ b/docs/Render/Twig/LinkExtension.md
@@ -0,0 +1,155 @@
+# Class LinkExtension
+
+Full name: `spaceonfire\ApiDoc\Render\Twig\LinkExtension`
+
+Parent class name: `Twig\Extension\AbstractExtension`
+
+This class implements: `Twig\Extension\ExtensionInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------- | -------- | ------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_render_twig_linkextension_construct) | | | [📢](# "Visibility: public") |
+| [getFunctions](#spaceonfire_apidoc_render_twig_linkextension_getfunctions) | _array_ | | [📢](# "Visibility: public") |
+| [anchor](#spaceonfire_apidoc_render_twig_linkextension_anchor) | _string_ | | [📢](# "Visibility: public") |
+| [resolveLink](#spaceonfire_apidoc_render_twig_linkextension_resolvelink) | _string_ | | [📢](# "Visibility: public") |
+| [getTokenParsers](#twig_extension_abstractextension_gettokenparsers) | | | [📢](# "Visibility: public") |
+| [getNodeVisitors](#twig_extension_abstractextension_getnodevisitors) | | | [📢](# "Visibility: public") |
+| [getFilters](#twig_extension_abstractextension_getfilters) | | | [📢](# "Visibility: public") |
+| [getTests](#twig_extension_abstractextension_gettests) | | | [📢](# "Visibility: public") |
+| [getOperators](#twig_extension_abstractextension_getoperators) | | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| --------------- | ------------------------------------------------------- | --------- | ----------- |
+| `$linkResolver` | _spaceonfire\ApiDoc\Element\Link\LinkResolverInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\Link\LinkResolverInterface $linkResolver)
+```
+
+File location: `Render/Twig/LinkExtension.php:25`
+
+
+
+### getFunctions()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------- | --------- | ----------- |
+| **Return** | _array_ | | |
+
+```php
+public function getFunctions(): array
+```
+
+File location: `Render/Twig/LinkExtension.php:31`
+
+
+
+### anchor()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ---------------------------------------------- | --------- | ----------- |
+| `$fqsen` | _spaceonfire\ApiDoc\Element\ValueObject\Fqsen_ | No | |
+| **Return** | _string_ | | |
+
+```php
+public function anchor(spaceonfire\ApiDoc\Element\ValueObject\Fqsen $fqsen): string
+```
+
+File location: `Render/Twig/LinkExtension.php:39`
+
+
+
+### resolveLink()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------------------------ | --------- | ----------- |
+| `$link` | _spaceonfire\ApiDoc\Element\ValueObject\LinkInterface_ | No | |
+| `$from` | _mixed|null_ | No | |
+| **Return** | _string_ | | |
+
+```php
+public function resolveLink(spaceonfire\ApiDoc\Element\ValueObject\LinkInterface $link, mixed|null $from = null): string
+```
+
+File location: `Render/Twig/LinkExtension.php:49`
+
+
+
+### getTokenParsers()
+
+- **Visibility**: public
+
+```php
+public function getTokenParsers()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:16`
+
+
+
+### getNodeVisitors()
+
+- **Visibility**: public
+
+```php
+public function getNodeVisitors()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:21`
+
+
+
+### getFilters()
+
+- **Visibility**: public
+
+```php
+public function getFilters()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:26`
+
+
+
+### getTests()
+
+- **Visibility**: public
+
+```php
+public function getTests()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:31`
+
+
+
+### getOperators()
+
+- **Visibility**: public
+
+```php
+public function getOperators()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:41`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Render/Twig/MarkdownExtension.md b/docs/Render/Twig/MarkdownExtension.md
new file mode 100644
index 0000000..50acb16
--- /dev/null
+++ b/docs/Render/Twig/MarkdownExtension.md
@@ -0,0 +1,268 @@
+# Class MarkdownExtension
+
+Full name: `spaceonfire\ApiDoc\Render\Twig\MarkdownExtension`
+
+Parent class name: `Twig\Extension\AbstractExtension`
+
+This class implements: `Twig\Extension\ExtensionInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| -------------------------------------------------------------------------- | -------- | ------- | ---------------------------- |
+| _Methods_ | | | |
+| [getFilters](#spaceonfire_apidoc_render_twig_markdownextension_getfilters) | _array_ | | [📢](# "Visibility: public") |
+| [italic](#spaceonfire_apidoc_render_twig_markdownextension_italic) | _string_ | | [📢](# "Visibility: public") |
+| [bold](#spaceonfire_apidoc_render_twig_markdownextension_bold) | _string_ | | [📢](# "Visibility: public") |
+| [heading](#spaceonfire_apidoc_render_twig_markdownextension_heading) | _string_ | | [📢](# "Visibility: public") |
+| [link](#spaceonfire_apidoc_render_twig_markdownextension_link) | _string_ | | [📢](# "Visibility: public") |
+| [code](#spaceonfire_apidoc_render_twig_markdownextension_code) | _string_ | | [📢](# "Visibility: public") |
+| [oneLine](#spaceonfire_apidoc_render_twig_markdownextension_oneline) | _string_ | | [📢](# "Visibility: public") |
+| [pre](#spaceonfire_apidoc_render_twig_markdownextension_pre) | _string_ | | [📢](# "Visibility: public") |
+| [tableRow](#spaceonfire_apidoc_render_twig_markdownextension_tablerow) | _string_ | | [📢](# "Visibility: public") |
+| [indent](#spaceonfire_apidoc_render_twig_markdownextension_indent) | _string_ | | [📢](# "Visibility: public") |
+| [getTokenParsers](#twig_extension_abstractextension_gettokenparsers) | | | [📢](# "Visibility: public") |
+| [getNodeVisitors](#twig_extension_abstractextension_getnodevisitors) | | | [📢](# "Visibility: public") |
+| [getTests](#twig_extension_abstractextension_gettests) | | | [📢](# "Visibility: public") |
+| [getFunctions](#twig_extension_abstractextension_getfunctions) | | | [📢](# "Visibility: public") |
+| [getOperators](#twig_extension_abstractextension_getoperators) | | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### getFilters()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------- | --------- | ----------- |
+| **Return** | _array_ | | |
+
+```php
+public function getFilters(): array
+```
+
+File location: `Render/Twig/MarkdownExtension.php:12`
+
+
+
+### italic()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| `$text` | _string_ | No | |
+| **Return** | _string_ | | |
+
+```php
+public function italic(string $text): string
+```
+
+File location: `Render/Twig/MarkdownExtension.php:27`
+
+
+
+### bold()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| `$text` | _string_ | No | |
+| **Return** | _string_ | | |
+
+```php
+public function bold(string $text): string
+```
+
+File location: `Render/Twig/MarkdownExtension.php:32`
+
+
+
+### heading()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| `$text` | _string_ | No | |
+| `$level` | _int_ | No | |
+| **Return** | _string_ | | |
+
+```php
+public function heading(string $text, int $level = 1): string
+```
+
+File location: `Render/Twig/MarkdownExtension.php:37`
+
+
+
+### link()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| `$text` | _string_ | No | |
+| `$url` | _string_ | No | |
+| `$title` | _string_ | No | |
+| **Return** | _string_ | | |
+
+```php
+public function link(string $text, string $url, string $title = ''): string
+```
+
+File location: `Render/Twig/MarkdownExtension.php:42`
+
+
+
+### code()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| `$text` | _string_ | No | |
+| **Return** | _string_ | | |
+
+```php
+public function code(string $text): string
+```
+
+File location: `Render/Twig/MarkdownExtension.php:52`
+
+
+
+### oneLine()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| `$text` | _string_ | No | |
+| **Return** | _string_ | | |
+
+```php
+public function oneLine(string $text): string
+```
+
+File location: `Render/Twig/MarkdownExtension.php:57`
+
+
+
+### pre()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| `$text` | _string_ | No | |
+| `$lang` | _string_ | No | |
+| **Return** | _string_ | | |
+
+```php
+public function pre(string $text, string $lang = ''): string
+```
+
+File location: `Render/Twig/MarkdownExtension.php:62`
+
+
+
+### tableRow()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------------------------------------- | --------- | ----------- |
+| `$cells` | _string[]|mixed[]|iterable_ | No | |
+| **Return** | _string_ | | |
+
+```php
+public function tableRow(string[]|mixed[]|iterable $cells): string
+```
+
+File location: `Render/Twig/MarkdownExtension.php:75`
+
+
+
+### indent()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------- | --------- | ----------- |
+| `$text` | _string_ | No | |
+| `$size` | _int_ | No | |
+| **Return** | _string_ | | |
+
+```php
+public function indent(string $text, int $size = 4): string
+```
+
+File location: `Render/Twig/MarkdownExtension.php:93`
+
+
+
+### getTokenParsers()
+
+- **Visibility**: public
+
+```php
+public function getTokenParsers()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:16`
+
+
+
+### getNodeVisitors()
+
+- **Visibility**: public
+
+```php
+public function getNodeVisitors()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:21`
+
+
+
+### getTests()
+
+- **Visibility**: public
+
+```php
+public function getTests()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:31`
+
+
+
+### getFunctions()
+
+- **Visibility**: public
+
+```php
+public function getFunctions()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:36`
+
+
+
+### getOperators()
+
+- **Visibility**: public
+
+```php
+public function getOperators()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:41`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Render/Twig/SignatureExtension.md b/docs/Render/Twig/SignatureExtension.md
new file mode 100644
index 0000000..fa68b3d
--- /dev/null
+++ b/docs/Render/Twig/SignatureExtension.md
@@ -0,0 +1,136 @@
+# Class SignatureExtension
+
+Full name: `spaceonfire\ApiDoc\Render\Twig\SignatureExtension`
+
+Parent class name: `Twig\Extension\AbstractExtension`
+
+This class implements: `Twig\Extension\ExtensionInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------------------- | -------------------------------------------------------------- | ------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_render_twig_signatureextension_construct) | | | [📢](# "Visibility: public") |
+| [getFunctions](#spaceonfire_apidoc_render_twig_signatureextension_getfunctions) | _array_ | | [📢](# "Visibility: public") |
+| [signature](#spaceonfire_apidoc_render_twig_signatureextension_signature) | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet|null_ | | [📢](# "Visibility: public") |
+| [getTokenParsers](#twig_extension_abstractextension_gettokenparsers) | | | [📢](# "Visibility: public") |
+| [getNodeVisitors](#twig_extension_abstractextension_getnodevisitors) | | | [📢](# "Visibility: public") |
+| [getFilters](#twig_extension_abstractextension_getfilters) | | | [📢](# "Visibility: public") |
+| [getTests](#twig_extension_abstractextension_gettests) | | | [📢](# "Visibility: public") |
+| [getOperators](#twig_extension_abstractextension_getoperators) | | | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| -------------------- | ----------------------------------------------------------------- | --------- | ----------- |
+| `$signatureRenderer` | _spaceonfire\ApiDoc\Element\Signature\SignatureRendererInterface_ | No | |
+
+```php
+public function __construct(spaceonfire\ApiDoc\Element\Signature\SignatureRendererInterface $signatureRenderer)
+```
+
+File location: `Render/Twig/SignatureExtension.php:20`
+
+
+
+### getFunctions()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | ------- | --------- | ----------- |
+| **Return** | _array_ | | |
+
+```php
+public function getFunctions(): array
+```
+
+File location: `Render/Twig/SignatureExtension.php:25`
+
+
+
+### signature()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | -------------------------------------------------------------- | --------- | ----------- |
+| `$element` | _spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+| **Return** | _spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet|null_ | | |
+
+```php
+public function signature(spaceonfire\ApiDoc\Element\ElementInterface $element): spaceonfire\ApiDoc\Element\ValueObject\CodeSnippet|null
+```
+
+File location: `Render/Twig/SignatureExtension.php:32`
+
+
+
+### getTokenParsers()
+
+- **Visibility**: public
+
+```php
+public function getTokenParsers()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:16`
+
+
+
+### getNodeVisitors()
+
+- **Visibility**: public
+
+```php
+public function getNodeVisitors()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:21`
+
+
+
+### getFilters()
+
+- **Visibility**: public
+
+```php
+public function getFilters()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:26`
+
+
+
+### getTests()
+
+- **Visibility**: public
+
+```php
+public function getTests()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:31`
+
+
+
+### getOperators()
+
+- **Visibility**: public
+
+```php
+public function getOperators()
+```
+
+File location: `/var/www/html/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php:41`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/Render/TwigRenderer.md b/docs/Render/TwigRenderer.md
new file mode 100644
index 0000000..0ee7705
--- /dev/null
+++ b/docs/Render/TwigRenderer.md
@@ -0,0 +1,77 @@
+# Class TwigRenderer
+
+Full name: `spaceonfire\ApiDoc\Render\TwigRenderer`
+
+This class implements: `spaceonfire\ApiDoc\Render\RendererInterface`
+
+## Class members
+
+| Name | Type | Summary | Additional |
+| ------------------------------------------------------------------ | -------- | -------------------------------- | ---------------------------- |
+| _Methods_ | | | |
+| [\_\_construct](#spaceonfire_apidoc_render_twigrenderer_construct) | | TwigRenderer constructor. | [📢](# "Visibility: public") |
+| [supports](#spaceonfire_apidoc_render_twigrenderer_supports) | _bool_ | | [📢](# "Visibility: public") |
+| [render](#spaceonfire_apidoc_render_twigrenderer_render) | _string_ | Renders apiDoc for given element | [📢](# "Visibility: public") |
+
+## Methods
+
+
+
+### \_\_construct()
+
+TwigRenderer constructor.
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ----------------------- | --------------------------------------------------------- | --------- | ----------- |
+| `$twig` | _Twig\Environment_ | No | |
+| `$templateNameStrategy` | _spaceonfire\ApiDoc\Render\TemplateNameStrategyInterface_ | No | |
+| `$defaultContext` | _array|array_ | No | |
+
+```php
+public function __construct(Twig\Environment $twig, spaceonfire\ApiDoc\Render\TemplateNameStrategyInterface $templateNameStrategy, array|array $defaultContext = [])
+```
+
+File location: `Render/TwigRenderer.php:31`
+
+
+
+### supports()
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------- | --------- | ----------- |
+| `$element` | _spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+| **Return** | _bool_ | | |
+
+```php
+public function supports(spaceonfire\ApiDoc\Element\ElementInterface $element): bool
+```
+
+File location: `Render/TwigRenderer.php:44`
+
+
+
+### render()
+
+Renders apiDoc for given element
+
+- **Visibility**: public
+
+| Param | Type | Reference | Description |
+| ---------- | --------------------------------------------- | --------- | ----------- |
+| `$element` | _spaceonfire\ApiDoc\Element\ElementInterface_ | No | |
+| `$context` | _array|array_ | No | |
+| **Return** | _string_ | | |
+
+```php
+public function render(spaceonfire\ApiDoc\Element\ElementInterface $element, array|array $context = []): string
+```
+
+File location: `Render/TwigRenderer.php:52`
+
+---
+
+This file automatically generated by [SpaceOnFire ApiDoc](https://github.com/spaceonfire/apidoc)
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Context.md b/docs/spaceonfire/SimplePhpApiDoc/Context.md
deleted file mode 100644
index c102805..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Context.md
+++ /dev/null
@@ -1,182 +0,0 @@
-# Class Context
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Context`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $classes`|\spaceonfire\SimplePhpApiDoc\Elements\ClassElement[]
|||
-|`protected $constants`|\spaceonfire\SimplePhpApiDoc\Elements\ConstantElement[]
|||
-|`protected $filesMap`|\phpDocumentor\Reflection\Php\File[]|array
|Map full qualified name to file object where it declared||
-|`protected $finder`|\Symfony\Component\Finder\Finder
|||
-|`protected $functions`|\spaceonfire\SimplePhpApiDoc\Elements\FunctionElement[]
|||
-|`protected $interfaces`|\spaceonfire\SimplePhpApiDoc\Elements\InterfaceElement[]
|||
-|`protected $namespaces`|\spaceonfire\SimplePhpApiDoc\Elements\Collections\NamespacesCollection
|||
-|`protected $project`|\phpDocumentor\Reflection\Php\Project|\phpDocumentor\Reflection\Project
|||
-|`protected $projectName`|string
|||
-|`protected $traits`|\spaceonfire\SimplePhpApiDoc\Elements\TraitElement[]
|||
-
-## Methods
-
-### __construct()
-
-Context constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$projectName`|*string*||
-|`$finder`|*\Symfony\Component\Finder\Finder*||
-
-```php
-public function Context::__construct(string $projectName, \Symfony\Component\Finder\Finder $finder): mixed
-```
-
-File location: `src/Context.php:73`
-
-### elementFactory()
-
-Decorate phpDocumentor elements with custom element classes
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Element|mixed*|Element to decorate|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\ElementInterface|mixed*|Decorated element or source element if there no mappings for this type|
-
-```php
-public function Context::elementFactory(mixed $element): mixed
-```
-
-File location: `src/Context.php:111`
-
-### getClasses()
-
-Returns a list of class descriptors contained in project files.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\ClassElement[]*||
-
-```php
-public function Context::getClasses(): array
-```
-
-File location: `src/Context.php:185`
-
-### getConstants()
-
-Returns a list of constant descriptors contained in project files.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\ConstantElement[]*||
-
-```php
-public function Context::getConstants(): array
-```
-
-File location: `src/Context.php:224`
-
-### getElement()
-
-Get element object by name
-
-|Param|Type|Description|
-|---|---|---|
-|`$fqsen`|*string*|Fully Qualified Structural Element Name|
-|**Return**|*mixed|null*||
-
-```php
-public function Context::getElement(string $fqsen): mixed
-```
-
-File location: `src/Context.php:261`
-
-### getFile()
-
-Get file by element name
-
-|Param|Type|Description|
-|---|---|---|
-|`$fqsen`|*string*|Fully Qualified Structural Element Name|
-|**Return**|*\phpDocumentor\Reflection\Php\File|null*||
-
-```php
-public function Context::getFile(string $fqsen): ?\spaceonfire\SimplePhpApiDoc\phpDocumentor\Reflection\Php\File
-```
-
-File location: `src/Context.php:251`
-
-### getFunctions()
-
-Returns a list of function descriptors contained in project files.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\FunctionElement[]*||
-
-```php
-public function Context::getFunctions(): array
-```
-
-File location: `src/Context.php:237`
-
-### getInterfaces()
-
-Returns a list of interface descriptors contained in project files.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\InterfaceElement[]*||
-
-```php
-public function Context::getInterfaces(): array
-```
-
-File location: `src/Context.php:198`
-
-### getNamespaces()
-
-Returns all namespaces with their sub-elements.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\Collections\NamespacesCollection*||
-
-```php
-public function Context::getNamespaces(): \spaceonfire\SimplePhpApiDoc\spaceonfire\SimplePhpApiDoc\Elements\Collections\NamespacesCollection
-```
-
-File location: `src/Context.php:149`
-
-### getProject()
-
-Getter for `project` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Php\Project|\phpDocumentor\Reflection\Project*||
-
-```php
-public function Context::getProject(): \spaceonfire\SimplePhpApiDoc\phpDocumentor\Reflection\Project
-```
-
-File location: `src/Context.php:101`
-
-### getTraits()
-
-Returns a list of trait descriptors contained in project files.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\TraitElement[]*||
-
-```php
-public function Context::getTraits(): array
-```
-
-File location: `src/Context.php:211`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/ArgumentElement.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/ArgumentElement.md
deleted file mode 100644
index 81bc31a..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/ArgumentElement.md
+++ /dev/null
@@ -1,134 +0,0 @@
-# Class ArgumentElement
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\ArgumentElement`
-- Parent class: `\spaceonfire\SimplePhpApiDoc\Elements\BaseElement`
-- This class implements: `\spaceonfire\SimplePhpApiDoc\Elements\ElementInterface`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $element`|\phpDocumentor\Reflection\Php\Argument
|||
-
-## Methods
-
-### __toString()
-
-```php
-public function ArgumentElement::__toString(): mixed
-```
-
-File location: `src/Elements/ArgumentElement.php:89`
-
-### getContext()
-
-Getter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseElement::getContext(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Elements/BaseElement.php:32`
-
-### getDefault()
-
-```php
-public function ArgumentElement::getDefault(): ?string
-```
-
-File location: `src/Elements/ArgumentElement.php:50`
-
-### getElement()
-
-Getter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Php\Argument*||
-
-```php
-public function ArgumentElement::getElement(): mixed
-```
-
-File location: `src/Elements/ArgumentElement.php:21`
-
-### getName()
-
-Returns the name of this argument.
-
-```php
-public function ArgumentElement::getName(): string
-```
-
-File location: `src/Elements/ArgumentElement.php:40`
-
-### getSignature()
-
-```php
-public function ArgumentElement::getSignature(): string
-```
-
-File location: `src/Elements/ArgumentElement.php:65`
-
-### getType()
-
-```php
-public function ArgumentElement::getType(): ?\spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Type
-```
-
-File location: `src/Elements/ArgumentElement.php:45`
-
-### isByReference()
-
-```php
-public function ArgumentElement::isByReference(): bool
-```
-
-File location: `src/Elements/ArgumentElement.php:55`
-
-### isVariadic()
-
-```php
-public function ArgumentElement::isVariadic(): bool
-```
-
-File location: `src/Elements/ArgumentElement.php:60`
-
-### setContext()
-
-Setter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseElement::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/BaseElement.php:42`
-
-### setElement()
-
-Setter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Argument*||
-|**Return**|*static*||
-
-```php
-public function ArgumentElement::setElement(mixed $element): mixed
-```
-
-File location: `src/Elements/ArgumentElement.php:31`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/BaseElement.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/BaseElement.md
deleted file mode 100644
index bb5612c..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/BaseElement.md
+++ /dev/null
@@ -1,83 +0,0 @@
-# Class BaseElement
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\BaseElement`
-- This class implements: `\spaceonfire\SimplePhpApiDoc\Elements\ElementInterface`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $element`|\phpDocumentor\Reflection\Element
|||
-
-## Methods
-
-### __construct()
-
-```php
-public function BaseElement::__construct(mixed $element, \spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/BaseElement.php:21`
-
-### getContext()
-
-Getter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseElement::getContext(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Elements/BaseElement.php:32`
-
-### getElement()
-
-Getter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Element*||
-
-```php
-public function BaseElement::getElement(): mixed
-```
-
-File location: `src/Elements/BaseElement.php:52`
-
-### setContext()
-
-Setter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseElement::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/BaseElement.php:42`
-
-### setElement()
-
-Setter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Element*||
-|**Return**|*static*||
-
-```php
-public function BaseElement::setElement(mixed $element): mixed
-```
-
-File location: `src/Elements/BaseElement.php:62`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/ClassElement.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/ClassElement.md
deleted file mode 100644
index 340d046..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/ClassElement.md
+++ /dev/null
@@ -1,263 +0,0 @@
-# Class ClassElement
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\ClassElement`
-- Parent class: `\spaceonfire\SimplePhpApiDoc\Elements\BaseElement`
-- This class implements:
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementInterface`
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementDecoratorInterface`
- - `\spaceonfire\SimplePhpApiDoc\Elements\MethodOwnerInterface`
- - `\spaceonfire\SimplePhpApiDoc\Elements\PropertyOwnerInterface`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $constants`|\spaceonfire\SimplePhpApiDoc\Elements\ConstantElement[]
|||
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $docBlock`|\phpDocumentor\Reflection\DocBlock|null
|||
-|`protected $element`|\phpDocumentor\Reflection\Php\Class_
|||
-|`protected $methods`|\spaceonfire\SimplePhpApiDoc\Elements\Collections\MethodsCollection
|||
-|`protected $properties`|\spaceonfire\SimplePhpApiDoc\Elements\Collections\PropertiesCollection
|||
-|`protected $traits`|\spaceonfire\SimplePhpApiDoc\Elements\Collections\TraitsCollection
|||
-
-## Methods
-
-### __construct()
-
-ClassElement constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Class_*||
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function ClassElement::__construct(\phpDocumentor\Reflection\Php\Class_ $element, \spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/ClassElement.php:52`
-
-### getConstants()
-
-Returns the constants of this class.
-
-|Param|Type|Description|
-|---|---|---|
-|`$includeParent`|*bool*||
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\ConstantElement[]*||
-
-```php
-public function ClassElement::getConstants(bool $includeParent = true): array
-```
-
-File location: `src/Elements/ClassElement.php:130`
-
-### getContext()
-
-Getter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseElement::getContext(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Elements/BaseElement.php:32`
-
-### getDocBlock()
-
-```php
-public function ClassElement::getDocBlock(): ?\spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\DocBlock
-```
-
-File location: `src/Elements/ClassElement.php:239`
-
-### getElement()
-
-Getter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Php\Class_*||
-
-```php
-public function ClassElement::getElement(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Php\Class_
-```
-
-File location: `src/Elements/ClassElement.php:61`
-
-### getFqsen()
-
-```php
-public function ClassElement::getFqsen(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Fqsen
-```
-
-File location: `src/Elements/ClassElement.php:229`
-
-### getInterfaces()
-
-Returns the interfaces this class is implementing.
-
-|Param|Type|Description|
-|---|---|---|
-|`$includeParent`|*bool*||
-|**Return**|*\phpDocumentor\Reflection\Fqsen[]*||
-
-```php
-public function ClassElement::getInterfaces(bool $includeParent = true): array
-```
-
-File location: `src/Elements/ClassElement.php:114`
-
-### getLocation()
-
-```php
-public function ClassElement::getLocation(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Location
-```
-
-File location: `src/Elements/ClassElement.php:252`
-
-### getMethods()
-
-Returns collection of methods
-
-|Param|Type|Description|
-|---|---|---|
-|`$includeParent`|*bool*||
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\Collections\MethodsCollection*||
-
-```php
-public function ClassElement::getMethods(bool $includeParent = true): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Elements\Collections\MethodsCollection
-```
-
-File location: `src/Elements/ClassElement.php:151`
-
-### getName()
-
-```php
-public function ClassElement::getName(): string
-```
-
-File location: `src/Elements/ClassElement.php:234`
-
-### getParent()
-
-```php
-public function ClassElement::getParent(): ?\spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Elements\ClassElement
-```
-
-File location: `src/Elements/ClassElement.php:95`
-
-### getParentFqsen()
-
-Returns the superclass this class is extending if available.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Fqsen|null*||
-
-```php
-public function ClassElement::getParentFqsen(): ?\spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Fqsen
-```
-
-File location: `src/Elements/ClassElement.php:104`
-
-### getProperties()
-
-Returns collection of properties
-
-|Param|Type|Description|
-|---|---|---|
-|`$includeParent`|*bool*||
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\Collections\PropertiesCollection*||
-
-```php
-public function ClassElement::getProperties(bool $includeParent = true): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Elements\Collections\PropertiesCollection
-```
-
-File location: `src/Elements/ClassElement.php:185`
-
-### getUsedTraits()
-
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\Collections\TraitsCollection*||
-
-```php
-public function ClassElement::getUsedTraits(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Elements\Collections\TraitsCollection
-```
-
-File location: `src/Elements/ClassElement.php:213`
-
-### getUsedTraitsFqsen()
-
-```php
-public function ClassElement::getUsedTraitsFqsen(): array
-```
-
-File location: `src/Elements/ClassElement.php:224`
-
-### isAbstract()
-
-Returns true when this class is abstract. Otherwise returns false.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*bool*||
-
-```php
-public function ClassElement::isAbstract(): bool
-```
-
-File location: `src/Elements/ClassElement.php:90`
-
-### isFinal()
-
-Returns true when this class is final. Otherwise returns false.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*bool*||
-
-```php
-public function ClassElement::isFinal(): bool
-```
-
-File location: `src/Elements/ClassElement.php:81`
-
-### setContext()
-
-Setter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseElement::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/BaseElement.php:42`
-
-### setElement()
-
-Setter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Class_*||
-|**Return**|*static*||
-
-```php
-public function ClassElement::setElement(mixed $element): mixed
-```
-
-File location: `src/Elements/ClassElement.php:71`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/FilterableByVisibilityCollectionInterface.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/FilterableByVisibilityCollectionInterface.md
deleted file mode 100644
index db10d23..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/FilterableByVisibilityCollectionInterface.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# Interface FilterableByVisibilityCollectionInterface
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\Collections\FilterableByVisibilityCollectionInterface`
-- This interface extends: `\spaceonfire\Collection\CollectionInterface`
-
-## Constants
-
-|Constant|Value|Description|
-|---|---|---|
-|`VISIBILITY_PUBLIC`|`0b1`||
-|`VISIBILITY_PROTECTED`|`0b10`||
-|`VISIBILITY_PRIVATE`|`0b100`||
-
-## Methods
-
-### filterByVisibility()
-
-Filter elements by their visibility
-
-|Param|Type|Description|
-|---|---|---|
-|`$visibility`|*int*|Visibility bitmask|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\Collections\FilterableByVisibilityCollectionInterface*||
-
-```php
-public function FilterableByVisibilityCollectionInterface::filterByVisibility(int $visibility): \spaceonfire\SimplePhpApiDoc\Elements\Collections\spaceonfire\SimplePhpApiDoc\Elements\Collections\FilterableByVisibilityCollectionInterface
-```
-
-File location: `src/Elements/Collections/FilterableByVisibilityCollectionInterface.php:20`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/FilterableByVisibilityCollectionTrait.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/FilterableByVisibilityCollectionTrait.md
deleted file mode 100644
index b9383c0..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/FilterableByVisibilityCollectionTrait.md
+++ /dev/null
@@ -1,19 +0,0 @@
-# Class FilterableByVisibilityCollectionTrait
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\Collections\FilterableByVisibilityCollectionTrait`
-
-## Methods
-
-### filterByVisibility()
-
-{@inheritDoc}
-
-```php
-public function FilterableByVisibilityCollectionTrait::filterByVisibility(int $visibility): \spaceonfire\SimplePhpApiDoc\Elements\Collections\spaceonfire\SimplePhpApiDoc\Elements\Collections\FilterableByVisibilityCollectionInterface
-```
-
-File location: `src/Elements/Collections/FilterableByVisibilityCollectionTrait.php:12`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/MethodsCollection.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/MethodsCollection.md
deleted file mode 100644
index 909410d..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/MethodsCollection.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# Class MethodsCollection
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\Collections\MethodsCollection`
-- This class implements: `\spaceonfire\SimplePhpApiDoc\Elements\Collections\FilterableByVisibilityCollectionInterface`
-- This class uses: `\spaceonfire\SimplePhpApiDoc\Elements\Collections\FilterableByVisibilityCollectionTrait`
-
-## Methods
-
-### __construct()
-
-MethodsCollection constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$items`|*array*||
-
-```php
-public function MethodsCollection::__construct(mixed $items = []): mixed
-```
-
-File location: `src/Elements/Collections/MethodsCollection.php:18`
-
-### filterByVisibility()
-
-Filter elements by their visibility
-
-|Param|Type|Description|
-|---|---|---|
-|`$visibility`|*int*|Visibility bitmask|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\Collections\FilterableByVisibilityCollectionInterface*||
-
-```php
-public function FilterableByVisibilityCollectionTrait::filterByVisibility(int $visibility): \spaceonfire\SimplePhpApiDoc\Elements\Collections\spaceonfire\SimplePhpApiDoc\Elements\Collections\FilterableByVisibilityCollectionInterface
-```
-
-File location: `src/Elements/Collections/MethodsCollection.php:12`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/NamespacesCollection.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/NamespacesCollection.md
deleted file mode 100644
index 496b57d..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/NamespacesCollection.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# Class NamespacesCollection
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\Collections\NamespacesCollection`
-
-## Methods
-
-### __construct()
-
-NamespacesCollection constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$items`|*array*||
-
-```php
-public function NamespacesCollection::__construct(mixed $items = []): mixed
-```
-
-File location: `src/Elements/Collections/NamespacesCollection.php:16`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/PropertiesCollection.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/PropertiesCollection.md
deleted file mode 100644
index 4c8f25e..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/PropertiesCollection.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# Class PropertiesCollection
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\Collections\PropertiesCollection`
-- This class implements: `\spaceonfire\SimplePhpApiDoc\Elements\Collections\FilterableByVisibilityCollectionInterface`
-- This class uses: `\spaceonfire\SimplePhpApiDoc\Elements\Collections\FilterableByVisibilityCollectionTrait`
-
-## Methods
-
-### __construct()
-
-PropertiesCollection constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$items`|*array*||
-
-```php
-public function PropertiesCollection::__construct(mixed $items = []): mixed
-```
-
-File location: `src/Elements/Collections/PropertiesCollection.php:18`
-
-### filterByVisibility()
-
-Filter elements by their visibility
-
-|Param|Type|Description|
-|---|---|---|
-|`$visibility`|*int*|Visibility bitmask|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\Collections\FilterableByVisibilityCollectionInterface*||
-
-```php
-public function FilterableByVisibilityCollectionTrait::filterByVisibility(int $visibility): \spaceonfire\SimplePhpApiDoc\Elements\Collections\spaceonfire\SimplePhpApiDoc\Elements\Collections\FilterableByVisibilityCollectionInterface
-```
-
-File location: `src/Elements/Collections/PropertiesCollection.php:12`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/TraitsCollection.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/TraitsCollection.md
deleted file mode 100644
index e9a8ad1..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/TraitsCollection.md
+++ /dev/null
@@ -1,51 +0,0 @@
-# Class TraitsCollection
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\Collections\TraitsCollection`
-
-## Methods
-
-### __construct()
-
-TraitsCollection constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$items`|*array*||
-
-```php
-public function TraitsCollection::__construct(mixed $items = []): mixed
-```
-
-File location: `src/Elements/Collections/TraitsCollection.php:16`
-
-### getMethods()
-
-Returns collection of methods
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\Collections\MethodsCollection*||
-
-```php
-public function TraitsCollection::getMethods(): \spaceonfire\SimplePhpApiDoc\Elements\Collections\spaceonfire\SimplePhpApiDoc\Elements\Collections\MethodsCollection
-```
-
-File location: `src/Elements/Collections/TraitsCollection.php:25`
-
-### getProperties()
-
-Returns collection of properties
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\Collections\PropertiesCollection*||
-
-```php
-public function TraitsCollection::getProperties(): \spaceonfire\SimplePhpApiDoc\Elements\Collections\spaceonfire\SimplePhpApiDoc\Elements\Collections\PropertiesCollection
-```
-
-File location: `src/Elements/Collections/TraitsCollection.php:37`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/ConstantElement.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/ConstantElement.md
deleted file mode 100644
index f421750..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/ConstantElement.md
+++ /dev/null
@@ -1,141 +0,0 @@
-# Class ConstantElement
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\ConstantElement`
-- Parent class: `\spaceonfire\SimplePhpApiDoc\Elements\BaseElement`
-- This class implements:
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementInterface`
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementDecoratorInterface`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $element`|\phpDocumentor\Reflection\Php\Constant
|||
-
-## Methods
-
-### __construct()
-
-ClassElement constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Constant*||
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function ConstantElement::__construct(\phpDocumentor\Reflection\Php\Constant $element, \spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/ConstantElement.php:25`
-
-### getContext()
-
-Getter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseElement::getContext(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Elements/BaseElement.php:32`
-
-### getDocBlock()
-
-Returns DocBlock of this constant if available.
-
-```php
-public function ConstantElement::getDocBlock(): ?\spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\DocBlock
-```
-
-File location: `src/Elements/ConstantElement.php:77`
-
-### getElement()
-
-Getter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Php\Constant*||
-
-```php
-public function ConstantElement::getElement(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Php\Constant
-```
-
-File location: `src/Elements/ConstantElement.php:34`
-
-### getFqsen()
-
-Returns the Fqsen of the element.
-
-```php
-public function ConstantElement::getFqsen(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Fqsen
-```
-
-File location: `src/Elements/ConstantElement.php:61`
-
-### getLocation()
-
-```php
-public function ConstantElement::getLocation(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Location
-```
-
-File location: `src/Elements/ConstantElement.php:82`
-
-### getName()
-
-Returns the name of the element.
-
-```php
-public function ConstantElement::getName(): string
-```
-
-File location: `src/Elements/ConstantElement.php:69`
-
-### getValue()
-
-Returns the value of this constant.
-
-```php
-public function ConstantElement::getValue(): ?string
-```
-
-File location: `src/Elements/ConstantElement.php:53`
-
-### setContext()
-
-Setter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseElement::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/BaseElement.php:42`
-
-### setElement()
-
-Setter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Constant*||
-|**Return**|*static*||
-
-```php
-public function ConstantElement::setElement(mixed $element): mixed
-```
-
-File location: `src/Elements/ConstantElement.php:44`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/BaseDocBlockResolver.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/BaseDocBlockResolver.md
deleted file mode 100644
index 3a2c500..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/BaseDocBlockResolver.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# Class BaseDocBlockResolver
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\BaseDocBlockResolver`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $docBlock`|\phpDocumentor\Reflection\DocBlock
|||
-|`protected static $inheritedTags`|||[]|
-
-## Methods
-
-### getContext()
-
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseDocBlockResolver::getContext(): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:29`
-
-### getDocBlock()
-
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\DocBlock*||
-
-```php
-public function BaseDocBlockResolver::getDocBlock(): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\phpDocumentor\Reflection\DocBlock
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:47`
-
-### resolve()
-
-```php
-abstract public function BaseDocBlockResolver::resolve(): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\phpDocumentor\Reflection\DocBlock
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:62`
-
-### setContext()
-
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseDocBlockResolver::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:38`
-
-### setDocBlock()
-
-
-|Param|Type|Description|
-|---|---|---|
-|`$docBlock`|*\phpDocumentor\Reflection\DocBlock*||
-|**Return**|*static*||
-
-```php
-public function BaseDocBlockResolver::setDocBlock(\phpDocumentor\Reflection\DocBlock $docBlock): mixed
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:56`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/ClassDocBlockResolver.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/ClassDocBlockResolver.md
deleted file mode 100644
index b40494d..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/ClassDocBlockResolver.md
+++ /dev/null
@@ -1,125 +0,0 @@
-# Class ClassDocBlockResolver
-
-Class ClassDocBlockResolver
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\ClassDocBlockResolver`
-- Parent class: `\spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\BaseDocBlockResolver`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $class`|\spaceonfire\SimplePhpApiDoc\Elements\ClassElement
|||
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $docBlock`|\phpDocumentor\Reflection\DocBlock
|||
-|`protected static $inheritedTags`|||[author, copyright, package, subpackage, version]|
-
-## Methods
-
-### __construct()
-
-ClassDocBlockResolver constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$docBlock`|*\phpDocumentor\Reflection\DocBlock*||
-|`$class`|*\spaceonfire\SimplePhpApiDoc\Elements\ClassElement*||
-
-```php
-public function ClassDocBlockResolver::__construct(\phpDocumentor\Reflection\DocBlock $docBlock, \spaceonfire\SimplePhpApiDoc\Elements\ClassElement $class): mixed
-```
-
-File location: `src/Elements/DocBlockResolver/ClassDocBlockResolver.php:35`
-
-### getClass()
-
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\ClassElement*||
-
-```php
-public function ClassDocBlockResolver::getClass(): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\spaceonfire\SimplePhpApiDoc\Elements\ClassElement
-```
-
-File location: `src/Elements/DocBlockResolver/ClassDocBlockResolver.php:45`
-
-### getContext()
-
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseDocBlockResolver::getContext(): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:29`
-
-### getDocBlock()
-
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\DocBlock*||
-
-```php
-public function BaseDocBlockResolver::getDocBlock(): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\phpDocumentor\Reflection\DocBlock
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:47`
-
-### resolve()
-
-```php
-public function ClassDocBlockResolver::resolve(): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\phpDocumentor\Reflection\DocBlock
-```
-
-File location: `src/Elements/DocBlockResolver/ClassDocBlockResolver.php:60`
-
-### setClass()
-
-
-|Param|Type|Description|
-|---|---|---|
-|`$class`|*\spaceonfire\SimplePhpApiDoc\Elements\ClassElement*||
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\ClassDocBlockResolver*||
-
-```php
-public function ClassDocBlockResolver::setClass(\spaceonfire\SimplePhpApiDoc\Elements\ClassElement $class): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\ClassDocBlockResolver
-```
-
-File location: `src/Elements/DocBlockResolver/ClassDocBlockResolver.php:54`
-
-### setContext()
-
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseDocBlockResolver::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:38`
-
-### setDocBlock()
-
-
-|Param|Type|Description|
-|---|---|---|
-|`$docBlock`|*\phpDocumentor\Reflection\DocBlock*||
-|**Return**|*static*||
-
-```php
-public function BaseDocBlockResolver::setDocBlock(\phpDocumentor\Reflection\DocBlock $docBlock): mixed
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:56`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/MethodDocBlockResolver.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/MethodDocBlockResolver.md
deleted file mode 100644
index 5632a03..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/MethodDocBlockResolver.md
+++ /dev/null
@@ -1,125 +0,0 @@
-# Class MethodDocBlockResolver
-
-Class MethodDocBlockResolver
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\MethodDocBlockResolver`
-- Parent class: `\spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\BaseDocBlockResolver`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $docBlock`|\phpDocumentor\Reflection\DocBlock
|||
-|`protected static $inheritedTags`|||[author, copyright, version, param, return, throws]|
-|`protected $method`|\spaceonfire\SimplePhpApiDoc\Elements\MethodElement
|||
-
-## Methods
-
-### __construct()
-
-MethodsDocBlockResolver constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$docBlock`|*\phpDocumentor\Reflection\DocBlock*||
-|`$method`|*\spaceonfire\SimplePhpApiDoc\Elements\MethodElement*||
-
-```php
-public function MethodDocBlockResolver::__construct(\phpDocumentor\Reflection\DocBlock $docBlock, \spaceonfire\SimplePhpApiDoc\Elements\MethodElement $method): mixed
-```
-
-File location: `src/Elements/DocBlockResolver/MethodDocBlockResolver.php:38`
-
-### getContext()
-
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseDocBlockResolver::getContext(): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:29`
-
-### getDocBlock()
-
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\DocBlock*||
-
-```php
-public function BaseDocBlockResolver::getDocBlock(): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\phpDocumentor\Reflection\DocBlock
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:47`
-
-### getMethod()
-
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\MethodElement*||
-
-```php
-public function MethodDocBlockResolver::getMethod(): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\spaceonfire\SimplePhpApiDoc\Elements\MethodElement
-```
-
-File location: `src/Elements/DocBlockResolver/MethodDocBlockResolver.php:48`
-
-### resolve()
-
-```php
-public function MethodDocBlockResolver::resolve(): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\phpDocumentor\Reflection\DocBlock
-```
-
-File location: `src/Elements/DocBlockResolver/MethodDocBlockResolver.php:63`
-
-### setContext()
-
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseDocBlockResolver::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:38`
-
-### setDocBlock()
-
-
-|Param|Type|Description|
-|---|---|---|
-|`$docBlock`|*\phpDocumentor\Reflection\DocBlock*||
-|**Return**|*static*||
-
-```php
-public function BaseDocBlockResolver::setDocBlock(\phpDocumentor\Reflection\DocBlock $docBlock): mixed
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:56`
-
-### setMethod()
-
-
-|Param|Type|Description|
-|---|---|---|
-|`$method`|*\spaceonfire\SimplePhpApiDoc\Elements\MethodElement*||
-|**Return**|*static*||
-
-```php
-public function MethodDocBlockResolver::setMethod(\spaceonfire\SimplePhpApiDoc\Elements\MethodElement $method): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\MethodDocBlockResolver
-```
-
-File location: `src/Elements/DocBlockResolver/MethodDocBlockResolver.php:57`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/PropertyDocBlockResolver.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/PropertyDocBlockResolver.md
deleted file mode 100644
index 89a47e4..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/PropertyDocBlockResolver.md
+++ /dev/null
@@ -1,125 +0,0 @@
-# Class PropertyDocBlockResolver
-
-Class PropertyDocBlockResolver
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\PropertyDocBlockResolver`
-- Parent class: `\spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\BaseDocBlockResolver`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $docBlock`|\phpDocumentor\Reflection\DocBlock
|||
-|`protected static $inheritedTags`|||[author, copyright, version, var]|
-|`protected $property`|\spaceonfire\SimplePhpApiDoc\Elements\PropertyElement
|||
-
-## Methods
-
-### __construct()
-
-PropertyDocBlockResolver constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$docBlock`|*\phpDocumentor\Reflection\DocBlock*||
-|`$property`|*\spaceonfire\SimplePhpApiDoc\Elements\PropertyElement*||
-
-```php
-public function PropertyDocBlockResolver::__construct(\phpDocumentor\Reflection\DocBlock $docBlock, \spaceonfire\SimplePhpApiDoc\Elements\PropertyElement $property): mixed
-```
-
-File location: `src/Elements/DocBlockResolver/PropertyDocBlockResolver.php:35`
-
-### getContext()
-
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseDocBlockResolver::getContext(): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:29`
-
-### getDocBlock()
-
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\DocBlock*||
-
-```php
-public function BaseDocBlockResolver::getDocBlock(): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\phpDocumentor\Reflection\DocBlock
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:47`
-
-### getProperty()
-
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\PropertyElement*||
-
-```php
-public function PropertyDocBlockResolver::getProperty(): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\spaceonfire\SimplePhpApiDoc\Elements\PropertyElement
-```
-
-File location: `src/Elements/DocBlockResolver/PropertyDocBlockResolver.php:45`
-
-### resolve()
-
-```php
-public function PropertyDocBlockResolver::resolve(): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\phpDocumentor\Reflection\DocBlock
-```
-
-File location: `src/Elements/DocBlockResolver/PropertyDocBlockResolver.php:60`
-
-### setContext()
-
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseDocBlockResolver::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:38`
-
-### setDocBlock()
-
-
-|Param|Type|Description|
-|---|---|---|
-|`$docBlock`|*\phpDocumentor\Reflection\DocBlock*||
-|**Return**|*static*||
-
-```php
-public function BaseDocBlockResolver::setDocBlock(\phpDocumentor\Reflection\DocBlock $docBlock): mixed
-```
-
-File location: `src/Elements/DocBlockResolver/BaseDocBlockResolver.php:56`
-
-### setProperty()
-
-
-|Param|Type|Description|
-|---|---|---|
-|`$property`|*\spaceonfire\SimplePhpApiDoc\Elements\PropertyElement*||
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\PropertyDocBlockResolver*||
-
-```php
-public function PropertyDocBlockResolver::setProperty(\spaceonfire\SimplePhpApiDoc\Elements\PropertyElement $property): \spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\spaceonfire\SimplePhpApiDoc\Elements\DocBlockResolver\PropertyDocBlockResolver
-```
-
-File location: `src/Elements/DocBlockResolver/PropertyDocBlockResolver.php:54`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/ElementDecoratorInterface.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/ElementDecoratorInterface.md
deleted file mode 100644
index 1810be2..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/ElementDecoratorInterface.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Interface ElementDecoratorInterface
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\ElementDecoratorInterface`
-- This interface extends: `\spaceonfire\SimplePhpApiDoc\Elements\ElementInterface`
-
-## Methods
-
-### getFqsen()
-
-Returns the Fqsen of the element.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Fqsen*||
-
-```php
-public function ElementDecoratorInterface::getFqsen(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Fqsen
-```
-
-File location: `src/Elements/ElementDecoratorInterface.php:15`
-
-### getName()
-
-Returns the name of the element.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*string*||
-
-```php
-public function ElementDecoratorInterface::getName(): string
-```
-
-File location: `src/Elements/ElementDecoratorInterface.php:21`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/ElementInterface.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/ElementInterface.md
deleted file mode 100644
index 9ca3b1a..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/ElementInterface.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# Interface ElementInterface
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\ElementInterface`
-
-## Methods
-
-### getContext()
-
-Getter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function ElementInterface::getContext(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Elements/ElementInterface.php:16`
-
-### getElement()
-
-Getter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Element*||
-
-```php
-public function ElementInterface::getElement(): mixed
-```
-
-File location: `src/Elements/ElementInterface.php:29`
-
-### setContext()
-
-Setter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function ElementInterface::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/ElementInterface.php:23`
-
-### setElement()
-
-Setter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Element*||
-|**Return**|*static*||
-
-```php
-public function ElementInterface::setElement(mixed $element): mixed
-```
-
-File location: `src/Elements/ElementInterface.php:36`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/ElementVisibilityInterface.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/ElementVisibilityInterface.md
deleted file mode 100644
index 03cdfe0..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/ElementVisibilityInterface.md
+++ /dev/null
@@ -1,23 +0,0 @@
-# Interface ElementVisibilityInterface
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\ElementVisibilityInterface`
-
-## Methods
-
-### getVisibility()
-
-Returns the Visibility of this method.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Php\Visibility|null*||
-
-```php
-public function ElementVisibilityInterface::getVisibility(): ?\spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Php\Visibility
-```
-
-File location: `src/Elements/ElementVisibilityInterface.php:15`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/FunctionElement.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/FunctionElement.md
deleted file mode 100644
index 9f13a62..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/FunctionElement.md
+++ /dev/null
@@ -1,154 +0,0 @@
-# Class FunctionElement
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\FunctionElement`
-- Parent class: `\spaceonfire\SimplePhpApiDoc\Elements\BaseElement`
-- This class implements:
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementInterface`
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementDecoratorInterface`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $arguments`|\spaceonfire\SimplePhpApiDoc\Elements\ArgumentElement[]
|||
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $element`|\phpDocumentor\Reflection\Php\Function_
|||
-
-## Methods
-
-### __construct()
-
-FunctionElement constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Function_*||
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function FunctionElement::__construct(\phpDocumentor\Reflection\Php\Function_ $element, \spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/FunctionElement.php:30`
-
-### getArguments()
-
-Returns the arguments of this function.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\ArgumentElement[]*||
-
-```php
-public function FunctionElement::getArguments(): array
-```
-
-File location: `src/Elements/FunctionElement.php:59`
-
-### getContext()
-
-Getter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseElement::getContext(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Elements/BaseElement.php:32`
-
-### getDocBlock()
-
-Returns the DocBlock of the element if available
-
-```php
-public function FunctionElement::getDocBlock(): ?\spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\DocBlock
-```
-
-File location: `src/Elements/FunctionElement.php:89`
-
-### getElement()
-
-Getter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Php\Function_*||
-
-```php
-public function FunctionElement::getElement(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Php\Function_
-```
-
-File location: `src/Elements/FunctionElement.php:39`
-
-### getFqsen()
-
-Returns the Fqsen of the element.
-
-```php
-public function FunctionElement::getFqsen(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Fqsen
-```
-
-File location: `src/Elements/FunctionElement.php:73`
-
-### getLocation()
-
-```php
-public function FunctionElement::getLocation(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Location
-```
-
-File location: `src/Elements/FunctionElement.php:94`
-
-### getName()
-
-Returns the name of the element.
-
-```php
-public function FunctionElement::getName(): string
-```
-
-File location: `src/Elements/FunctionElement.php:81`
-
-### getReturnType()
-
-```php
-public function FunctionElement::getReturnType(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Type
-```
-
-File location: `src/Elements/FunctionElement.php:99`
-
-### setContext()
-
-Setter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseElement::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/BaseElement.php:42`
-
-### setElement()
-
-Setter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Function_*||
-|**Return**|*static*||
-
-```php
-public function FunctionElement::setElement(mixed $element): mixed
-```
-
-File location: `src/Elements/FunctionElement.php:49`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/InterfaceElement.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/InterfaceElement.md
deleted file mode 100644
index bcebceb..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/InterfaceElement.md
+++ /dev/null
@@ -1,176 +0,0 @@
-# Class InterfaceElement
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\InterfaceElement`
-- Parent class: `\spaceonfire\SimplePhpApiDoc\Elements\BaseElement`
-- This class implements:
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementInterface`
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementDecoratorInterface`
- - `\spaceonfire\SimplePhpApiDoc\Elements\MethodOwnerInterface`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $constants`|\spaceonfire\SimplePhpApiDoc\Elements\ConstantElement[]
|||
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $element`|\phpDocumentor\Reflection\Php\Interface_
|||
-|`protected $methods`|\spaceonfire\SimplePhpApiDoc\Elements\Collections\MethodsCollection
|||
-
-## Methods
-
-### __construct()
-
-InterfaceElement constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Interface_*||
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function InterfaceElement::__construct(\phpDocumentor\Reflection\Php\Interface_ $element, \spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/InterfaceElement.php:34`
-
-### getConstants()
-
-Returns the constants of this interface.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\ConstantElement[]*||
-
-```php
-public function InterfaceElement::getConstants(): array
-```
-
-File location: `src/Elements/InterfaceElement.php:63`
-
-### getContext()
-
-Getter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseElement::getContext(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Elements/BaseElement.php:32`
-
-### getDocBlock()
-
-Returns the DocBlock of this interface if available.
-
-```php
-public function InterfaceElement::getDocBlock(): ?\spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\DocBlock
-```
-
-File location: `src/Elements/InterfaceElement.php:107`
-
-### getElement()
-
-Getter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Php\Interface_*||
-
-```php
-public function InterfaceElement::getElement(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Php\Interface_
-```
-
-File location: `src/Elements/InterfaceElement.php:43`
-
-### getFqsen()
-
-Returns the Fqsen of the element.
-
-```php
-public function InterfaceElement::getFqsen(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Fqsen
-```
-
-File location: `src/Elements/InterfaceElement.php:91`
-
-### getLocation()
-
-```php
-public function InterfaceElement::getLocation(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Location
-```
-
-File location: `src/Elements/InterfaceElement.php:121`
-
-### getMethods()
-
-Returns collection of methods
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\Collections\MethodsCollection*||
-
-```php
-public function InterfaceElement::getMethods(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Elements\Collections\MethodsCollection
-```
-
-File location: `src/Elements/InterfaceElement.php:77`
-
-### getName()
-
-Returns the name of the element.
-
-```php
-public function InterfaceElement::getName(): string
-```
-
-File location: `src/Elements/InterfaceElement.php:99`
-
-### getParents()
-
-Returns the Fqsen of the interfaces this interface is extending.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Fqsen[]*||
-
-```php
-public function InterfaceElement::getParents(): array
-```
-
-File location: `src/Elements/InterfaceElement.php:116`
-
-### setContext()
-
-Setter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseElement::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/BaseElement.php:42`
-
-### setElement()
-
-Setter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Interface_*||
-|**Return**|*static*||
-
-```php
-public function InterfaceElement::setElement(mixed $element): mixed
-```
-
-File location: `src/Elements/InterfaceElement.php:53`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/MethodElement.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/MethodElement.md
deleted file mode 100644
index 8694e12..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/MethodElement.md
+++ /dev/null
@@ -1,272 +0,0 @@
-# Class MethodElement
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\MethodElement`
-- Parent class: `\spaceonfire\SimplePhpApiDoc\Elements\BaseElement`
-- This class implements:
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementInterface`
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementDecoratorInterface`
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementVisibilityInterface`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $arguments`|\spaceonfire\SimplePhpApiDoc\Elements\ArgumentElement[]
|||
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $docBlock`|\phpDocumentor\Reflection\DocBlock
|||
-|`protected $element`|\phpDocumentor\Reflection\Php\Method
|||
-|`protected $owner`|\spaceonfire\SimplePhpApiDoc\Elements\MethodOwnerInterface
|||
-
-## Methods
-
-### __construct()
-
-MethodElement constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Method*||
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function MethodElement::__construct(\phpDocumentor\Reflection\Php\Method $element, \spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/MethodElement.php:40`
-
-### __toString()
-
-```php
-public function MethodElement::__toString(): mixed
-```
-
-File location: `src/Elements/MethodElement.php:212`
-
-### getArguments()
-
-Returns the arguments of this method.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\ArgumentElement[]*||
-
-```php
-public function MethodElement::getArguments(): array
-```
-
-File location: `src/Elements/MethodElement.php:119`
-
-### getContext()
-
-Getter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseElement::getContext(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Elements/BaseElement.php:32`
-
-### getDocBlock()
-
-Returns the DocBlock of this method if available.
-
-```php
-public function MethodElement::getDocBlock(): ?\spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\DocBlock
-```
-
-File location: `src/Elements/MethodElement.php:150`
-
-### getElement()
-
-Getter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Php\Method*||
-
-```php
-public function MethodElement::getElement(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Php\Method
-```
-
-File location: `src/Elements/MethodElement.php:49`
-
-### getFileLocation()
-
-```php
-public function MethodElement::getFileLocation(): ?string
-```
-
-File location: `src/Elements/MethodElement.php:217`
-
-### getFqsen()
-
-Returns the Fqsen of the element.
-
-```php
-public function MethodElement::getFqsen(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Fqsen
-```
-
-File location: `src/Elements/MethodElement.php:133`
-
-### getLocation()
-
-```php
-public function MethodElement::getLocation(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Location
-```
-
-File location: `src/Elements/MethodElement.php:163`
-
-### getName()
-
-Returns the name of the element.
-
-```php
-public function MethodElement::getName(): string
-```
-
-File location: `src/Elements/MethodElement.php:141`
-
-### getOwner()
-
-Getter for `owner` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\MethodOwnerInterface*||
-
-```php
-public function MethodElement::getOwner(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Elements\MethodOwnerInterface
-```
-
-File location: `src/Elements/MethodElement.php:69`
-
-### getReturnType()
-
-Returns the in code defined return type.
-
-Return types are introduced in php 7.0 when your could doesn't have a
-return type defined this method will return Mixed_ by default. The return value of this
-method is not affected by the return tag in your docblock.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Type*||
-
-```php
-public function MethodElement::getReturnType(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Type
-```
-
-File location: `src/Elements/MethodElement.php:177`
-
-### getShortFqsen()
-
-```php
-public function MethodElement::getShortFqsen(): string
-```
-
-File location: `src/Elements/MethodElement.php:182`
-
-### getSignature()
-
-```php
-public function MethodElement::getSignature(): string
-```
-
-File location: `src/Elements/MethodElement.php:188`
-
-### getVisibility()
-
-Returns the Visibility of this method.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Php\Visibility|null*||
-
-```php
-public function MethodElement::getVisibility(): ?\spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Php\Visibility
-```
-
-File location: `src/Elements/MethodElement.php:110`
-
-### isAbstract()
-
-Returns true when this method is abstract. Otherwise returns false.
-
-```php
-public function MethodElement::isAbstract(): bool
-```
-
-File location: `src/Elements/MethodElement.php:88`
-
-### isFinal()
-
-Returns true when this method is final. Otherwise returns false.
-
-```php
-public function MethodElement::isFinal(): bool
-```
-
-File location: `src/Elements/MethodElement.php:96`
-
-### isStatic()
-
-Returns true when this method is static. Otherwise returns false.
-
-```php
-public function MethodElement::isStatic(): bool
-```
-
-File location: `src/Elements/MethodElement.php:104`
-
-### setContext()
-
-Setter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseElement::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/BaseElement.php:42`
-
-### setElement()
-
-Setter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Method*||
-|**Return**|*static*||
-
-```php
-public function MethodElement::setElement(mixed $element): mixed
-```
-
-File location: `src/Elements/MethodElement.php:59`
-
-### setOwner()
-
-Setter for `owner` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$owner`|*\spaceonfire\SimplePhpApiDoc\Elements\MethodOwnerInterface*||
-|**Return**|*static*||
-
-```php
-public function MethodElement::setOwner(\spaceonfire\SimplePhpApiDoc\Elements\MethodOwnerInterface $owner): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Elements\MethodElement
-```
-
-File location: `src/Elements/MethodElement.php:79`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/MethodOwnerInterface.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/MethodOwnerInterface.md
deleted file mode 100644
index bcdaf03..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/MethodOwnerInterface.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Interface MethodOwnerInterface
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\MethodOwnerInterface`
-- This interface extends: `\spaceonfire\SimplePhpApiDoc\Elements\ElementDecoratorInterface`
-
-## Methods
-
-### getMethods()
-
-Returns collection of methods
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\Collections\MethodsCollection*||
-
-```php
-public function MethodOwnerInterface::getMethods(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Elements\Collections\MethodsCollection
-```
-
-File location: `src/Elements/MethodOwnerInterface.php:15`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/NamespaceElement.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/NamespaceElement.md
deleted file mode 100644
index 6b81627..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/NamespaceElement.md
+++ /dev/null
@@ -1,183 +0,0 @@
-# Class NamespaceElement
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\NamespaceElement`
-- Parent class: `\spaceonfire\SimplePhpApiDoc\Elements\BaseElement`
-- This class implements:
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementInterface`
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementDecoratorInterface`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $element`|\phpDocumentor\Reflection\Php\Namespace_
|||
-
-## Methods
-
-### __construct()
-
-NamespaceElement constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Namespace_*||
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function NamespaceElement::__construct(\phpDocumentor\Reflection\Php\Namespace_ $element, \spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/NamespaceElement.php:23`
-
-### getClasses()
-
-Returns a list of all fqsen of classes in this namespace.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Fqsen[]*||
-
-```php
-public function NamespaceElement::getClasses(): array
-```
-
-File location: `src/Elements/NamespaceElement.php:53`
-
-### getConstants()
-
-Returns a list of all constants in this namespace.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Fqsen[]*||
-
-```php
-public function NamespaceElement::getConstants(): array
-```
-
-File location: `src/Elements/NamespaceElement.php:63`
-
-### getContext()
-
-Getter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseElement::getContext(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Elements/BaseElement.php:32`
-
-### getElement()
-
-Getter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Php\Namespace_*||
-
-```php
-public function NamespaceElement::getElement(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Php\Namespace_
-```
-
-File location: `src/Elements/NamespaceElement.php:32`
-
-### getFqsen()
-
-Returns the Fqsen of the element.
-
-```php
-public function NamespaceElement::getFqsen(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Fqsen
-```
-
-File location: `src/Elements/NamespaceElement.php:101`
-
-### getFunctions()
-
-Returns a list of all functions in this namespace.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Fqsen[]*||
-
-```php
-public function NamespaceElement::getFunctions(): array
-```
-
-File location: `src/Elements/NamespaceElement.php:73`
-
-### getInterfaces()
-
-Returns a list of all interfaces in this namespace.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Fqsen[]*||
-
-```php
-public function NamespaceElement::getInterfaces(): array
-```
-
-File location: `src/Elements/NamespaceElement.php:83`
-
-### getName()
-
-Returns the name of the element.
-
-```php
-public function NamespaceElement::getName(): string
-```
-
-File location: `src/Elements/NamespaceElement.php:109`
-
-### getTraits()
-
-Returns a list of all traits in this namespace.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Fqsen[]*||
-
-```php
-public function NamespaceElement::getTraits(): array
-```
-
-File location: `src/Elements/NamespaceElement.php:93`
-
-### setContext()
-
-Setter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseElement::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/BaseElement.php:42`
-
-### setElement()
-
-Setter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Namespace_*||
-|**Return**|*static*||
-
-```php
-public function NamespaceElement::setElement(mixed $element): mixed
-```
-
-File location: `src/Elements/NamespaceElement.php:42`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/PropertyElement.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/PropertyElement.md
deleted file mode 100644
index c87a752..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/PropertyElement.md
+++ /dev/null
@@ -1,235 +0,0 @@
-# Class PropertyElement
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\PropertyElement`
-- Parent class: `\spaceonfire\SimplePhpApiDoc\Elements\BaseElement`
-- This class implements:
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementInterface`
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementDecoratorInterface`
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementVisibilityInterface`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $docBlock`|\phpDocumentor\Reflection\DocBlock|null
|||
-|`protected $element`|\phpDocumentor\Reflection\Php\Property
|||
-|`protected $owner`|\spaceonfire\SimplePhpApiDoc\Elements\PropertyOwnerInterface
|||
-
-## Methods
-
-### __construct()
-
-PropertyElement constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Property*||
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function PropertyElement::__construct(\phpDocumentor\Reflection\Php\Property $element, \spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/PropertyElement.php:36`
-
-### __toString()
-
-```php
-public function PropertyElement::__toString(): mixed
-```
-
-File location: `src/Elements/PropertyElement.php:178`
-
-### getContext()
-
-Getter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseElement::getContext(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Elements/BaseElement.php:32`
-
-### getDefault()
-
-returns the default value of this property.
-
-```php
-public function PropertyElement::getDefault(): ?string
-```
-
-File location: `src/Elements/PropertyElement.php:84`
-
-### getDescription()
-
-```php
-public function PropertyElement::getDescription(): string
-```
-
-File location: `src/Elements/PropertyElement.php:161`
-
-### getDocBlock()
-
-Returns the DocBlock of this property.
-
-```php
-public function PropertyElement::getDocBlock(): ?\spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\DocBlock
-```
-
-File location: `src/Elements/PropertyElement.php:143`
-
-### getElement()
-
-Getter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Php\Property*||
-
-```php
-public function PropertyElement::getElement(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Php\Property
-```
-
-File location: `src/Elements/PropertyElement.php:45`
-
-### getFqsen()
-
-Returns the Fqsen of the element.
-
-```php
-public function PropertyElement::getFqsen(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Fqsen
-```
-
-File location: `src/Elements/PropertyElement.php:127`
-
-### getLocation()
-
-```php
-public function PropertyElement::getLocation(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Location
-```
-
-File location: `src/Elements/PropertyElement.php:156`
-
-### getName()
-
-Returns the name of the element.
-
-```php
-public function PropertyElement::getName(): string
-```
-
-File location: `src/Elements/PropertyElement.php:135`
-
-### getOwner()
-
-Getter for `owner` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\PropertyOwnerInterface*||
-
-```php
-public function PropertyElement::getOwner(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Elements\PropertyOwnerInterface
-```
-
-File location: `src/Elements/PropertyElement.php:65`
-
-### getSignature()
-
-```php
-public function PropertyElement::getSignature(): string
-```
-
-File location: `src/Elements/PropertyElement.php:183`
-
-### getTypes()
-
-Returns the types of this property.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*string[]*||
-
-```php
-public function PropertyElement::getTypes(): array
-```
-
-File location: `src/Elements/PropertyElement.php:101`
-
-### getVisibility()
-
-Returns the Visibility of this method.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Php\Visibility|null*||
-
-```php
-public function PropertyElement::getVisibility(): ?\spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Php\Visibility
-```
-
-File location: `src/Elements/PropertyElement.php:119`
-
-### isStatic()
-
-Returns true when this method is static. Otherwise returns false.
-
-```php
-public function PropertyElement::isStatic(): bool
-```
-
-File location: `src/Elements/PropertyElement.php:92`
-
-### setContext()
-
-Setter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseElement::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/BaseElement.php:42`
-
-### setElement()
-
-Setter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Property*||
-|**Return**|*static*||
-
-```php
-public function PropertyElement::setElement(mixed $element): mixed
-```
-
-File location: `src/Elements/PropertyElement.php:55`
-
-### setOwner()
-
-Setter for `owner` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$owner`|*\spaceonfire\SimplePhpApiDoc\Elements\PropertyOwnerInterface*||
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\PropertyElement*||
-
-```php
-public function PropertyElement::setOwner(\spaceonfire\SimplePhpApiDoc\Elements\PropertyOwnerInterface $owner): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Elements\PropertyElement
-```
-
-File location: `src/Elements/PropertyElement.php:75`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/PropertyOwnerInterface.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/PropertyOwnerInterface.md
deleted file mode 100644
index 15fd0d0..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/PropertyOwnerInterface.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# Interface PropertyOwnerInterface
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\PropertyOwnerInterface`
-- This interface extends: `\spaceonfire\SimplePhpApiDoc\Elements\ElementDecoratorInterface`
-
-## Methods
-
-### getProperties()
-
-Returns collection of properties
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\Collections\PropertiesCollection*||
-
-```php
-public function PropertyOwnerInterface::getProperties(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Elements\Collections\PropertiesCollection
-```
-
-File location: `src/Elements/PropertyOwnerInterface.php:15`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Elements/TraitElement.md b/docs/spaceonfire/SimplePhpApiDoc/Elements/TraitElement.md
deleted file mode 100644
index 332aef9..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Elements/TraitElement.md
+++ /dev/null
@@ -1,189 +0,0 @@
-# Class TraitElement
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Elements\TraitElement`
-- Parent class: `\spaceonfire\SimplePhpApiDoc\Elements\BaseElement`
-- This class implements:
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementInterface`
- - `\spaceonfire\SimplePhpApiDoc\Elements\ElementDecoratorInterface`
- - `\spaceonfire\SimplePhpApiDoc\Elements\MethodOwnerInterface`
- - `\spaceonfire\SimplePhpApiDoc\Elements\PropertyOwnerInterface`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $element`|\phpDocumentor\Reflection\Php\Trait_
|||
-|`protected $methods`|\spaceonfire\SimplePhpApiDoc\Elements\Collections\MethodsCollection
|||
-|`protected $properties`|\spaceonfire\SimplePhpApiDoc\Elements\Collections\PropertiesCollection
|||
-|`protected $traits`|\spaceonfire\SimplePhpApiDoc\Elements\Collections\TraitsCollection
|||
-
-## Methods
-
-### __construct()
-
-TraitElement constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Trait_*||
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function TraitElement::__construct(\phpDocumentor\Reflection\Php\Trait_ $element, \spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/TraitElement.php:43`
-
-### getContext()
-
-Getter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseElement::getContext(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Elements/BaseElement.php:32`
-
-### getDocBlock()
-
-```php
-public function TraitElement::getDocBlock(): ?\spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\DocBlock
-```
-
-File location: `src/Elements/TraitElement.php:124`
-
-### getElement()
-
-Getter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Php\Trait_*||
-
-```php
-public function TraitElement::getElement(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Php\Trait_
-```
-
-File location: `src/Elements/TraitElement.php:52`
-
-### getFqsen()
-
-Returns the Fqsen of the element.
-
-```php
-public function TraitElement::getFqsen(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Fqsen
-```
-
-File location: `src/Elements/TraitElement.php:111`
-
-### getLocation()
-
-```php
-public function TraitElement::getLocation(): \spaceonfire\SimplePhpApiDoc\Elements\phpDocumentor\Reflection\Location
-```
-
-File location: `src/Elements/TraitElement.php:152`
-
-### getMethods()
-
-Returns collection of methods
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\Collections\MethodsCollection*||
-
-```php
-public function TraitElement::getMethods(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Elements\Collections\MethodsCollection
-```
-
-File location: `src/Elements/TraitElement.php:71`
-
-### getName()
-
-Returns the name of the element.
-
-```php
-public function TraitElement::getName(): string
-```
-
-File location: `src/Elements/TraitElement.php:119`
-
-### getProperties()
-
-Returns collection of properties
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\Collections\PropertiesCollection*||
-
-```php
-public function TraitElement::getProperties(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Elements\Collections\PropertiesCollection
-```
-
-File location: `src/Elements/TraitElement.php:91`
-
-### getUsedTraits()
-
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Elements\Collections\TraitsCollection*||
-
-```php
-public function TraitElement::getUsedTraits(): \spaceonfire\SimplePhpApiDoc\Elements\spaceonfire\SimplePhpApiDoc\Elements\Collections\TraitsCollection
-```
-
-File location: `src/Elements/TraitElement.php:132`
-
-### getUsedTraitsFqsen()
-
-Returns fqsen of all traits used by this trait.
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\phpDocumentor\Reflection\Fqsen[]*||
-
-```php
-public function TraitElement::getUsedTraitsFqsen(): array
-```
-
-File location: `src/Elements/TraitElement.php:147`
-
-### setContext()
-
-Setter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseElement::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): mixed
-```
-
-File location: `src/Elements/BaseElement.php:42`
-
-### setElement()
-
-Setter for `element` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$element`|*\phpDocumentor\Reflection\Php\Trait_*||
-|**Return**|*static*||
-
-```php
-public function TraitElement::setElement(mixed $element): mixed
-```
-
-File location: `src/Elements/TraitElement.php:62`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/GeneratorCommand.md b/docs/spaceonfire/SimplePhpApiDoc/GeneratorCommand.md
deleted file mode 100644
index 7e980c0..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/GeneratorCommand.md
+++ /dev/null
@@ -1,118 +0,0 @@
-# Class GeneratorCommand
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\GeneratorCommand`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $methodsVisibility`|int
|||
-|`protected $propertiesVisibility`|int
|||
-
-## Methods
-
-### __construct()
-
-GeneratorCommand constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$name`|*string|null*||
-|`$composer`|*array*||
-
-```php
-public function GeneratorCommand::__construct(array $composer = [], string $name = null): mixed
-```
-
-File location: `src/GeneratorCommand.php:43`
-
-### getComposer()
-
-Getter for `composer` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*array*||
-
-```php
-public function GeneratorCommand::getComposer(): array
-```
-
-File location: `src/GeneratorCommand.php:54`
-
-### getMethodsVisibility()
-
-Getter for `methodsVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*int*||
-
-```php
-public function GeneratorCommand::getMethodsVisibility(): int
-```
-
-File location: `src/GeneratorCommand.php:94`
-
-### getPropertiesVisibility()
-
-Getter for `propertiesVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*int*||
-
-```php
-public function GeneratorCommand::getPropertiesVisibility(): int
-```
-
-File location: `src/GeneratorCommand.php:74`
-
-### setComposer()
-
-Setter for `composer` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$composer`|*array*||
-|**Return**|*static*||
-
-```php
-public function GeneratorCommand::setComposer(array $composer): mixed
-```
-
-File location: `src/GeneratorCommand.php:64`
-
-### setMethodsVisibility()
-
-Setter for `methodsVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$methodsVisibility`|*int*||
-|**Return**|*static*||
-
-```php
-public function GeneratorCommand::setMethodsVisibility(int $methodsVisibility): mixed
-```
-
-File location: `src/GeneratorCommand.php:104`
-
-### setPropertiesVisibility()
-
-Setter for `propertiesVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$propertiesVisibility`|*int*||
-|**Return**|*static*||
-
-```php
-public function GeneratorCommand::setPropertiesVisibility(int $propertiesVisibility): mixed
-```
-
-File location: `src/GeneratorCommand.php:84`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Renderers/BaseRenderer.md b/docs/spaceonfire/SimplePhpApiDoc/Renderers/BaseRenderer.md
deleted file mode 100644
index 3ff604f..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Renderers/BaseRenderer.md
+++ /dev/null
@@ -1,303 +0,0 @@
-# Class BaseRenderer
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Renderers\BaseRenderer`
-- This class implements: `\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $fs`|\Symfony\Component\Filesystem\Filesystem
|Symfony Filesystem Component||
-|`protected $methodsVisibility`|int
|||
-|`protected $output`|\Symfony\Component\Console\Output\OutputInterface
|Output interface of Symfony Console Component||
-|`protected $outputDir`|string
|||
-|`protected $propertiesVisibility`|int
|||
-|`protected $viewsDir`|string
|||
-
-## Methods
-
-### __construct()
-
-```php
-public function BaseRenderer::__construct(\spaceonfire\SimplePhpApiDoc\Context $context = null, string $outputDir = null): mixed
-```
-
-File location: `src/Renderers/BaseRenderer.php:48`
-
-### getContext()
-
-Getter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseRenderer::getContext(): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Renderers/BaseRenderer.php:55`
-
-### getFileName()
-
-Generates file name with extension
-
-|Param|Type|Description|
-|---|---|---|
-|`$fqsen`|*\phpDocumentor\Reflection\Fqsen*||
-|**Return**|*string*||
-
-```php
-public function BaseRenderer::getFileName(\phpDocumentor\Reflection\Fqsen $fqsen): string
-```
-
-File location: `src/Renderers/BaseRenderer.php:190`
-
-### getFs()
-
-Getter for `fs` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\Symfony\Component\Filesystem\Filesystem*||
-
-```php
-public function BaseRenderer::getFs(): \spaceonfire\SimplePhpApiDoc\Renderers\Symfony\Component\Filesystem\Filesystem
-```
-
-File location: `src/Renderers/BaseRenderer.php:102`
-
-### getMethodsVisibility()
-
-Getter for `methodsVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*int*||
-
-```php
-public function BaseRenderer::getMethodsVisibility(): int
-```
-
-File location: `src/Renderers/BaseRenderer.php:141`
-
-### getOutput()
-
-Getter for `output` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\Symfony\Component\Console\Output\OutputInterface*||
-
-```php
-public function BaseRenderer::getOutput(): \spaceonfire\SimplePhpApiDoc\Renderers\Symfony\Component\Console\Output\OutputInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:115`
-
-### getOutputDir()
-
-Getter for `outputDir` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*string*||
-
-```php
-public function BaseRenderer::getOutputDir(): string
-```
-
-File location: `src/Renderers/BaseRenderer.php:68`
-
-### getPropertiesVisibility()
-
-Getter for `propertiesVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*int*||
-
-```php
-public function BaseRenderer::getPropertiesVisibility(): int
-```
-
-File location: `src/Renderers/BaseRenderer.php:128`
-
-### getViewsDir()
-
-Getter for `viewsDir` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*string*||
-
-```php
-public function BaseRenderer::getViewsDir(): string
-```
-
-File location: `src/Renderers/BaseRenderer.php:85`
-
-### renderClasses()
-
-Render documentation content for class
-
-|Param|Type|Description|
-|---|---|---|
-|`$interface`|*\spaceonfire\SimplePhpApiDoc\Elements\ClassElement*||
-|**Return**|*string*||
-
-```php
-public function BaseRenderer::renderClasses(\spaceonfire\SimplePhpApiDoc\Elements\ClassElement $interface): string
-```
-
-File location: `src/Renderers/BaseRenderer.php:236`
-
-### renderInterfaces()
-
-Render documentation content for interface
-
-|Param|Type|Description|
-|---|---|---|
-|`$interface`|*\spaceonfire\SimplePhpApiDoc\Elements\InterfaceElement*||
-|**Return**|*string*||
-
-```php
-public function BaseRenderer::renderInterfaces(\spaceonfire\SimplePhpApiDoc\Elements\InterfaceElement $interface): string
-```
-
-File location: `src/Renderers/BaseRenderer.php:230`
-
-### renderTraits()
-
-Render documentation content for class
-
-|Param|Type|Description|
-|---|---|---|
-|`$trait`|*\spaceonfire\SimplePhpApiDoc\Elements\TraitElement*||
-|**Return**|*string*||
-
-```php
-public function BaseRenderer::renderTraits(\spaceonfire\SimplePhpApiDoc\Elements\TraitElement $trait): string
-```
-
-File location: `src/Renderers/BaseRenderer.php:242`
-
-### run()
-
-Render documentation
-
-```php
-public function BaseRenderer::run(): void
-```
-
-File location: `src/Renderers/BaseRenderer.php:154`
-
-### setContext()
-
-Setter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseRenderer::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:61`
-
-### setFs()
-
-Setter for `fs` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$fs`|*\Symfony\Component\Filesystem\Filesystem*||
-|**Return**|*static*||
-
-```php
-public function BaseRenderer::setFs(\Symfony\Component\Filesystem\Filesystem $fs): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:108`
-
-### setMethodsVisibility()
-
-Setter for `methodsVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$methodsVisibility`|*int*||
-|**Return**|*static*||
-
-```php
-public function BaseRenderer::setMethodsVisibility(int $methodsVisibility): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:147`
-
-### setOutput()
-
-Setter for `output` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$output`|*\Symfony\Component\Console\Output\OutputInterface*||
-|**Return**|*static*||
-
-```php
-public function BaseRenderer::setOutput(\Symfony\Component\Console\Output\OutputInterface $output): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:121`
-
-### setOutputDir()
-
-Setter for `outputDir` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$outputDir`|*string*||
-|**Return**|*static*||
-
-```php
-public function BaseRenderer::setOutputDir(string $outputDir): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:74`
-
-### setPropertiesVisibility()
-
-Setter for `propertiesVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$propertiesVisibility`|*int*||
-|**Return**|*static*||
-
-```php
-public function BaseRenderer::setPropertiesVisibility(int $propertiesVisibility): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:134`
-
-### setViewsDir()
-
-Setter for `viewsDir` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$viewsDir`|*string*||
-|**Return**|*static*||
-
-```php
-public function BaseRenderer::setViewsDir(string $viewsDir): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:91`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Renderers/Markdown/MarkdownHelper.md b/docs/spaceonfire/SimplePhpApiDoc/Renderers/Markdown/MarkdownHelper.md
deleted file mode 100644
index c7cfbfd..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Renderers/Markdown/MarkdownHelper.md
+++ /dev/null
@@ -1,105 +0,0 @@
-# Class MarkdownHelper
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Renderers\Markdown\MarkdownHelper`
-
-## Methods
-
-### code()
-
-```php
-public static function MarkdownHelper::code(string $text): string
-```
-
-File location: `src/Renderers/Markdown/MarkdownHelper.php:91`
-
-### header()
-
-```php
-public static function MarkdownHelper::header(string $text, int $level = 1): string
-```
-
-File location: `src/Renderers/Markdown/MarkdownHelper.php:23`
-
-### hr()
-
-```php
-public static function MarkdownHelper::hr(): mixed
-```
-
-File location: `src/Renderers/Markdown/MarkdownHelper.php:127`
-
-### indent()
-
-```php
-public static function MarkdownHelper::indent(mixed $items, int $times = 1): mixed
-```
-
-File location: `src/Renderers/Markdown/MarkdownHelper.php:63`
-
-### italic()
-
-```php
-public static function MarkdownHelper::italic(string $text): string
-```
-
-File location: `src/Renderers/Markdown/MarkdownHelper.php:13`
-
-### link()
-
-```php
-public static function MarkdownHelper::link(string $text, string $url): string
-```
-
-File location: `src/Renderers/Markdown/MarkdownHelper.php:28`
-
-### ol()
-
-```php
-public static function MarkdownHelper::ol(array $items): array
-```
-
-File location: `src/Renderers/Markdown/MarkdownHelper.php:48`
-
-### pre()
-
-```php
-public static function MarkdownHelper::pre(string $text, string $lang = null): string
-```
-
-File location: `src/Renderers/Markdown/MarkdownHelper.php:96`
-
-### strong()
-
-```php
-public static function MarkdownHelper::strong(string $text): string
-```
-
-File location: `src/Renderers/Markdown/MarkdownHelper.php:18`
-
-### table()
-
-```php
-public static function MarkdownHelper::table(array $rows, bool $withHeader = true): array
-```
-
-File location: `src/Renderers/Markdown/MarkdownHelper.php:105`
-
-### tableRow()
-
-```php
-public static function MarkdownHelper::tableRow(array $row): string
-```
-
-File location: `src/Renderers/Markdown/MarkdownHelper.php:120`
-
-### ul()
-
-```php
-public static function MarkdownHelper::ul(array $items): array
-```
-
-File location: `src/Renderers/Markdown/MarkdownHelper.php:33`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Renderers/Markdown/MarkdownRenderer.md b/docs/spaceonfire/SimplePhpApiDoc/Renderers/Markdown/MarkdownRenderer.md
deleted file mode 100644
index 254b2e3..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Renderers/Markdown/MarkdownRenderer.md
+++ /dev/null
@@ -1,329 +0,0 @@
-# Class MarkdownRenderer
-
-Class MarkdownRenderer
-
-Renders documentation for your code in markdown format
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Renderers\Markdown\MarkdownRenderer`
-- Parent class: `\spaceonfire\SimplePhpApiDoc\Renderers\BaseRenderer`
-- This class implements: `\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface`
-
-## Properties
-
-|Property|Type|Description|Default Value|
-|---|---|---|---|
-|`protected $context`|\spaceonfire\SimplePhpApiDoc\Context
|||
-|`protected $fs`|\Symfony\Component\Filesystem\Filesystem
|Symfony Filesystem Component||
-|`protected $methodsVisibility`|int
|||
-|`protected $output`|\Symfony\Component\Console\Output\OutputInterface
|Output interface of Symfony Console Component||
-|`protected $outputDir`|string
|||
-|`protected $propertiesVisibility`|int
|||
-|`protected $viewsDir`|string
|||
-
-## Methods
-
-### __construct()
-
-MarkdownRenderer constructor.
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context|null*||
-|`$outputDir`|*string|null*||
-
-```php
-public function MarkdownRenderer::__construct(\spaceonfire\SimplePhpApiDoc\Context $context = null, string $outputDir = null): mixed
-```
-
-File location: `src/Renderers/Markdown/MarkdownRenderer.php:29`
-
-### getContext()
-
-Getter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function BaseRenderer::getContext(): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Renderers/BaseRenderer.php:55`
-
-### getFileName()
-
-Generates file name with extension
-
-|Param|Type|Description|
-|---|---|---|
-|`$fqsen`|*\phpDocumentor\Reflection\Fqsen*||
-|**Return**|*string*||
-
-```php
-public function MarkdownRenderer::getFileName(\phpDocumentor\Reflection\Fqsen $fqsen): string
-```
-
-File location: `src/Renderers/Markdown/MarkdownRenderer.php:36`
-
-### getFs()
-
-Getter for `fs` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\Symfony\Component\Filesystem\Filesystem*||
-
-```php
-public function BaseRenderer::getFs(): \spaceonfire\SimplePhpApiDoc\Renderers\Symfony\Component\Filesystem\Filesystem
-```
-
-File location: `src/Renderers/BaseRenderer.php:102`
-
-### getMethodsVisibility()
-
-Getter for `methodsVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*int*||
-
-```php
-public function BaseRenderer::getMethodsVisibility(): int
-```
-
-File location: `src/Renderers/BaseRenderer.php:141`
-
-### getOutput()
-
-Getter for `output` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\Symfony\Component\Console\Output\OutputInterface*||
-
-```php
-public function BaseRenderer::getOutput(): \spaceonfire\SimplePhpApiDoc\Renderers\Symfony\Component\Console\Output\OutputInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:115`
-
-### getOutputDir()
-
-Getter for `outputDir` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*string*||
-
-```php
-public function BaseRenderer::getOutputDir(): string
-```
-
-File location: `src/Renderers/BaseRenderer.php:68`
-
-### getPropertiesVisibility()
-
-Getter for `propertiesVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*int*||
-
-```php
-public function BaseRenderer::getPropertiesVisibility(): int
-```
-
-File location: `src/Renderers/BaseRenderer.php:128`
-
-### getViewsDir()
-
-Getter for `viewsDir` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*string*||
-
-```php
-public function BaseRenderer::getViewsDir(): string
-```
-
-File location: `src/Renderers/BaseRenderer.php:85`
-
-### renderClasses()
-
-Render documentation content for class
-
-|Param|Type|Description|
-|---|---|---|
-|`$interface`|*\spaceonfire\SimplePhpApiDoc\Elements\ClassElement*||
-|**Return**|*string*||
-
-```php
-public function MarkdownRenderer::renderClasses(\spaceonfire\SimplePhpApiDoc\Elements\ClassElement $class): string
-```
-
-File location: `src/Renderers/Markdown/MarkdownRenderer.php:69`
-
-### renderInterfaces()
-
-Render documentation content for interface
-
-|Param|Type|Description|
-|---|---|---|
-|`$interface`|*\spaceonfire\SimplePhpApiDoc\Elements\InterfaceElement*||
-|**Return**|*string*||
-
-```php
-public function MarkdownRenderer::renderInterfaces(\spaceonfire\SimplePhpApiDoc\Elements\InterfaceElement $interface): string
-```
-
-File location: `src/Renderers/Markdown/MarkdownRenderer.php:60`
-
-### renderTableOfContents()
-
-Renders table of contents
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*string*||
-
-```php
-public function MarkdownRenderer::renderTableOfContents(): string
-```
-
-File location: `src/Renderers/Markdown/MarkdownRenderer.php:88`
-
-### renderTraits()
-
-Render documentation content for class
-
-|Param|Type|Description|
-|---|---|---|
-|`$trait`|*\spaceonfire\SimplePhpApiDoc\Elements\TraitElement*||
-|**Return**|*string*||
-
-```php
-public function MarkdownRenderer::renderTraits(\spaceonfire\SimplePhpApiDoc\Elements\TraitElement $trait): string
-```
-
-File location: `src/Renderers/Markdown/MarkdownRenderer.php:78`
-
-### run()
-
-Render documentation
-
-```php
-public function MarkdownRenderer::run(): void
-```
-
-File location: `src/Renderers/Markdown/MarkdownRenderer.php:45`
-
-### setContext()
-
-Setter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function BaseRenderer::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:61`
-
-### setFs()
-
-Setter for `fs` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$fs`|*\Symfony\Component\Filesystem\Filesystem*||
-|**Return**|*static*||
-
-```php
-public function BaseRenderer::setFs(\Symfony\Component\Filesystem\Filesystem $fs): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:108`
-
-### setMethodsVisibility()
-
-Setter for `methodsVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$methodsVisibility`|*int*||
-|**Return**|*static*||
-
-```php
-public function BaseRenderer::setMethodsVisibility(int $methodsVisibility): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:147`
-
-### setOutput()
-
-Setter for `output` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$output`|*\Symfony\Component\Console\Output\OutputInterface*||
-|**Return**|*static*||
-
-```php
-public function BaseRenderer::setOutput(\Symfony\Component\Console\Output\OutputInterface $output): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:121`
-
-### setOutputDir()
-
-Setter for `outputDir` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$outputDir`|*string*||
-|**Return**|*static*||
-
-```php
-public function BaseRenderer::setOutputDir(string $outputDir): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:74`
-
-### setPropertiesVisibility()
-
-Setter for `propertiesVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$propertiesVisibility`|*int*||
-|**Return**|*static*||
-
-```php
-public function BaseRenderer::setPropertiesVisibility(int $propertiesVisibility): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:134`
-
-### setViewsDir()
-
-Setter for `viewsDir` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$viewsDir`|*string*||
-|**Return**|*static*||
-
-```php
-public function BaseRenderer::setViewsDir(string $viewsDir): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/BaseRenderer.php:91`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/docs/spaceonfire/SimplePhpApiDoc/Renderers/RendererInterface.md b/docs/spaceonfire/SimplePhpApiDoc/Renderers/RendererInterface.md
deleted file mode 100644
index 3062935..0000000
--- a/docs/spaceonfire/SimplePhpApiDoc/Renderers/RendererInterface.md
+++ /dev/null
@@ -1,282 +0,0 @@
-# Interface RendererInterface
-
-- Full name: `\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface`
-
-## Methods
-
-### getContext()
-
-Getter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\spaceonfire\SimplePhpApiDoc\Context*||
-
-```php
-public function RendererInterface::getContext(): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Context
-```
-
-File location: `src/Renderers/RendererInterface.php:55`
-
-### getFileName()
-
-Generates file name with extension
-
-|Param|Type|Description|
-|---|---|---|
-|`$fqsen`|*\phpDocumentor\Reflection\Fqsen*||
-|**Return**|*string*||
-
-```php
-public function RendererInterface::getFileName(\phpDocumentor\Reflection\Fqsen $fqsen): string
-```
-
-File location: `src/Renderers/RendererInterface.php:27`
-
-### getFs()
-
-Getter for `fs` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\Symfony\Component\Filesystem\Filesystem*||
-
-```php
-public function RendererInterface::getFs(): \spaceonfire\SimplePhpApiDoc\Renderers\Symfony\Component\Filesystem\Filesystem
-```
-
-File location: `src/Renderers/RendererInterface.php:94`
-
-### getMethodsVisibility()
-
-Getter for `methodsVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*int*||
-
-```php
-public function RendererInterface::getMethodsVisibility(): int
-```
-
-File location: `src/Renderers/RendererInterface.php:133`
-
-### getOutput()
-
-Getter for `output` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*\Symfony\Component\Console\Output\OutputInterface*||
-
-```php
-public function RendererInterface::getOutput(): \spaceonfire\SimplePhpApiDoc\Renderers\Symfony\Component\Console\Output\OutputInterface
-```
-
-File location: `src/Renderers/RendererInterface.php:107`
-
-### getOutputDir()
-
-Getter for `outputDir` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*string*||
-
-```php
-public function RendererInterface::getOutputDir(): string
-```
-
-File location: `src/Renderers/RendererInterface.php:68`
-
-### getPropertiesVisibility()
-
-Getter for `propertiesVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*int*||
-
-```php
-public function RendererInterface::getPropertiesVisibility(): int
-```
-
-File location: `src/Renderers/RendererInterface.php:120`
-
-### getViewsDir()
-
-Getter for `viewsDir` property
-
-|Param|Type|Description|
-|---|---|---|
-|**Return**|*string*||
-
-```php
-public function RendererInterface::getViewsDir(): string
-```
-
-File location: `src/Renderers/RendererInterface.php:81`
-
-### renderClasses()
-
-Render documentation content for class
-
-|Param|Type|Description|
-|---|---|---|
-|`$interface`|*\spaceonfire\SimplePhpApiDoc\Elements\ClassElement*||
-|**Return**|*string*||
-
-```php
-public function RendererInterface::renderClasses(\spaceonfire\SimplePhpApiDoc\Elements\ClassElement $interface): string
-```
-
-File location: `src/Renderers/RendererInterface.php:41`
-
-### renderInterfaces()
-
-Render documentation content for interface
-
-|Param|Type|Description|
-|---|---|---|
-|`$interface`|*\spaceonfire\SimplePhpApiDoc\Elements\InterfaceElement*||
-|**Return**|*string*||
-
-```php
-public function RendererInterface::renderInterfaces(\spaceonfire\SimplePhpApiDoc\Elements\InterfaceElement $interface): string
-```
-
-File location: `src/Renderers/RendererInterface.php:34`
-
-### renderTraits()
-
-Render documentation content for class
-
-|Param|Type|Description|
-|---|---|---|
-|`$trait`|*\spaceonfire\SimplePhpApiDoc\Elements\TraitElement*||
-|**Return**|*string*||
-
-```php
-public function RendererInterface::renderTraits(\spaceonfire\SimplePhpApiDoc\Elements\TraitElement $trait): string
-```
-
-File location: `src/Renderers/RendererInterface.php:48`
-
-### run()
-
-Render documentation
-
-```php
-public function RendererInterface::run(): void
-```
-
-File location: `src/Renderers/RendererInterface.php:20`
-
-### setContext()
-
-Setter for `context` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$context`|*\spaceonfire\SimplePhpApiDoc\Context*||
-|**Return**|*static*||
-
-```php
-public function RendererInterface::setContext(\spaceonfire\SimplePhpApiDoc\Context $context): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/RendererInterface.php:62`
-
-### setFs()
-
-Setter for `fs` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$fs`|*\Symfony\Component\Filesystem\Filesystem*||
-|**Return**|*static*||
-
-```php
-public function RendererInterface::setFs(\Symfony\Component\Filesystem\Filesystem $fs): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/RendererInterface.php:101`
-
-### setMethodsVisibility()
-
-Setter for `methodsVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$methodsVisibility`|*int*||
-|**Return**|*static*||
-
-```php
-public function RendererInterface::setMethodsVisibility(int $methodsVisibility): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/RendererInterface.php:140`
-
-### setOutput()
-
-Setter for `output` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$output`|*\Symfony\Component\Console\Output\OutputInterface*||
-|**Return**|*static*||
-
-```php
-public function RendererInterface::setOutput(\Symfony\Component\Console\Output\OutputInterface $output): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/RendererInterface.php:114`
-
-### setOutputDir()
-
-Setter for `outputDir` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$outputDir`|*string*||
-|**Return**|*static*||
-
-```php
-public function RendererInterface::setOutputDir(string $outputDir): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/RendererInterface.php:75`
-
-### setPropertiesVisibility()
-
-Setter for `propertiesVisibility` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$propertiesVisibility`|*int*||
-|**Return**|*static*||
-
-```php
-public function RendererInterface::setPropertiesVisibility(int $propertiesVisibility): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/RendererInterface.php:127`
-
-### setViewsDir()
-
-Setter for `viewsDir` property
-
-|Param|Type|Description|
-|---|---|---|
-|`$viewsDir`|*string*||
-|**Return**|*static*||
-
-```php
-public function RendererInterface::setViewsDir(string $viewsDir): \spaceonfire\SimplePhpApiDoc\Renderers\spaceonfire\SimplePhpApiDoc\Renderers\RendererInterface
-```
-
-File location: `src/Renderers/RendererInterface.php:88`
-
----
-
-This file automatically generated by [Simple PHP ApiDoc](https://github.com/spaceonfire/simple-php-apidoc)
\ No newline at end of file
diff --git a/ecs.php b/ecs.php
new file mode 100644
index 0000000..2874d81
--- /dev/null
+++ b/ecs.php
@@ -0,0 +1,60 @@
+parameters();
+
+ $parameters->set('sets', [
+ SetList::ARRAY,
+ SetList::CLEAN_CODE,
+ SetList::STRICT,
+ SetList::PHP_70,
+ SetList::PHP_71,
+ SetList::PSR_12,
+ ]);
+
+ $parameters->set('cache_directory', __DIR__ . '/._ecs_cache');
+
+ $parameters->set('paths', [
+ __DIR__ . '/src',
+ ]);
+
+ $parameters->set('skip', [
+ 'Unused variable $_.' => null,
+ 'Unused parameter $_.' => null,
+ 'Unused parameter $input.' => [
+ __DIR__ . '/src/Application/Console/GenerateCommand.php',
+ ],
+ 'Unused parameter $output.' => [
+ __DIR__ . '/src/Application/Console/GenerateCommand.php',
+ ],
+ 'Unused parameter $reflection.' => [
+ __DIR__ . '/src/Element/DocBlock/Resolver/AbstractDocBlockResolver.php',
+ ],
+ PhpCsFixer\Fixer\ClassNotation\ProtectedToPrivateFixer::class => [
+ __DIR__ . '/src/Application/ApiDocKernel.php',
+ ],
+ ]);
+
+ $services = $containerConfigurator->services();
+
+ $services->set(LineLengthFixer::class)
+ ->call('configure', [
+ [
+ LineLengthFixer::INLINE_SHORT_LINES => false,
+ ],
+ ]);
+ $services->set(UnusedInheritedVariablePassedToClosureSniff::class);
+ $services->set(UnusedParameterSniff::class);
+ $services->set(UnusedVariableSniff::class);
+ $services->set(YodaStyleFixer::class);
+};
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
deleted file mode 100644
index 4371886..0000000
--- a/phpcs.xml.dist
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
- The coding standard of simple-php-apidoc package
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/phpstan.neon.dist b/phpstan.neon.dist
new file mode 100755
index 0000000..1ec01d6
--- /dev/null
+++ b/phpstan.neon.dist
@@ -0,0 +1,38 @@
+# Start command: composer update --classmap-authoritative && vendor/bin/phpstan analyze
+
+includes:
+ - phar://phpstan.phar/conf/bleedingEdge.neon
+ - %rootDir%/../phpstan-webmozart-assert/extension.neon
+parameters:
+ level: max
+ inferPrivatePropertyTypeFromConstructor: true
+ paths:
+ - src/
+ bootstrapFiles:
+ - vendor/autoload.php
+ ignoreErrors:
+ - '/^Property spaceonfire\\ApiDoc\\Render\\Twig\\DumpExtension::\$dumper \(Symfony\\Component\\VarDumper\\Dumper\\AbstractDumper\) does not accept Symfony\\Component\\VarDumper\\Dumper\\DataDumperInterface\.$/'
+
+ -
+ message: '/^Access to an undefined property spaceonfire\\ApiDoc\\Element\\FunctionElement\|spaceonfire\\ApiDoc\\Element\\MethodElement::\$static.$/'
+ path: 'src/Element/Factory/FunctionLikeElementFactory.php'
+ -
+ message: '/^Access to an undefined property spaceonfire\\ApiDoc\\Element\\FunctionElement\|spaceonfire\\ApiDoc\\Element\\MethodElement::\$abstract.$/'
+ path: 'src/Element/Factory/FunctionLikeElementFactory.php'
+ -
+ message: '/^Access to an undefined property spaceonfire\\ApiDoc\\Element\\FunctionElement\|spaceonfire\\ApiDoc\\Element\\MethodElement::\$final.$/'
+ path: 'src/Element/Factory/FunctionLikeElementFactory.php'
+ -
+ message: '/^Access to an undefined property spaceonfire\\ApiDoc\\Element\\FunctionElement\|spaceonfire\\ApiDoc\\Element\\MethodElement::\$visibility.$/'
+ path: 'src/Element/Factory/FunctionLikeElementFactory.php'
+
+ # Generics errors
+ - '/^Generator expects value type spaceonfire\\ApiDoc\\Element\\FunctionElement, spaceonfire\\ApiDoc\\Element\\ElementInterface given\.$/'
+ - '/^Generator expects value type spaceonfire\\ApiDoc\\Element\\ConstantElement, spaceonfire\\ApiDoc\\Element\\ElementInterface given\.$/'
+ - '/^Property(.*)SplObjectStorage(.*)does not accept SplObjectStorage(.*)$/'
+ - '/^Cannot call method merge\(\) on(.*)spaceonfire\\Collection\\CollectionInterface(.*)$/'
+ - '/^Parameter #1 ...\$tags of method spaceonfire\\ApiDoc\\Element\\DocBlock\\Resolver\\DocBlockMerger::indexParamTags\(\) expects phpDocumentor\\Reflection\\DocBlock\\Tags\\Param, phpDocumentor\\Reflection\\DocBlock\\Tag given\.$/'
+ - '/^Parameter #1 ...\$tags of method spaceonfire\\ApiDoc\\Element\\DocBlock\\Resolver\\DocBlockMerger::indexMethodTags\(\) expects phpDocumentor\\Reflection\\DocBlock\\Tags\\Method, phpDocumentor\\Reflection\\DocBlock\\Tag given\.$/'
+ - '/^Parameter #1 ...\$tags of method spaceonfire\\ApiDoc\\Element\\DocBlock\\Resolver\\DocBlockMerger::indexPropertyTags\(\) expects phpDocumentor\\Reflection\\DocBlock\\Tags\\Property(.*), phpDocumentor\\Reflection\\DocBlock\\Tag given\.$/'
+
+ - '/^Access to an undefined property spaceonfire\\ApiDoc\\Element\\ElementInterface::\$name\.$/'
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
old mode 100644
new mode 100755
index 6d40357..eadce45
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -1,14 +1,16 @@
-
+
tests
@@ -20,9 +22,9 @@
-
-
-
-
+
+
+
+
diff --git a/resources/languages/en.php b/resources/languages/en.php
new file mode 100644
index 0000000..72c899c
--- /dev/null
+++ b/resources/languages/en.php
@@ -0,0 +1,59 @@
+ 'Class',
+ 'class' => 'class',
+ 'Full class name' => 'Full name',
+ 'Parent class name' => 'Parent class name',
+ 'This class implements' => 'This class implements',
+ 'This class uses' => 'This class uses',
+ 'Class members' => 'Class members',
+ 'Name' => 'Name',
+ 'Type' => 'Type',
+ 'Summary' => 'Summary',
+ 'Additional' => 'Additional',
+ 'Constants' => 'Constants',
+ 'Properties' => 'Properties',
+ 'Methods' => 'Methods',
+ 'constant' => 'constant',
+ 'Visibility' => 'Visibility',
+ 'Value' => 'Value',
+ 'property' => 'property',
+ 'Static' => 'Static',
+ 'Yes' => 'Yes',
+ 'No' => 'No',
+ 'Default value' => 'Default value',
+ 'none' => 'none',
+ 'method' => 'method',
+ 'Param' => 'Param',
+ 'Reference' => 'Reference',
+ 'Description' => 'Description',
+ 'Return' => 'Return',
+ 'Throws' => 'Throws',
+ 'This file automatically generated by' => 'This file automatically generated by',
+ 'File location' => 'File location',
+ 'Deprecated functionality' => 'Deprecated functionality',
+ '**Warning:** this %type% is *deprecated*.' => '**Warning:** this %type% is *deprecated*.',
+ 'This means it will likely be removed in a future major version.' => 'This means it will likely be removed in a future major version.',
+ 'Abstract method' => 'Abstract method',
+ 'Final method' => 'Final method',
+ 'Static element' => 'Static element',
+ 'Abstract element' => 'Abstract element',
+ 'Final element' => 'Final element',
+ 'Links' => 'Links',
+ 'Examples' => 'Examples',
+ 'functions' => 'functions',
+ 'constants' => 'constants',
+ 'Interface' => 'Interface',
+ 'interface' => 'interface',
+ 'This interface extends' => 'This interface extends',
+ 'API documentation' => 'API documentation',
+ 'Trait' => 'Trait',
+ 'trait' => 'trait',
+ 'This trait uses' => 'This trait uses',
+ 'Traits' => 'Traits',
+ 'Interfaces' => 'Interfaces',
+ 'Classes' => 'Classes',
+];
diff --git a/resources/languages/ru.php b/resources/languages/ru.php
new file mode 100644
index 0000000..ff4f0e5
--- /dev/null
+++ b/resources/languages/ru.php
@@ -0,0 +1,61 @@
+ 'Класс',
+ 'class' => 'класс',
+ 'Full class name' => 'Полное имя класса',
+ 'Parent class name' => 'Имя родительского класса',
+ 'This class implements' => 'Данный класс реализует интерфейс(ы)',
+ 'This class uses' => 'Данный класс использует трейт(ы)',
+ 'Class members' => 'Члены класса',
+ 'Name' => 'Имя',
+ 'Type' => 'Тип',
+ 'Summary' => 'Резюме',
+ 'Additional' => 'Дополнительно',
+ 'Constants' => 'Константы',
+ 'Properties' => 'Свойства',
+ 'Magic properties' => 'Магические свойства',
+ 'Methods' => 'Методы',
+ 'Magic methods' => 'Магические методы',
+ 'constant' => 'константа',
+ 'Visibility' => 'Область видимости',
+ 'Value' => 'Значение',
+ 'property' => 'свойство',
+ 'Static' => 'Статический',
+ 'Yes' => 'Да',
+ 'No' => 'Нет',
+ 'Default value' => 'Значение по-умолчанию',
+ 'none' => 'отсутствует',
+ 'method' => 'метод',
+ 'Param' => 'Параметр',
+ 'Reference' => 'Передача по ссылке',
+ 'Description' => 'Описание',
+ 'Return' => 'Возвращаемое значение',
+ 'Throws' => 'Исключение',
+ 'This file automatically generated by' => 'Данный файл сгенерирован автоматически',
+ 'File location' => 'Расположение в файле',
+ 'Deprecated functionality' => 'Устаревшая функциональность',
+ '**Warning:** this %type% is *deprecated*.' => '**Внимание:** данный %type% помечен как *устаревший*.',
+ 'This means it will likely be removed in a future major version.' => 'Это значит, что он, вероятно, будет удален в будущей мажорной версии.',
+ 'Abstract method' => 'Абстрактный метод',
+ 'Final method' => 'Окончательный (final) метод',
+ 'Static element' => 'Статический элемент',
+ 'Abstract element' => 'Абстрактный элемент',
+ 'Final element' => 'Окончательный (final) элемент',
+ 'Links' => 'Ссылки',
+ 'Examples' => 'Примеры',
+ 'functions' => 'функции',
+ 'constants' => 'константы',
+ 'Interface' => 'Интерфейс',
+ 'interface' => 'интерфейс',
+ 'This interface extends' => 'Данный интерфейс расширяет',
+ 'API documentation' => 'документация API',
+ 'Trait' => 'Трейт',
+ 'trait' => 'трейт',
+ 'This trait uses' => 'Данный трейт использует другие трейт(ы)',
+ 'Traits' => 'Трейты',
+ 'Interfaces' => 'Интерфейсы',
+ 'Classes' => 'Классы',
+];
diff --git a/resources/views/_class_macros.md.twig b/resources/views/_class_macros.md.twig
new file mode 100644
index 0000000..deb5f46
--- /dev/null
+++ b/resources/views/_class_macros.md.twig
@@ -0,0 +1,136 @@
+{%- macro class_properties(class_like_element, property = 'properties', heading_level = 2, title = null) -%}
+ {%- from '_macros.md.twig' import anchor, deprecated, type, signatrure, examples_list, links_list, location -%}
+ {%- set properties = attribute(class_like_element, property) -%}
+
+ {%- if properties|length > 0 %}
+
+
+ {{~ (title ?? 'Properties'|trans)|md_heading(heading_level) }}
+ {%- for property in properties %}
+
+
+ {{~ anchor(property.name) }}
+ {{~ property.name.withoutClassName|md_heading(heading_level + 1) }}
+ {{- deprecated(property.deprecated, 'property'|trans) }}
+ {%- if property.summary is not empty %}
+
+
+ {{~ property.summary }}
+ {%- endif %}
+ {%- if property.description is not empty %}
+
+
+ {{~ property.description }}
+ {%- endif %}
+
+
+ {{~ '- ' ~ 'Visibility'|trans|md_bold ~ ': ' ~ property.visibility }}
+ {{~ '- ' ~ 'Static'|trans|md_bold ~ ': ' ~ (property.static ? 'Yes'|trans : 'No'|trans) }}
+ {{~ '- ' ~ 'Type'|trans|md_bold ~ ': ' ~ type(property.type, 'mixed') }}
+ {{~ '- ' ~ 'Default value'|trans|md_bold ~ ': ' ~ (property.defaultValue ? property.defaultValue.value|export|md_oneline|md_code : 'none'|trans) }}
+
+ {{- signatrure(property) }}
+ {{- examples_list(property.examples) }}
+ {{- links_list(property.links, class_like_element) }}
+ {{- location(property.location) }}
+ {%- endfor -%}
+ {%- endif -%}
+{%- endmacro -%}
+
+{%- macro class_members_table(element) -%}
+ {%- import '_macros.md.twig' as macros %}
+
+
+ {{~ 'Class members'|trans|md_heading(2) }}
+
+ {{~ ['Name'|trans, 'Type'|trans, 'Summary'|trans, 'Additional'|trans]|md_table_row }}
+ {{~ ['----', '----', '-------', '----------']|md_table_row }}
+ {%- if element.constants is defined and element.constants|length > 0 %}
+
+ {{~ ['Constants'|trans|md_italic, '', '', '']|md_table_row }}
+ {%- for constant in element.constants %}
+
+ {{~ [
+ constant.name.withoutClassName|md_link('#' ~ anchor(constant.name)),
+ '',
+ constant.summary,
+ [
+ macros.visibility_emoji(constant.visibility),
+ macros.deprecated_emoji(constant.deprecated),
+ ]|join(' '),
+ ]|md_table_row }}
+ {%- endfor -%}
+ {%- endif -%}
+ {%- if element.properties is defined and element.properties|length > 0 %}
+
+ {{~ ['Properties'|trans|md_italic, '', '', '']|md_table_row }}
+ {%- for property in element.properties %}
+
+ {{~ [
+ property.name.withoutClassName|md_link('#' ~ anchor(property.name)),
+ macros.type(property.type, 'mixed'),
+ property.summary,
+ [
+ macros.static_emoji(property.static),
+ macros.visibility_emoji(property.visibility),
+ macros.deprecated_emoji(property.deprecated),
+ ]|join(' '),
+ ]|md_table_row }}
+ {%- endfor -%}
+ {%- endif -%}
+ {%- if element.magicProperties is defined and element.magicProperties|length > 0 %}
+
+ {{~ ['Magic properties'|trans|md_italic, '', '', '']|md_table_row }}
+ {%- for magicProperty in element.magicProperties %}
+
+ {{~ [
+ magicProperty.name.withoutClassName|md_link('#' ~ anchor(magicProperty.name)),
+ macros.type(magicProperty.type, 'mixed'),
+ magicProperty.summary,
+ [
+ macros.static_emoji(magicProperty.static),
+ macros.visibility_emoji(magicProperty.visibility),
+ macros.deprecated_emoji(magicProperty.deprecated),
+ ]|join(' '),
+ ]|md_table_row }}
+ {%- endfor -%}
+ {%- endif -%}
+ {%- if element.methods is defined and element.methods|length > 0 %}
+
+ {{~ ['Methods'|trans|md_italic, '', '', '']|md_table_row }}
+ {%- for method in element.methods %}
+
+ {{~ [
+ method.name.withoutClassName|md_link('#' ~ anchor(method.name)),
+ method.return ? macros.type(method.return.type, 'void') : '',
+ method.summary,
+ [
+ macros.final_emoji(method.final),
+ macros.abstract_emoji(method.abstract),
+ macros.static_emoji(method.static),
+ macros.visibility_emoji(method.visibility),
+ macros.deprecated_emoji(method.deprecated),
+ ]|join(' '),
+ ]|md_table_row }}
+ {%- endfor -%}
+ {%- endif -%}
+ {%- if element.magicMethods is defined and element.magicMethods|length > 0 %}
+
+ {{~ ['Magic methods'|trans|md_italic, '', '', '']|md_table_row }}
+ {%- for magicMethod in element.magicMethods %}
+
+ {{~ [
+ magicMethod.name.withoutClassName|md_link('#' ~ anchor(magicMethod.name)),
+ magicMethod.return ? macros.type(magicMethod.return.type, 'void') : '',
+ magicMethod.summary,
+ [
+ macros.final_emoji(magicMethod.final),
+ macros.abstract_emoji(magicMethod.abstract),
+ macros.static_emoji(magicMethod.static),
+ macros.visibility_emoji(magicMethod.visibility),
+ macros.deprecated_emoji(magicMethod.deprecated),
+ ]|join(' '),
+ ]|md_table_row }}
+ {%- endfor -%}
+ {%- endif -%}
+{%- endmacro -%}
diff --git a/resources/views/_constant_macros.md.twig b/resources/views/_constant_macros.md.twig
new file mode 100644
index 0000000..c017fde
--- /dev/null
+++ b/resources/views/_constant_macros.md.twig
@@ -0,0 +1,41 @@
+{%- macro class_constants(class_like_element, property = 'constants', heading_level = 2, title = null) -%}
+ {%- set constants = attribute(class_like_element, property) -%}
+
+ {%- if constants|length > 0 %}
+
+
+ {{~ (title ?? 'Constants'|trans)|md_heading(heading_level) }}
+ {%- for constant in constants %}
+
+
+ {{~ _self.constant(constant, class_like_element, heading_level + 1) }}
+ {%- endfor -%}
+ {%- endif -%}
+{%- endmacro -%}
+
+{%- macro constant(constant, current_fqsen, heading_level) -%}
+ {%- from '_macros.md.twig' import anchor, deprecated, examples_list, links_list, location -%}
+ {{~ anchor(constant.name) }}
+ {{~ (constant.name.prefixedWithClassName ? constant.name.withoutClassName : constant.name)|md_heading(heading_level) }}
+ {{- deprecated(constant.deprecated, 'constant'|trans) }}
+ {%- if constant.summary is not empty %}
+
+
+ {{~ constant.summary }}
+ {%- endif %}
+ {%- if constant.description is not empty %}
+
+
+ {{~ constant.description }}
+ {%- endif %}
+
+
+ {%~ if constant.visibility is not empty %}
+ {{~ '- ' ~ 'Visibility'|trans|md_bold ~ ': ' ~ constant.visibility }}
+ {%- endif %}
+
+ {{~ '- ' ~ 'Value'|trans|md_bold ~ ': ' ~ constant.value.value|export|md_oneline|md_code }}
+ {{- examples_list(constant.examples) }}
+ {{- links_list(constant.links, current_fqsen) }}
+ {{- location(constant.location) }}
+{%- endmacro -%}
diff --git a/resources/views/_function_macros.md.twig b/resources/views/_function_macros.md.twig
new file mode 100644
index 0000000..000638c
--- /dev/null
+++ b/resources/views/_function_macros.md.twig
@@ -0,0 +1,98 @@
+{%- macro class_methods(class_like_element, property = 'methods', heading_level = 2, title = null) -%}
+ {%- set methods = attribute(class_like_element, property) -%}
+
+ {%- if methods|length > 0 %}
+
+
+ {{~ (title ?? 'Methods'|trans)|md_heading(heading_level) }}
+ {%- for method in methods %}
+
+
+ {{~ _self.function(method, class_like_element, heading_level + 1, 'method') }}
+ {%- endfor -%}
+ {%- endif -%}
+{%- endmacro -%}
+
+{%- macro function(function, current_fqsen, heading_level, deprecated_type = 'function') -%}
+ {%- from '_macros.md.twig' import anchor, deprecated, type, signatrure, examples_list, links_list, location -%}
+ {{~ anchor(function.name) }}
+ {{~ ((function.name.prefixedWithClassName ? function.name.withoutClassName : function.name) ~ '()')|md_heading(heading_level) }}
+ {{- deprecated(function.deprecated, deprecated_type|trans) }}
+ {%- if function.summary is not empty %}
+
+
+ {{~ function.summary }}
+ {%- endif %}
+ {%- if function.description is not empty %}
+
+
+ {{~ function.description }}
+ {%- endif %}
+ {{~ '' }}
+
+ {%- if function.abstract is defined or function.final is defined or function.visibility is defined or function.static is defined %}
+ {{~ '' }}
+ {{~ '' }}
+
+ {%- if function.abstract %}
+
+ {{~ '- ' ~ 'Abstract method'|trans|md_bold ~ ': ' ~ 'Yes'|trans }}
+ {%- endif -%}
+ {%- if function.final %}
+
+ {{~ '- ' ~ 'Final method'|trans|md_bold ~ ': ' ~ 'Yes'|trans }}
+ {%- endif -%}
+ {%- if function.visibility %}
+
+ {{~ '- ' ~ 'Visibility'|trans|md_bold ~ ': ' ~ function.visibility }}
+ {%- endif -%}
+ {%- if function.static %}
+
+ {{~ '- ' ~ 'Static'|trans|md_bold ~ ': ' ~ (function.static ? 'Yes'|trans : 'No'|trans) }}
+ {%- endif -%}
+ {%- endif -%}
+
+ {{- _self.function_params_table(function) }}
+ {{- signatrure(function) }}
+ {{- examples_list(function.examples) }}
+ {{- links_list(function.links, current_fqsen) }}
+ {{- location(function.location) }}
+{%- endmacro -%}
+
+{%- macro function_params_table(function) -%}
+ {%- from '_macros.md.twig' import type -%}
+
+ {%- if function.parameters|length > 0 or function.return is not empty or function.throws|length > 0 %}
+
+
+ {{~ ['Param'|trans, 'Type'|trans, 'Reference'|trans, 'Description'|trans]|md_table_row }}
+ {{~ ['-----', '----', '---------', '-----------']|md_table_row }}
+ {%- for paramater in function.parameters %}
+
+ {{~ [
+ ((paramater.variadic ? '...' : '') ~ '$' ~ paramater.name)|md_code,
+ paramater.type ? type(paramater.type) : '',
+ paramater.passedByReference ? 'Yes'|trans : 'No'|trans,
+ paramater.description is not empty ? paramater.description : '',
+ ]|md_table_row -}}
+ {%- endfor -%}
+ {%- if function.return is not same as(null) %}
+
+ {{~ [
+ 'Return'|trans|md_bold,
+ type(function.return.type, 'void'),
+ '',
+ function.return.description is not empty ? function.return.description : '',
+ ]|md_table_row -}}
+ {%- endif -%}
+ {%- for throw in function.throws %}
+
+ {{~ [
+ 'Throws'|trans|md_bold,
+ throw.type ? type(throw.type) : '',
+ '',
+ throw.description is not empty ? throw.description : '',
+ ]|md_table_row -}}
+ {%- endfor -%}
+ {%- endif -%}
+{%- endmacro -%}
diff --git a/resources/views/_macros.md.twig b/resources/views/_macros.md.twig
new file mode 100644
index 0000000..a619faf
--- /dev/null
+++ b/resources/views/_macros.md.twig
@@ -0,0 +1,101 @@
+{%- macro location(location) -%}
+ {%- if location is not same as(null) %}
+
+
+ {{~ 'File location'|trans ~ ': ' ~ (location.filename ~ ':' ~ location.lineNumber)|md_code }}
+ {%- endif -%}
+{%- endmacro -%}
+
+{%- macro deprecated(reason, type) -%}
+ {%- if reason is not same as(false) %}
+
+
+ {{~ '**Warning:** this %type% is *deprecated*.'|trans({'%type%' : type}) }} {{
+ reason is same as(true)
+ ? 'This means it will likely be removed in a future major version.'|trans
+ : reason
+ }}
+ {%- endif -%}
+{%- endmacro -%}
+
+{%- macro anchor(name) -%}
+ {{~ '' }}
+{%- endmacro -%}
+
+{%- macro type(type, default = null) -%}
+ {{~ type or default ? (type ?? default)|md_italic : '' }}
+{%- endmacro -%}
+
+{%- macro visibility_emoji(visibility, anchor = '') -%}
+ {%- if visibility == 'private' -%}
+ {{~ '🔒'|md_link('#' ~ anchor, 'Visibility'|trans ~ ': ' ~ 'private') }}
+ {%- elseif visibility == 'protected' -%}
+ {{~ '🛡'|md_link('#' ~ anchor, 'Visibility'|trans ~ ': ' ~ 'protected') }}
+ {%- else -%}
+ {{~ '📢'|md_link('#' ~ anchor, 'Visibility'|trans ~ ': ' ~ 'public') }}
+ {%- endif -%}
+{%- endmacro -%}
+
+{%- macro deprecated_emoji(reason, anchor = '') -%}
+ {% if reason is not same as(false) -%}
+ {{~ '⚠'|md_link('#' ~ anchor, 'Deprecated functionality'|trans) }}
+ {%- endif -%}
+{%- endmacro -%}
+
+{%- macro static_emoji(show, anchor = '') -%}
+ {% if show -%}
+ {{~ '🇸'|md_link('#' ~ anchor, 'Static element'|trans) }}
+ {%- endif -%}
+{%- endmacro -%}
+
+{%- macro abstract_emoji(show, anchor = '') -%}
+ {% if show -%}
+ {{~ '🇦'|md_link('#' ~ anchor, 'Abstract element'|trans) }}
+ {%- endif -%}
+{%- endmacro -%}
+
+{%- macro final_emoji(show, anchor = '') -%}
+ {% if show -%}
+ {{~ '📌'|md_link('#' ~ anchor, 'Final element'|trans) }}
+ {%- endif -%}
+{%- endmacro -%}
+
+{%- macro signatrure(element) -%}
+ {%- set signature = signature(element) -%}
+ {%- if signature is not same as(null) %}
+
+
+ {{~ signature|md_pre(signature.language ?? '') }}
+ {%- endif -%}
+{%- endmacro -%}
+
+{%- macro links_list(links, from = null) -%}
+ {%- if links|length > 0 %}
+
+
+ {{~ 'Links'|trans|md_bold ~ ':' }}
+ {%~ for link in links %}
+
+ {{~ '- ' ~ link.text|md_link(resolve_link(link, from)) ~ (link.description ? ': ' ~ link.description : '') }}
+ {%- endfor -%}
+ {%- endif -%}
+{%- endmacro -%}
+
+{%- macro examples_list(examples) -%}
+ {%- if examples|length > 0 %}
+
+
+ {{~ 'Examples'|trans|md_bold ~ ':' }}
+ {%- for example in examples %}
+ {%- set snippet = example_code_snippet(example) %}
+
+
+ {{~ '- ' ~ (example.uri ? example.uri|md_link(example.uri) : example.filePath|md_code) ~ (example.description ? ': ' ~ example.description : '') }}
+ {%- if snippet is not empty %}
+
+
+ {{~ snippet|md_pre(snippet.language ?? '') }}
+ {%- endif -%}
+ {%- endfor -%}
+ {%- endif -%}
+{%- endmacro -%}
diff --git a/resources/views/class.md.twig b/resources/views/class.md.twig
new file mode 100644
index 0000000..1120dac
--- /dev/null
+++ b/resources/views/class.md.twig
@@ -0,0 +1,57 @@
+{%- extends 'class_like_element.md.twig' -%}
+
+{%- import '_macros.md.twig' as macros -%}
+
+{% block element_header %}
+{{- ('Class'|trans ~ ' ' ~ element.name.shortName)|md_heading }}
+{{- macros.deprecated(element.deprecated, 'class'|trans) }}
+{%- if element.summary is not empty %}
+
+
+ {{~ element.summary }}
+{%- endif %}
+{%- if element.description is not empty %}
+
+
+ {{~ element.description }}
+{%- endif %}
+
+
+{{~ 'Full class name'|trans ~ ': ' ~ element.name|md_code }}
+{%- if element.parent is not same as(null) %}
+
+
+ {{~ 'Parent class name'|trans ~ ': ' ~ element.parent.name|md_code }}
+{%- endif %}
+{%- if element.interfaces|length > 0 %}
+ {%- if element.interfaces|length > 1 %}
+
+
+ {{~ 'This class implements'|trans ~ ':' }}
+ {%~ for interface in element.interfaces %}
+
+ {{~ '- ' ~ interface.name|md_code }}
+ {%- endfor -%}
+ {%- else %}
+
+
+ {{~ 'This class implements'|trans ~ ': ' ~ (element.interfaces|first).name|md_code }}
+ {%- endif -%}
+{%- endif %}
+{%- if element.traits|length > 0 %}
+ {%- if element.traits|length > 1 %}
+
+
+ {{~ 'This class uses'|trans ~ ':' }}
+ {%~ for trait in element.traits %}
+
+ {{~ '- ' ~ trait.name|md_code }}
+ {%- endfor -%}
+ {%- else %}
+
+
+ {{~ 'This class uses'|trans ~ ': ' ~ (element.traits|first).name|md_code }}
+ {%- endif -%}
+{%- endif %}
+{{- macros.examples_list(element.examples) -}}
+{% endblock %}
diff --git a/resources/views/class_like_element.md.twig b/resources/views/class_like_element.md.twig
new file mode 100644
index 0000000..e3da4b9
--- /dev/null
+++ b/resources/views/class_like_element.md.twig
@@ -0,0 +1,16 @@
+{%- extends 'layout.md.twig' -%}
+
+{%- import '_macros.md.twig' as macros -%}
+{%- from '_class_macros.md.twig' import class_members_table, class_properties -%}
+{%- from '_constant_macros.md.twig' import class_constants -%}
+{%- from '_function_macros.md.twig' import class_methods -%}
+
+{% block main %}
+{%- block element_header '' -%}
+{{- class_members_table(element) }}
+{{- class_constants(element) }}
+{{- class_properties(element) }}
+{{- class_properties(element, 'magicProperties', 2, 'Magic properties'|trans) }}
+{{- class_methods(element) }}
+{{- class_methods(element, 'magicMethods', 2, 'Magic methods'|trans) }}
+{% endblock %}
diff --git a/resources/views/constants.md.twig b/resources/views/constants.md.twig
new file mode 100644
index 0000000..95fe1de
--- /dev/null
+++ b/resources/views/constants.md.twig
@@ -0,0 +1,13 @@
+{%- extends 'layout.md.twig' -%}
+
+{%- from '_constant_macros.md.twig' import constant -%}
+
+{% block main %}
+{{- (project_name ~ ' ' ~ 'constants'|trans)|md_heading }}
+{%- for constant in element %}
+
+
+ {{~ constant(constant, current_fqsen, 2) }}
+{%- endfor %}
+
+{% endblock %}
diff --git a/resources/views/functions.md.twig b/resources/views/functions.md.twig
new file mode 100644
index 0000000..2ffd9d0
--- /dev/null
+++ b/resources/views/functions.md.twig
@@ -0,0 +1,13 @@
+{%- extends 'layout.md.twig' -%}
+
+{%- from '_function_macros.md.twig' import function -%}
+
+{% block main %}
+{{- (project_name ~ ' ' ~ 'functions'|trans)|md_heading }}
+{%- for function in element %}
+
+
+ {{~ function(function, current_fqsen, 2) }}
+{%- endfor %}
+
+{% endblock %}
diff --git a/resources/views/interface.md.twig b/resources/views/interface.md.twig
new file mode 100644
index 0000000..7cf7969
--- /dev/null
+++ b/resources/views/interface.md.twig
@@ -0,0 +1,37 @@
+{%- extends 'class_like_element.md.twig' -%}
+
+{%- import '_macros.md.twig' as macros -%}
+
+{% block element_header %}
+{{- ('Interface'|trans ~ ' ' ~ element.name.shortName)|md_heading }}
+{{- macros.deprecated(element.deprecated, 'interface'|trans) }}
+{%- if element.summary is not empty %}
+
+
+ {{~ element.summary }}
+{%- endif %}
+{%- if element.description is not empty %}
+
+
+ {{~ element.description }}
+{%- endif %}
+
+
+{{~ 'Full class name'|trans ~ ': ' ~ element.name|md_code }}
+{%- if element.parents|length > 0 %}
+ {%- if element.parents|length > 1 %}
+
+
+ {{~ 'This interface extends'|trans ~ ':' }}
+ {%~ for parent in element.parents %}
+
+ {{~ '- ' ~ parent.name|md_code }}
+ {%- endfor -%}
+ {%- else %}
+
+
+ {{~ 'This interface extends'|trans ~ ': ' ~ (element.parents|first).name|md_code }}
+ {%- endif -%}
+{%- endif %}
+{{- macros.examples_list(element.examples) -}}
+{% endblock %}
diff --git a/resources/views/layout.md.twig b/resources/views/layout.md.twig
new file mode 100644
index 0000000..6f8e933
--- /dev/null
+++ b/resources/views/layout.md.twig
@@ -0,0 +1,5 @@
+{% block main '' %}
+
+---
+
+{{ 'This file automatically generated by'|trans ~ ' ' ~ 'SpaceOnFire ApiDoc'|md_link('https://github.com/spaceonfire/apidoc') }}
diff --git a/resources/views/toc.md.twig b/resources/views/toc.md.twig
new file mode 100644
index 0000000..a4b1a4c
--- /dev/null
+++ b/resources/views/toc.md.twig
@@ -0,0 +1,21 @@
+{%- extends 'layout.md.twig' -%}
+
+{%- import '_macros.md.twig' as macros -%}
+
+{% block main %}
+{{- (project_name ~ ' ' ~ 'API documentation'|trans)|md_heading }}
+{{~ '' }}
+{%- for namespace, groups in element %}
+
+ {{~ '- ' ~ namespace }}
+ {%- for type, links in groups %}
+
+ {{~ ('- ' ~ type|trans)|md_indent(4) }}
+ {%- for link in links %}
+
+ {{~ ('- ' ~ link.text|md_link(resolve_link(link, current_fqsen)))|md_indent(8) }}
+ {%- endfor -%}
+ {%- endfor -%}
+{%- endfor -%}
+{{~ '' }}
+{% endblock %}
diff --git a/resources/views/trait.md.twig b/resources/views/trait.md.twig
new file mode 100644
index 0000000..b1a661d
--- /dev/null
+++ b/resources/views/trait.md.twig
@@ -0,0 +1,37 @@
+{%- extends 'class_like_element.md.twig' -%}
+
+{%- import '_macros.md.twig' as macros -%}
+
+{% block element_header %}
+{{- ('Trait'|trans ~ ' ' ~ element.name.shortName)|md_heading }}
+{{- macros.deprecated(element.deprecated, 'trait'|trans) }}
+{%- if element.summary is not empty %}
+
+
+ {{~ element.summary }}
+{%- endif %}
+{%- if element.description is not empty %}
+
+
+ {{~ element.description }}
+{%- endif %}
+
+
+{{~ 'Full class name'|trans ~ ': ' ~ element.name|md_code }}
+{%- if element.parents|length > 0 %}
+ {%- if element.parents|length > 1 %}
+
+
+ {{~ 'This trait uses'|trans ~ ':' }}
+ {%~ for parent in element.parents %}
+
+ {{~ '- ' ~ parent.name|md_code }}
+ {%- endfor -%}
+ {%- else %}
+
+
+ {{~ 'This trait uses'|trans ~ ': ' ~ (element.parents|first).name|md_code }}
+ {%- endif -%}
+{%- endif %}
+{{- macros.examples_list(element.examples) -}}
+{% endblock %}
diff --git a/scoper.inc.php b/scoper.inc.php
new file mode 100644
index 0000000..ec9ae88
--- /dev/null
+++ b/scoper.inc.php
@@ -0,0 +1,58 @@
+append(
+ Finder::create()
+ ->files()
+ ->in(__DIR__ . '/vendor/symfony/polyfill-*')
+ ->name('bootstrap.php')
+);
+
+// Exclude PhpStorm Stub files from prefixing
+$whitelistFiles->append(
+ Finder::create()
+ ->files()
+ ->in(__DIR__ . '/vendor/jetbrains/phpstorm-stubs/')
+ ->name('*.php')
+);
+
+return [
+ 'whitelist' => [
+ 'spaceonfire\\ApiDoc\\*',
+ 'Symfony\\Polyfill\\*',
+ 'JetBrains\\PHPStormStub\\*',
+ 'Twig\\*',
+ ],
+ 'files-whitelist' => array_map(
+ static function ($file) {
+ return $file->getPathName();
+ },
+ iterator_to_array($whitelistFiles)
+ ),
+ 'patchers' => [
+ function (string $filePath, string $prefix, string $content): string {
+ $files = [
+ 'src/Config/Processor/ComposerJsonProcessor.php',
+ 'src/Config/Config.php',
+ 'vendor/laminas/laminas-zendframework-bridge/src/Autoloader.php',
+ 'vendor/roave/better-reflection/src/SourceLocator/Type/ComposerSourceLocator.php',
+ ];
+
+ if (!in_array($filePath, $files, true)) {
+ return $content;
+ }
+
+ return str_replace(
+ $prefix . '\\Composer\\Autoload\\ClassLoader',
+ 'Composer\\Autoload\\ClassLoader',
+ $content
+ );
+ },
+ ],
+];
diff --git a/src/Application/ApiDocKernel.php b/src/Application/ApiDocKernel.php
new file mode 100644
index 0000000..61fed1d
--- /dev/null
+++ b/src/Application/ApiDocKernel.php
@@ -0,0 +1,128 @@
+debugModeEnabled = $debugModeEnabled;
+
+ $this->container = new CompositeContainer([
+ 50 => new Container(),
+ 100 => new ReflectionContainer(),
+ ]);
+
+ $this->container->add(PsrContainerInterface::class, ContainerInterface::class);
+ $this->container->add(ContainerInterface::class, [$this, 'getContainer']);
+
+ $this->container->share(self::class, $this);
+ $this->container->add('kernel.debug', [$this, 'isDebugModeEnabled']);
+
+ foreach ($this->loadServiceProviders() as $serviceProvider) {
+ $this->container->addServiceProvider($serviceProvider);
+ }
+ }
+
+ /**
+ * @return string[]|ServiceProviderInterface[]
+ */
+ protected function loadServiceProviders(): iterable
+ {
+ yield ServiceProviders\ConsoleCommandsProvider::class;
+ yield ServiceProviders\ConfigProvider::class;
+ yield ServiceProviders\DocBlockResolverProvider::class;
+ yield ServiceProviders\TypeFactoryProvider::class;
+ yield ServiceProviders\ElementFactoryProvider::class;
+ yield ServiceProviders\LinkServiceProvider::class;
+ yield ServiceProviders\SignatureRendererProvider::class;
+ yield ServiceProviders\TranslatorProvider::class;
+ yield ServiceProviders\DefaultRendererProvider::class;
+ yield ServiceProviders\DefaultApiDocGeneratorProvider::class;
+ yield ServiceProviders\FallbackBetterReflectionProvider::class;
+ }
+
+ /**
+ * Returns the container
+ * @return CompositeContainer
+ */
+ public function getContainer(): CompositeContainer
+ {
+ return $this->container;
+ }
+
+ /**
+ * Running debug mode?
+ * @return bool
+ */
+ public function isDebugModeEnabled(): bool
+ {
+ return $this->debugModeEnabled;
+ }
+
+ /**
+ * Configure symfony/console application
+ * @param ConsoleApplication $app
+ * @param ConsoleInput\InputInterface $input
+ * @param ConsoleOutput\OutputInterface $output
+ */
+ public function configureConsoleApplication(
+ ConsoleApplication $app,
+ ConsoleInput\InputInterface $input,
+ ConsoleOutput\OutputInterface $output
+ ): void {
+ if (\PHP_SAPI !== 'cli') {
+ // TODO: trigger error
+ return;
+ }
+
+ // Register console I/O first, which can be used as dependencies of some command (logger for example)
+ $this->container->share(ConsoleInput\InputInterface::class, $input);
+ $this->container->share(ConsoleOutput\OutputInterface::class, $output);
+
+ $this->determineDebugModeFromConsoleInput($input);
+
+ $commands = $this->container->getTagged(DefinitionTag::CONSOLE_COMMAND);
+
+ foreach ($commands as $command) {
+ $app->add($command);
+ }
+ }
+
+ private function determineDebugModeFromConsoleInput(ConsoleInput\InputInterface $input): void
+ {
+ // Debug option defined and bool(true) value
+ if ($input->hasParameterOption('--debug', true)) {
+ $this->debugModeEnabled = true;
+ return;
+ }
+
+ // Verbosity level set to 3+
+ if ($input->hasParameterOption('-vvv', true)) {
+ $this->debugModeEnabled = true;
+ return;
+ }
+ }
+}
diff --git a/src/Application/Console/GenerateCommand.php b/src/Application/Console/GenerateCommand.php
new file mode 100644
index 0000000..66721ee
--- /dev/null
+++ b/src/Application/Console/GenerateCommand.php
@@ -0,0 +1,65 @@
+kernel = $kernel;
+
+ parent::__construct($name);
+ }
+
+ /**
+ * @inheritDoc
+ */
+ protected function configure(): void
+ {
+ ConsoleInputProcessor::configureCommand($this);
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output): int
+ {
+ $config = $this->kernel->getContainer()->get(Config::class);
+
+ $projectFactory = $this->kernel->getContainer()->get(ProjectFactory::class);
+ $project = $projectFactory->make($config);
+
+ $generator = $this->kernel->getContainer()->get(GeneratorInterface::class);
+ $persister = $this->kernel->getContainer()->get(PersisterInterface::class);
+
+ $files = $generator->generate($project);
+
+ // Do not write to filesystem before all files generated
+ if ($files instanceof Traversable) {
+ $files = iterator_to_array($files);
+ }
+
+ foreach ($files as $file) {
+ $persister->persist($file);
+ }
+
+ return 0;
+ }
+}
diff --git a/src/Application/ServiceProviders/ConfigProvider.php b/src/Application/ServiceProviders/ConfigProvider.php
new file mode 100644
index 0000000..e101e2b
--- /dev/null
+++ b/src/Application/ServiceProviders/ConfigProvider.php
@@ -0,0 +1,289 @@
+getContainer()->share(Config::class, [$this, 'makeConfig']);
+
+ $this->getContainer()->add(FileNameStrategyInterface::class, FileNameStrategy::class);
+ $this->getContainer()->add(PersisterInterface::class, LocalFilesystemPersister::class);
+
+ $this->getContainer()->share(PhpParser::class, [$this, 'makePhpParser']);
+ $this->getContainer()->share(BetterReflection::class, [$this, 'makeBetterReflection']);
+ $this->getContainer()->share(SourceLocator::class, [$this, 'makeSourceLocator']);
+ $this->getContainer()->share(ClassReflector::class, [$this, 'makeClassReflector']);
+ $this->getContainer()->share(FunctionReflector::class, [$this, 'makeFunctionReflector']);
+ $this->getContainer()->share(ConstantReflector::class, [$this, 'makeConstantReflector']);
+ $this->getContainer()->share(FileNameStrategy::class, [$this, 'makeFilenameStrategy']);
+ $this->getContainer()->share(LocalFilesystemPersister::class, [$this, 'makePersister']);
+ $this->getContainer()->share(TwigEnvironment::class, [$this, 'makeTwig']);
+ $this->getContainer()->share(ExampleCodeSnippetResolver::class, [$this, 'makeExampleCodeSnippetResolver']);
+ $this->getContainer()->share(LocationFactory::class, [$this, 'makeLocationFactory']);
+ $this->getContainer()->share(ClassMembersVisibilityFilter::class, [$this, 'makeClassMembersVisibilityFilter']);
+ }
+
+ public function makeConfig(): Config
+ {
+ $config = new Config();
+
+ foreach ($this->makeConfigProcessors() as $processor) {
+ $processor->process($config);
+ }
+
+ // TODO: validate config
+
+ return $config;
+ }
+
+ /**
+ * @return \Generator|ProcessorInterface[]
+ */
+ private function makeConfigProcessors(): \Generator
+ {
+ yield new DefaultsProcessor($this->getContainer()->get('kernel.debug'));
+
+ $input = $this->getContainer()->has(InputInterface::class)
+ ? $this->getContainer()->get(InputInterface::class)
+ : null;
+
+ if (null !== $composerJsonFile = $this->findComposerJsonFile()) {
+ yield new ComposerJsonProcessor($composerJsonFile);
+ }
+
+ if (null !== $configFile = $this->findConfigFile($input)) {
+ yield new ConfigFileProcessor($configFile);
+ }
+
+ if (null !== $input) {
+ yield new ConsoleInputProcessor($input);
+ }
+ }
+
+ private function findConfigFile(?InputInterface $input): ?string
+ {
+ /** @var string|null $configFile */
+ $configFile = $input && $input->hasOption('config')
+ ? $input->getOption('config')
+ : null;
+
+ $configFile = realpath($configFile ?? ConfigFileProcessor::DEFAULT_CONFIG_FILENAME);
+
+ return $configFile ?: null;
+ }
+
+ private function findComposerJsonFile(): ?string
+ {
+ $composerJson = realpath(getcwd() . DIRECTORY_SEPARATOR . 'composer.json');
+
+ if (false !== $composerJson) {
+ return $composerJson;
+ }
+
+ return null;
+ }
+
+ public function makePhpParser(Config $config): PhpParser
+ {
+ return new MemoizingParser(
+ (new ParserFactory())->create(ParserFactory::PREFER_PHP7, new Emulative([
+ 'phpVersion' => $config->phpVersion,
+ 'usedAttributes' => ['comments', 'startLine', 'endLine', 'startFilePos', 'endFilePos'],
+ ]))
+ );
+ }
+
+ public function makeBetterReflection(PhpParser $phpParser): BetterReflection
+ {
+ $betterReflection = new BetterReflection();
+
+ (function ($betterReflection) use ($phpParser): void {
+ $betterReflection->phpParser = $phpParser;
+ })->bindTo($betterReflection, BetterReflection::class)($betterReflection);
+
+ return $betterReflection;
+ }
+
+ public function makeSourceLocator(Config $config, BetterReflection $betterReflection): SourceLocator
+ {
+ $astLocator = $betterReflection->astLocator();
+ $sourceStubber = $betterReflection->sourceStubber();
+
+ $locators = [];
+ $locators[] = new PhpInternalSourceLocator($astLocator, $sourceStubber);
+
+ if (null !== $config->composerClassLoader) {
+ $locators[] = new ComposerSourceLocator($config->composerClassLoader, $astLocator);
+ }
+
+ $locators[] = new AutoloadSourceLocator($astLocator, $betterReflection->phpParser());
+
+ // TODO: directories source locator is slow. We need to try to speedup or cache it.
+ $locators[] = new DirectoriesSourceLocator(
+ array_unique(array_merge($config->sourceDirectories, $config->scanDirectories)),
+ $astLocator
+ );
+
+ if (count($config->scanFiles) > 0) {
+ foreach ($config->scanFiles as $file) {
+ $locators[] = new SingleFileSourceLocator($file, $astLocator);
+ }
+ }
+
+ return new MemoizingSourceLocator(new AggregateSourceLocator($locators));
+ }
+
+ public function makeClassReflector(SourceLocator $sourceLocator): ClassReflector
+ {
+ return new ClassReflector($sourceLocator);
+ }
+
+ public function makeFunctionReflector(
+ SourceLocator $sourceLocator,
+ ClassReflector $classReflector
+ ): FunctionReflector {
+ return new FunctionReflector($sourceLocator, $classReflector);
+ }
+
+ public function makeConstantReflector(
+ SourceLocator $sourceLocator,
+ ClassReflector $classReflector
+ ): ConstantReflector {
+ return new ConstantReflector($sourceLocator, $classReflector);
+ }
+
+ public function makeFilenameStrategy(Config $config): FileNameStrategyInterface
+ {
+ return new FileNameStrategy($config->baseNamespace, $config->fileExtension);
+ }
+
+ public function makePersister(Config $config): PersisterInterface
+ {
+ return new LocalFilesystemPersister($config->outputDirectory);
+ }
+
+ public function makeTwig(Config $config): TwigEnvironment
+ {
+ $twig = new Environment(new FilesystemLoader($config->twigTemplatesPath), $config->twigOptions);
+
+ $twig->addGlobal('project_name', $config->projectName);
+
+ $twig->addExtension(new DumpExtension());
+ $twig->addExtension(new MarkdownExtension());
+ $twig->addExtension($this->getContainer()->make(LinkExtension::class));
+ $twig->addExtension($this->getContainer()->make(TranslationExtension::class));
+ $twig->addExtension($this->getContainer()->make(SignatureExtension::class));
+ $twig->addExtension($this->getContainer()->make(ExampleRendererExtension::class));
+
+ return $twig;
+ }
+
+ public function makeExampleCodeSnippetResolver(Config $config): ExampleCodeSnippetResolver
+ {
+ return new ExampleCodeSnippetResolver($config->examplesDirectories);
+ }
+
+ public function makeLocationFactory(Config $config): LocationFactory
+ {
+ return new LocationFactory($config->sourceDirectories);
+ }
+
+ public function makeClassMembersVisibilityFilter(Config $config): ClassMembersVisibilityFilter
+ {
+ $visibilityFactory = static function ($v) {
+ return new Visibility($v);
+ };
+
+ $defaultVisibilityFilter = new VisibilityFilter(...array_map($visibilityFactory, $config->visibility));
+ $constantsVisibilityFilter = count($config->constantsVisibility) > 0
+ ? new VisibilityFilter(...array_map($visibilityFactory, $config->constantsVisibility))
+ : null;
+ $propertiesVisibilityFilter = count($config->propertiesVisibility) > 0
+ ? new VisibilityFilter(...array_map($visibilityFactory, $config->propertiesVisibility))
+ : null;
+ $methodsVisibilityFilter = count($config->methodsVisibility) > 0
+ ? new VisibilityFilter(...array_map($visibilityFactory, $config->methodsVisibility))
+ : null;
+
+ return new ClassMembersVisibilityFilter(
+ $defaultVisibilityFilter,
+ $constantsVisibilityFilter,
+ $propertiesVisibilityFilter,
+ $methodsVisibilityFilter
+ );
+ }
+}
diff --git a/src/Application/ServiceProviders/ConsoleCommandsProvider.php b/src/Application/ServiceProviders/ConsoleCommandsProvider.php
new file mode 100644
index 0000000..c9a0de4
--- /dev/null
+++ b/src/Application/ServiceProviders/ConsoleCommandsProvider.php
@@ -0,0 +1,37 @@
+getContainer()->share($command)->addTag(DefinitionTag::CONSOLE_COMMAND);
+ }
+ }
+}
diff --git a/src/Application/ServiceProviders/DefaultApiDocGeneratorProvider.php b/src/Application/ServiceProviders/DefaultApiDocGeneratorProvider.php
new file mode 100644
index 0000000..2b5b9d5
--- /dev/null
+++ b/src/Application/ServiceProviders/DefaultApiDocGeneratorProvider.php
@@ -0,0 +1,44 @@
+getContainer()->add(GeneratorInterface::class, ApiDocGenerator::class);
+
+ if (!$this->getContainer()->has(PersisterInterface::class)) {
+ $this->getContainer()->add(PersisterInterface::class, LocalFilesystemPersister::class);
+ }
+
+ if (!$this->getContainer()->has(FileNameStrategyInterface::class)) {
+ $this->getContainer()->add(FileNameStrategyInterface::class, FileNameStrategy::class);
+ }
+ }
+}
diff --git a/src/Application/ServiceProviders/DefaultRendererProvider.php b/src/Application/ServiceProviders/DefaultRendererProvider.php
new file mode 100644
index 0000000..31ea992
--- /dev/null
+++ b/src/Application/ServiceProviders/DefaultRendererProvider.php
@@ -0,0 +1,50 @@
+getContainer()->add(RendererInterface::class, TwigRenderer::class);
+
+ $this->getContainer()->add(TwigRenderer::class, function (Environment $twig) {
+ // TODO: configure template name strategy
+ return new TwigRenderer($twig, new StaticListTemplateNameStrategy([
+ ClassElement::class => 'class.md.twig',
+ InterfaceElement::class => 'interface.md.twig',
+ TraitElement::class => 'trait.md.twig',
+ FunctionsAggregate::class => 'functions.md.twig',
+ ConstantsAggregate::class => 'constants.md.twig',
+ TableOfContentsElement::class => 'toc.md.twig',
+ ]));
+ });
+ }
+}
diff --git a/src/Application/ServiceProviders/DocBlockResolverProvider.php b/src/Application/ServiceProviders/DocBlockResolverProvider.php
new file mode 100644
index 0000000..0c3d651
--- /dev/null
+++ b/src/Application/ServiceProviders/DocBlockResolverProvider.php
@@ -0,0 +1,57 @@
+getContainer()->add(DocBlockFactoryInterface::class, DocBlockFactory::class);
+ $this->getContainer()->share(
+ DocBlockFactory::class,
+ $docBlockFactory = new DocBlockFactory(PhpDocumentorDocBlockFactory::createInstance([
+ 'example' => Example::class,
+ ]))
+ );
+
+ $this->getContainer()->share(
+ DocBlockResolverInterface::class,
+ new MemoizedDocBlockResolver(new CompositeDocBlockResolver(
+ new ClassDocBlockResolver($docBlockFactory),
+ new MethodDocBlockResolver($docBlockFactory),
+ new PropertyDocBlockResolver($docBlockFactory),
+ new DefaultDocBlockResolver($docBlockFactory)
+ ))
+ );
+ }
+}
diff --git a/src/Application/ServiceProviders/ElementFactoryProvider.php b/src/Application/ServiceProviders/ElementFactoryProvider.php
new file mode 100644
index 0000000..edd325a
--- /dev/null
+++ b/src/Application/ServiceProviders/ElementFactoryProvider.php
@@ -0,0 +1,45 @@
+getContainer()->share(
+ ElementFactoryInterface::class,
+ function () {
+ return new MemoizedElementFactory(new CompositeElementFactory(
+ $this->getContainer()->make(ClassLikeElementFactory::class),
+ $this->getContainer()->make(ConstantElementFactory::class),
+ $this->getContainer()->make(FunctionLikeElementFactory::class),
+ $this->getContainer()->make(PropertyElementFactory::class)
+ ));
+ }
+ );
+ }
+}
diff --git a/src/Application/ServiceProviders/FallbackBetterReflectionProvider.php b/src/Application/ServiceProviders/FallbackBetterReflectionProvider.php
new file mode 100644
index 0000000..527919f
--- /dev/null
+++ b/src/Application/ServiceProviders/FallbackBetterReflectionProvider.php
@@ -0,0 +1,34 @@
+getContainer()->has(BetterReflection::class)
+ ? $this->getContainer()->get(BetterReflection::class)
+ : new BetterReflection();
+
+ $this->getContainer()->share(ClassReflector::class, $reflection->classReflector());
+ }
+}
diff --git a/src/Application/ServiceProviders/LinkServiceProvider.php b/src/Application/ServiceProviders/LinkServiceProvider.php
new file mode 100644
index 0000000..1281f56
--- /dev/null
+++ b/src/Application/ServiceProviders/LinkServiceProvider.php
@@ -0,0 +1,37 @@
+getContainer()->share(LinkResolverInterface::class, function () {
+ return new CompositeLinkResolver(
+ new ExternalLinkResolver(),
+ $this->getContainer()->make(FqsenLinkResolver::class)
+ );
+ });
+ }
+}
diff --git a/src/Application/ServiceProviders/SignatureRendererProvider.php b/src/Application/ServiceProviders/SignatureRendererProvider.php
new file mode 100644
index 0000000..73fa865
--- /dev/null
+++ b/src/Application/ServiceProviders/SignatureRendererProvider.php
@@ -0,0 +1,46 @@
+getContainer()->share(
+ SignatureRendererInterface::class,
+ new CompositeSignatureRenderer(...$this->makeRenderers())
+ );
+ }
+
+ /**
+ * @return \Generator|SignatureRendererInterface[]
+ */
+ private function makeRenderers(): \Generator
+ {
+ yield new ConstantSignatureRenderer();
+ yield new FunctionLikeElementSignatureRenderer();
+ yield new PropertySignatureRenderer();
+ }
+}
diff --git a/src/Application/ServiceProviders/TranslatorProvider.php b/src/Application/ServiceProviders/TranslatorProvider.php
new file mode 100644
index 0000000..9478650
--- /dev/null
+++ b/src/Application/ServiceProviders/TranslatorProvider.php
@@ -0,0 +1,104 @@
+getContainer()->add(TranslatorInterface::class, Translator::class);
+ $this->getContainer()->share(Translator::class, [$this, 'makeTranslator']);
+ }
+
+ public function makeTranslator(Config $config): TranslatorInterface
+ {
+ $translator = new Translator($config->locale);
+
+ foreach ($this->makeLoadersForTranslations($config->translations) as $format => $loader) {
+ $translator->addLoader($format, $loader);
+ }
+
+ foreach ($config->translations as $resource => $locale) {
+ $fileInfo = new \SplFileInfo($resource);
+ $format = $fileInfo->getExtension();
+ $translator->addResource($format, $resource, $locale);
+ }
+
+ return $translator;
+ }
+
+ /**
+ * @param array $translations
+ * @return \Generator|LoaderInterface[]
+ */
+ private function makeLoadersForTranslations(array $translations): \Generator
+ {
+ $registeredLoaders = [];
+
+ $loaderClassesMap = [
+ 'php' => PhpFileLoader::class,
+ 'csv' => CsvFileLoader::class,
+ 'ini' => IniFileLoader::class,
+ 'json' => JsonFileLoader::class,
+ 'mo' => MoFileLoader::class,
+ 'po' => PoFileLoader::class,
+ 'yaml' => YamlFileLoader::class,
+ 'yml' => YamlFileLoader::class,
+ ];
+
+ foreach ($translations as $resource => $_) {
+ $fileInfo = new \SplFileInfo($resource);
+ $format = $fileInfo->getExtension();
+
+ if (!isset($loaderClassesMap[$format])) {
+ throw new \InvalidArgumentException(sprintf(
+ 'Loader not found for translation resource "%s"',
+ $resource
+ ));
+ }
+
+ $loaderClass = $loaderClassesMap[$format];
+
+ if (isset($registeredLoaders[$loaderClass])) {
+ continue;
+ }
+
+ $registeredLoaders[$loaderClass] = true;
+
+ $loader = new $loaderClass();
+
+ yield $format => $loader;
+ }
+ }
+}
diff --git a/src/Application/ServiceProviders/TypeFactoryProvider.php b/src/Application/ServiceProviders/TypeFactoryProvider.php
new file mode 100644
index 0000000..ba20fb9
--- /dev/null
+++ b/src/Application/ServiceProviders/TypeFactoryProvider.php
@@ -0,0 +1,48 @@
+getContainer()->share(TypeFactoryInterface::class, function (ClassReflector $classReflector) {
+ $factories = [];
+
+ foreach (CompositeTypeFactory::makeDefaultFactories() as $factory) {
+ if ($factory instanceof InstanceOfTypeFactory) {
+ $factories[] = new BetterReflectionInstanceOfTypeFactory($classReflector);
+ $factories[] = new BetterReflectionParentFactory($classReflector);
+ continue;
+ }
+
+ $factories[] = $factory;
+ }
+
+ return new CompositeTypeFactory(...$factories);
+ });
+ }
+}
diff --git a/src/Config/Config.php b/src/Config/Config.php
new file mode 100644
index 0000000..3aaefca
--- /dev/null
+++ b/src/Config/Config.php
@@ -0,0 +1,83 @@
+
+ */
+ public $twigOptions = [];
+ /**
+ * @var string
+ */
+ public $locale;
+ /**
+ * @var array
+ */
+ public $translations = [];
+ /**
+ * @var string[]
+ */
+ public $examplesDirectories;
+ /**
+ * @var string[]
+ */
+ public $visibility = [];
+ /**
+ * @var string[]
+ */
+ public $constantsVisibility = [];
+ /**
+ * @var string[]
+ */
+ public $propertiesVisibility = [];
+ /**
+ * @var string[]
+ */
+ public $methodsVisibility = [];
+ /**
+ * @var ClassLoader|null
+ */
+ public $composerClassLoader;
+}
diff --git a/src/Config/Processor/BuilderProcessor.php b/src/Config/Processor/BuilderProcessor.php
new file mode 100644
index 0000000..7d82af8
--- /dev/null
+++ b/src/Config/Processor/BuilderProcessor.php
@@ -0,0 +1,395 @@
+|null
+ */
+ private $twigOptions;
+ /**
+ * @var string|null
+ */
+ private $locale;
+ /**
+ * @var string[]|null
+ */
+ private $translations;
+ /**
+ * @var string[]
+ */
+ public $examplesDirectories = [];
+ /**
+ * @var string[]
+ */
+ public $visibility;
+ /**
+ * @var string[]
+ */
+ public $constantsVisibility;
+ /**
+ * @var string[]
+ */
+ public $propertiesVisibility;
+ /**
+ * @var string[]
+ */
+ public $methodsVisibility;
+
+ public function withProjectName(string $projectName): self
+ {
+ $clone = clone $this;
+ $clone->projectName = $projectName;
+ return $clone;
+ }
+
+ /**
+ * @param string[] $sourceDirectories
+ * @return $this
+ */
+ public function withSourceDirectories(array $sourceDirectories): self
+ {
+ Assert::allStringNotEmpty($sourceDirectories);
+ $clone = clone $this;
+ $clone->sourceDirectories = $sourceDirectories;
+ return $clone;
+ }
+
+ public function withOutputDirectory(string $outputDirectory): self
+ {
+ $clone = clone $this;
+ $clone->outputDirectory = $outputDirectory;
+ return $clone;
+ }
+
+ /**
+ * @param string[] $scanDirectories
+ * @return $this
+ */
+ public function withScanDirectories(array $scanDirectories): self
+ {
+ Assert::allStringNotEmpty($scanDirectories);
+ $clone = clone $this;
+ $clone->scanDirectories = $scanDirectories;
+ return $clone;
+ }
+
+ /**
+ * @param string[] $scanFiles
+ * @return $this
+ */
+ public function withScanFiles(array $scanFiles): self
+ {
+ Assert::allStringNotEmpty($scanFiles);
+ $clone = clone $this;
+ $clone->scanFiles = $scanFiles;
+ return $clone;
+ }
+
+ public function withPhpVersion(string $phpVersion): self
+ {
+ $clone = clone $this;
+ $clone->phpVersion = $phpVersion;
+ return $clone;
+ }
+
+ public function withBaseNamespace(string $baseNamespace): self
+ {
+ $clone = clone $this;
+ $clone->baseNamespace = $baseNamespace;
+ return $clone;
+ }
+
+ public function withFileExtension(string $fileExtension): self
+ {
+ $clone = clone $this;
+ $clone->fileExtension = $fileExtension;
+ return $clone;
+ }
+
+ public function withTwigTemplatesPath(string $twigTemplatesPath): self
+ {
+ $clone = clone $this;
+ $clone->twigTemplatesPath = $twigTemplatesPath;
+ return $clone;
+ }
+
+ /**
+ * @param array $twigOptions
+ * @return $this
+ */
+ public function withTwigOptions(array $twigOptions): self
+ {
+ $clone = clone $this;
+ $clone->twigOptions = $twigOptions;
+ return $clone;
+ }
+
+ public function withLocale(string $locale): self
+ {
+ $clone = clone $this;
+ $clone->locale = $locale;
+ return $clone;
+ }
+
+ /**
+ * @param array $translations
+ * @return $this
+ */
+ public function withTranslations(array $translations): self
+ {
+ Assert::allStringNotEmpty($translations);
+ Assert::allStringNotEmpty(array_keys($translations));
+ $clone = clone $this;
+ $clone->translations = $translations;
+ return $clone;
+ }
+
+ /**
+ * @param string[] $examplesDirectories
+ * @return $this
+ */
+ public function withExamplesDirectories(array $examplesDirectories): self
+ {
+ Assert::allStringNotEmpty($examplesDirectories);
+ $clone = clone $this;
+ $clone->examplesDirectories = $examplesDirectories;
+ return $clone;
+ }
+
+ /**
+ * @param string[] $visibility
+ * @return $this
+ */
+ public function withVisibility(array $visibility): self
+ {
+ Assert::allInArray($visibility, Visibility::values());
+ $clone = clone $this;
+ $clone->visibility = $visibility;
+ return $clone;
+ }
+
+ /**
+ * @param string[] $constantsVisibility
+ * @return $this
+ */
+ public function withConstantsVisibility(array $constantsVisibility): self
+ {
+ Assert::allInArray($constantsVisibility, Visibility::values());
+ $clone = clone $this;
+ $clone->constantsVisibility = $constantsVisibility;
+ return $clone;
+ }
+
+ /**
+ * @param string[] $propertiesVisibility
+ * @return $this
+ */
+ public function withPropertiesVisibility(array $propertiesVisibility): self
+ {
+ Assert::allInArray($propertiesVisibility, Visibility::values());
+ $clone = clone $this;
+ $clone->propertiesVisibility = $propertiesVisibility;
+ return $clone;
+ }
+
+ /**
+ * @param string[] $methodsVisibility
+ * @return $this
+ */
+ public function withMethodsVisibility(array $methodsVisibility): self
+ {
+ Assert::allInArray($methodsVisibility, Visibility::values());
+ $clone = clone $this;
+ $clone->methodsVisibility = $methodsVisibility;
+ return $clone;
+ }
+
+ public function process(Config $config): void
+ {
+ if (null !== $this->projectName) {
+ $config->projectName = $this->projectName;
+ }
+
+ if (count($this->sourceDirectories) > 0) {
+ $config->sourceDirectories = $this->prepareDirectories($this->sourceDirectories);
+ }
+
+ if (null !== $this->outputDirectory) {
+ $config->outputDirectory = $this->prepareOutputDirectory($this->outputDirectory);
+ }
+
+ if (count($this->scanDirectories) > 0) {
+ $config->scanDirectories = $this->prepareDirectories($this->scanDirectories);
+ }
+
+ if (count($this->scanFiles) > 0) {
+ $config->scanFiles = $this->scanFiles;
+ }
+
+ if (null !== $this->phpVersion) {
+ $versionParser = new VersionParser();
+ $bound = $versionParser->parseConstraints($this->phpVersion)->getLowerBound();
+
+ if (!$bound->isZero() && !$bound->isPositiveInfinity()) {
+ $config->phpVersion = $bound->getVersion();
+ }
+ }
+
+ if (null !== $this->baseNamespace) {
+ $config->baseNamespace = $this->baseNamespace;
+ }
+
+ if (null !== $this->fileExtension) {
+ $config->fileExtension = $this->fileExtension;
+ }
+
+ if (null !== $this->twigTemplatesPath) {
+ $config->twigTemplatesPath = $this->prepareOutputDirectory($this->twigTemplatesPath);
+ }
+
+ if (null !== $this->twigOptions && $this->twigOptions !== $config->twigOptions) {
+ $config->twigOptions = array_merge($config->twigOptions, $this->twigOptions);
+ }
+
+ if (null !== $this->locale) {
+ $config->locale = $this->locale;
+ }
+
+ if (null !== $this->translations) {
+ $config->translations = array_merge($config->translations, $this->prepareTranslations($this->translations));
+ }
+
+ if (count($this->examplesDirectories) > 0) {
+ $config->examplesDirectories = $this->prepareDirectories($this->examplesDirectories);
+ } elseif (count($this->sourceDirectories) > 0) {
+ // We already set prepared source directories to config, just use it
+ $config->examplesDirectories = array_unique(array_map(static function (string $sourceDir): string {
+ return dirname($sourceDir) . DIRECTORY_SEPARATOR . 'examples';
+ }, $config->sourceDirectories));
+ }
+
+ if (null !== $this->visibility) {
+ $config->visibility = $this->visibility;
+ }
+
+ if (null !== $this->constantsVisibility) {
+ $config->constantsVisibility = $this->constantsVisibility;
+ }
+
+ if (null !== $this->propertiesVisibility) {
+ $config->propertiesVisibility = $this->propertiesVisibility;
+ }
+
+ if (null !== $this->methodsVisibility) {
+ $config->methodsVisibility = $this->methodsVisibility;
+ }
+ }
+
+ /**
+ * @param string[] $directories
+ * @return string[]
+ */
+ private function prepareDirectories(array $directories): array
+ {
+ $output = [];
+
+ foreach ($directories as $directory) {
+ $output[] = $this->prepareDirectory($directory);
+ }
+
+ return $output;
+ }
+
+ private function prepareDirectory(string $directory): string
+ {
+ $cwd = getcwd();
+
+ // Absolute dir
+ if (str_starts_with($directory, DIRECTORY_SEPARATOR) && file_exists($directory)) {
+ return $directory;
+ }
+
+ // Relative dir
+ $relativeDirectory = $cwd . DIRECTORY_SEPARATOR . ltrim($directory, DIRECTORY_SEPARATOR);
+ if (file_exists($relativeDirectory)) {
+ return $relativeDirectory;
+ }
+
+ throw new \UnexpectedValueException(sprintf('Given directory "%s" does not exist', $directory));
+ }
+
+ private function prepareOutputDirectory(string $directory): string
+ {
+ if (Path::isAbsolute($directory)) {
+ return $directory;
+ }
+
+ return getcwd() . DIRECTORY_SEPARATOR . $directory;
+ }
+
+ /**
+ * @param array $translations
+ * @return array
+ */
+ private function prepareTranslations(array $translations): array
+ {
+ $output = [];
+
+ foreach ($translations as $filename => $locale) {
+ $realFilename = Path::canonicalize($filename);
+ if (false === file_exists($realFilename)) {
+ throw new \InvalidArgumentException(sprintf('Translation file "%s" does not exist', $filename));
+ }
+
+ $output[$realFilename] = $locale;
+ }
+
+ return $output;
+ }
+}
diff --git a/src/Config/Processor/ComposerJsonProcessor.php b/src/Config/Processor/ComposerJsonProcessor.php
new file mode 100644
index 0000000..a8863cc
--- /dev/null
+++ b/src/Config/Processor/ComposerJsonProcessor.php
@@ -0,0 +1,137 @@
+
+ */
+ private $composerJson;
+
+ /**
+ * ComposerJsonProcessor constructor.
+ * @param string $composerJsonPath
+ */
+ public function __construct(string $composerJsonPath)
+ {
+ $this->composerJsonPath = $composerJsonPath;
+ $this->composerJson = $this->readComposerJson($composerJsonPath);
+ }
+
+ /**
+ * @param string $filePath
+ * @return array
+ */
+ private function readComposerJson(string $filePath): array
+ {
+ Assert::fileExists($filePath);
+
+ /** @var string $content */
+ $content = file_get_contents($filePath);
+ $json = json_decode($content, true, 512, JSON_BIGINT_AS_STRING);
+
+ if ($error = json_last_error()) {
+ throw new \RuntimeException(json_last_error_msg(), $error);
+ }
+
+ return $json;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function process(Config $config): void
+ {
+ $builder = new BuilderProcessor();
+
+ $builder = $builder->withProjectName($this->composerJson['name']);
+
+ $sourceDirectories = [];
+ $autoloadNamespaces = [];
+ $baseDirectory = dirname($this->composerJsonPath);
+ foreach ($this->composerJson['autoload'] as $type => $autoload) {
+ if (!in_array($type, ['psr-4', 'psr-0'], true)) {
+ continue;
+ }
+
+ $autoloadNamespaces += array_flip(array_keys($autoload));
+
+ foreach ($autoload as $dirs) {
+ foreach ((array)$dirs as $dir) {
+ $directory = rtrim($baseDirectory . DIRECTORY_SEPARATOR . $dir, '/\\');
+ $sourceDirectories[$directory] = $directory;
+ }
+ }
+ }
+
+ $builder = $builder->withSourceDirectories(array_values($sourceDirectories));
+
+ $autoloadNamespaces = array_flip($autoloadNamespaces);
+ $baseNamespace = null;
+ foreach ($autoloadNamespaces as $namespace) {
+ if (null === $baseNamespace) {
+ $baseNamespace = $namespace;
+ continue;
+ }
+
+ if (str_starts_with($namespace, $baseNamespace)) {
+ continue;
+ }
+
+ if (str_starts_with($baseNamespace, $namespace)) {
+ $baseNamespace = $namespace;
+ continue;
+ }
+
+ $baseNamespace = '';
+ break;
+ }
+
+ $builder = $builder->withBaseNamespace($baseNamespace);
+
+ $phpVersion = $this->composerJson['require']['php'] ?? null;
+
+ if (null !== $phpVersion) {
+ $builder = $builder->withPhpVersion($phpVersion);
+ }
+
+ $builder->process($config);
+
+ if (null !== $classLoader = $this->findComposerClassLoader()) {
+ $config->composerClassLoader = $classLoader;
+ }
+ }
+
+ private function findComposerClassLoader(): ?ClassLoader
+ {
+ $autoloadFile = implode(DIRECTORY_SEPARATOR, [
+ dirname($this->composerJsonPath),
+ $this->composerJson['config']['vendor-dir'] ?? 'vendor',
+ 'autoload.php',
+ ]);
+
+ if (!file_exists($autoloadFile)) {
+ return null;
+ }
+
+ /** @var ClassLoader $classLoader */
+ $classLoader = require $autoloadFile;
+
+ // Re-register class loader appended
+ $classLoader->unregister();
+ $classLoader->register(false);
+
+ return $classLoader;
+ }
+}
diff --git a/src/Config/Processor/ConfigFileProcessor.php b/src/Config/Processor/ConfigFileProcessor.php
new file mode 100644
index 0000000..b7d7649
--- /dev/null
+++ b/src/Config/Processor/ConfigFileProcessor.php
@@ -0,0 +1,44 @@
+configFilename = $this->prepareConfigFilename($configFilename);
+ }
+
+ private function prepareConfigFilename(string $filename): string
+ {
+ if (false === $realFilename = realpath($filename)) {
+ throw new \InvalidArgumentException(sprintf('Config file "%s" does not exist.', $filename));
+ }
+
+ return $realFilename;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function process(Config $config): void
+ {
+ $configurator = require $this->configFilename;
+ Assert::isCallable($configurator);
+ $innerProcessor = $configurator();
+ Assert::isInstanceOf($innerProcessor, ProcessorInterface::class);
+ $innerProcessor->process($config);
+ }
+}
diff --git a/src/Config/Processor/ConsoleInputProcessor.php b/src/Config/Processor/ConsoleInputProcessor.php
new file mode 100644
index 0000000..4a1a852
--- /dev/null
+++ b/src/Config/Processor/ConsoleInputProcessor.php
@@ -0,0 +1,88 @@
+input = $input;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function process(Config $config): void
+ {
+ $builder = new BuilderProcessor();
+
+ if (
+ $this->input->hasOption('projectName') &&
+ null !== $projectName = $this->input->getOption('projectName')
+ ) {
+ Assert::string($projectName);
+ $builder = $builder->withProjectName($projectName);
+ }
+
+ if (
+ $this->input->hasOption('output') &&
+ null !== $outputDirectory = $this->input->getOption('output')
+ ) {
+ Assert::string($outputDirectory);
+ $builder = $builder->withOutputDirectory($outputDirectory);
+ }
+
+ if ($this->input->hasArgument('src')) {
+ /** @var string[] $sourceDirectories */
+ $sourceDirectories = $this->input->getArgument('src');
+
+ if (count($sourceDirectories) > 0) {
+ $builder = $builder->withSourceDirectories($sourceDirectories);
+ }
+ }
+
+ $builder->process($config);
+ }
+
+ public static function configureCommand(Command $command): void
+ {
+ $command
+ ->addOption(
+ 'config',
+ 'c',
+ InputOption::VALUE_OPTIONAL,
+ sprintf('Path to custom config file [default: "%s"]', ConfigFileProcessor::DEFAULT_CONFIG_FILENAME)
+ )
+ ->addOption(
+ 'projectName',
+ 'p',
+ InputOption::VALUE_OPTIONAL,
+ 'Your project name'
+ )
+ ->addOption(
+ 'output',
+ 'o',
+ InputOption::VALUE_REQUIRED,
+ 'Directory where to save generated apiDoc files'
+ )
+ ->addArgument('src', InputArgument::OPTIONAL | InputArgument::IS_ARRAY);
+ }
+}
diff --git a/src/Config/Processor/DefaultsProcessor.php b/src/Config/Processor/DefaultsProcessor.php
new file mode 100644
index 0000000..f0efe46
--- /dev/null
+++ b/src/Config/Processor/DefaultsProcessor.php
@@ -0,0 +1,53 @@
+debug = $debug;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function process(Config $config): void
+ {
+ $processor = (new BuilderProcessor())
+ ->withPhpVersion(\PHP_VERSION)
+ ->withBaseNamespace('')
+ ->withFileExtension('md')
+ ->withTwigTemplatesPath(__DIR__ . '/../../../resources/views')
+ ->withTwigOptions([
+ 'debug' => $this->debug,
+ 'autoescape' => false,
+ // TODO: add cache
+ // 'cache' => '/path/to/compilation_cache',
+ ])
+ ->withLocale(class_exists(\Locale::class) ? \Locale::getDefault() : 'en')
+ ->withTranslations([
+ __DIR__ . '/../../../resources/languages/en.php' => 'en',
+ __DIR__ . '/../../../resources/languages/ru.php' => 'ru',
+ ])
+ ->withVisibility([Visibility::PUBLIC]);
+
+ $processor->process($config);
+ }
+}
diff --git a/src/Config/Processor/ProcessorInterface.php b/src/Config/Processor/ProcessorInterface.php
new file mode 100644
index 0000000..9479954
--- /dev/null
+++ b/src/Config/Processor/ProcessorInterface.php
@@ -0,0 +1,16 @@
+projectName = $projectName;
- $this->finder = $finder;
- $this->project = $this->buildProject();
- }
-
- /**
- * Build project instance from files in $this->finder
- * @return ProjectInterface
- * @throws \phpDocumentor\Reflection\Exception
- */
- protected function buildProject(): ProjectInterface
- {
- $projectFactory = ProjectFactory::createInstance();
-
- $files = [];
- foreach ($this->finder as $splFileInfo) {
- $files[] = new LocalFile($splFileInfo->getRealPath());
- }
-
- return $projectFactory->create($this->projectName, $files);
- }
-
- /**
- * Getter for `project` property
- * @return Project|ProjectInterface
- */
- public function getProject(): ProjectInterface
- {
- return $this->project;
- }
-
- /**
- * Decorate phpDocumentor elements with custom element classes
- * @param Element|mixed $element Element to decorate
- * @return ElementInterface|mixed Decorated element or source element if there no mappings for this type
- */
- public function elementFactory($element)
- {
- $map = [
- PhpdocReflectionElements\Argument::class => Elements\ArgumentElement::class,
- PhpdocReflectionElements\Class_::class => Elements\ClassElement::class,
- PhpdocReflectionElements\Constant::class => Elements\ConstantElement::class,
- PhpdocReflectionElements\Function_::class => Elements\FunctionElement::class,
- PhpdocReflectionElements\Interface_::class => Elements\InterfaceElement::class,
- PhpdocReflectionElements\Method::class => Elements\MethodElement::class,
- PhpdocReflectionElements\Namespace_::class => Elements\NamespaceElement::class,
- PhpdocReflectionElements\Property::class => Elements\PropertyElement::class,
- PhpdocReflectionElements\Trait_::class => Elements\TraitElement::class,
- ];
-
- if (!isset($map[get_class($element)])) {
- return $element;
- }
-
- $class = $map[get_class($element)];
-
- return new $class($element, $this);
- }
-
- /**
- * Proxy method call to project instance
- * @param string $method Method name to proxy
- * @param array $arguments Arguments to proxy with
- * @return mixed
- */
- protected function proxyProject(string $method, array $arguments)
- {
- return call_user_func_array([$this->project, $method], $arguments);
- }
-
- /**
- * Returns all namespaces with their sub-elements.
- * @return NamespacesCollection
- */
- public function getNamespaces(): NamespacesCollection
- {
- if ($this->namespaces === null) {
- $this->namespaces = new NamespacesCollection(array_map(function ($prop) {
- return $this->elementFactory($prop);
- }, $this->proxyProject(__FUNCTION__, func_get_args())));
- $this->namespaces = $this->namespaces->sortBy(function (NamespaceElement $namespace) {
- return (string)$namespace->getFqsen();
- }, SORT_ASC, SORT_NATURAL);
- }
-
- return $this->namespaces;
- }
-
- /**
- * @param string $method
- * @return array
- */
- protected function buildMap(string $method): array
- {
- $map = [];
- foreach ($this->project->getFiles() as $file) {
- /** @var Element $_element */
- foreach ($file->$method() as $_element) {
- $element = $this->elementFactory($_element);
- $map[(string)$element->getFqsen()] = $element;
- $this->filesMap[(string)$element->getFqsen()] = $file;
- }
- }
- return $map;
- }
-
- /**
- * Returns a list of class descriptors contained in project files.
- * @return ClassElement[]
- */
- public function getClasses(): array
- {
- if ($this->classes === null) {
- $this->classes = $this->buildMap(__FUNCTION__);
- }
-
- return $this->classes;
- }
-
- /**
- * Returns a list of interface descriptors contained in project files.
- * @return InterfaceElement[]
- */
- public function getInterfaces(): array
- {
- if ($this->interfaces === null) {
- $this->interfaces = $this->buildMap(__FUNCTION__);
- }
-
- return $this->interfaces;
- }
-
- /**
- * Returns a list of trait descriptors contained in project files.
- * @return TraitElement[]
- */
- public function getTraits(): array
- {
- if ($this->traits === null) {
- $this->traits = $this->buildMap(__FUNCTION__);
- }
-
- return $this->traits;
- }
-
- /**
- * Returns a list of constant descriptors contained in project files.
- * @return ConstantElement[]
- */
- public function getConstants(): array
- {
- if ($this->constants === null) {
- $this->constants = $this->buildMap(__FUNCTION__);
- }
-
- return $this->constants;
- }
-
- /**
- * Returns a list of function descriptors contained in project files.
- * @return FunctionElement[]
- */
- public function getFunctions(): array
- {
- if ($this->functions === null) {
- $this->functions = $this->buildMap(__FUNCTION__);
- }
-
- return $this->functions;
- }
-
- /**
- * Get file by element name
- * @param string $fqsen Fully Qualified Structural Element Name
- * @return File|null
- */
- public function getFile(string $fqsen): ?File
- {
- return $this->filesMap[$fqsen];
- }
-
- /**
- * Get element object by name
- * @param string $fqsen Fully Qualified Structural Element Name
- * @return mixed|null
- */
- public function getElement(string $fqsen)
- {
- $order = [
- 'classes',
- 'interfaces',
- 'traits',
- 'constants',
- 'functions',
- ];
-
- foreach ($order as $item) {
- if ($this->$item === null) {
- $this->{'get' . ucfirst($item)}();
- }
- if (isset($this->$item[$fqsen])) {
- return $this->$item[$fqsen];
- }
- }
-
- return null;
- }
-}
diff --git a/src/Element/AbstractElement.php b/src/Element/AbstractElement.php
new file mode 100644
index 0000000..b116bd2
--- /dev/null
+++ b/src/Element/AbstractElement.php
@@ -0,0 +1,57 @@
+|LinkInterface[]
+ */
+ public $links;
+ /**
+ * @var CollectionInterface|Example[]
+ */
+ public $examples;
+
+ final public function __construct()
+ {
+ $this->links = new TypedCollection([], new InstanceOfType(LinkInterface::class));
+ $this->examples = new TypedCollection([], new InstanceOfType(Example::class));
+
+ $this->init();
+ }
+
+ protected function init(): void
+ {
+ }
+}
diff --git a/src/Element/ClassElement.php b/src/Element/ClassElement.php
new file mode 100644
index 0000000..9160988
--- /dev/null
+++ b/src/Element/ClassElement.php
@@ -0,0 +1,101 @@
+|ConstantElement[]
+ */
+ public $constants;
+ /**
+ * @var CollectionInterface|PropertyElement[]
+ */
+ public $properties;
+ /**
+ * @var CollectionInterface|MethodElement[]
+ */
+ public $methods;
+ /**
+ * @var CollectionInterface|PropertyElement[]
+ */
+ public $magicProperties;
+ /**
+ * @var CollectionInterface|MethodElement[]
+ */
+ public $magicMethods;
+ /**
+ * @var ClassElement|null
+ */
+ public $parent;
+ /**
+ * @var CollectionInterface|InterfaceElement[]
+ */
+ public $interfaces;
+ /**
+ * @var CollectionInterface|TraitElement[]
+ */
+ public $traits;
+
+ protected function init(): void
+ {
+ $this->constants = new TypedCollection(
+ new IndexedCollection([], static function (ConstantElement $constantElement): string {
+ return $constantElement->name->getShortName();
+ }),
+ new InstanceOfType(ConstantElement::class)
+ );
+ $this->properties = new TypedCollection(
+ new IndexedCollection([], static function (PropertyElement $propertyElement): string {
+ return $propertyElement->name->getShortName();
+ }),
+ new InstanceOfType(PropertyElement::class)
+ );
+ $this->methods = new TypedCollection(
+ new IndexedCollection([], static function (MethodElement $propertyElement): string {
+ return $propertyElement->name->getShortName();
+ }),
+ new InstanceOfType(MethodElement::class)
+ );
+ $this->magicProperties = new TypedCollection(
+ new IndexedCollection([], static function (PropertyElement $propertyElement): string {
+ return $propertyElement->name->getShortName();
+ }),
+ new InstanceOfType(PropertyElement::class)
+ );
+ $this->magicMethods = new TypedCollection(
+ new IndexedCollection([], static function (MethodElement $propertyElement): string {
+ return $propertyElement->name->getShortName();
+ }),
+ new InstanceOfType(MethodElement::class)
+ );
+
+ $this->interfaces = new TypedCollection(
+ new IndexedCollection([], static function (InterfaceElement $propertyElement): string {
+ return $propertyElement->name->getShortName();
+ }),
+ new InstanceOfType(InterfaceElement::class)
+ );
+ $this->traits = new TypedCollection(
+ new IndexedCollection([], static function (TraitElement $propertyElement): string {
+ return $propertyElement->name->getShortName();
+ }),
+ new InstanceOfType(TraitElement::class)
+ );
+ }
+}
diff --git a/src/Element/ConstantElement.php b/src/Element/ConstantElement.php
new file mode 100644
index 0000000..06d5fc4
--- /dev/null
+++ b/src/Element/ConstantElement.php
@@ -0,0 +1,20 @@
+
+ * @package spaceonfire\ApiDoc\Element
+ */
+final class ConstantsAggregate implements ElementInterface, \IteratorAggregate, \Countable
+{
+ /**
+ * @var Fqsen
+ */
+ private $fqsen;
+ /**
+ * @var ConstantElement[]
+ */
+ private $constantElements;
+
+ public function __construct(ConstantElement ...$constantElements)
+ {
+ $this->fqsen = new Fqsen('constants');
+ $this->constantElements = $constantElements;
+ }
+
+ /**
+ * Getter for `fqsen` property.
+ * @return Fqsen
+ */
+ public function getFqsen(): Fqsen
+ {
+ return $this->fqsen;
+ }
+
+ /**
+ * @inheritDoc
+ * @return \ArrayIterator|ConstantElement[]
+ */
+ public function getIterator()
+ {
+ return new \ArrayIterator($this->constantElements);
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function count(): int
+ {
+ return count($this->constantElements);
+ }
+}
diff --git a/src/Element/DocBlock/DocBlock.php b/src/Element/DocBlock/DocBlock.php
new file mode 100644
index 0000000..6af2521
--- /dev/null
+++ b/src/Element/DocBlock/DocBlock.php
@@ -0,0 +1,142 @@
+>
+ */
+ private $tags = [];
+
+ /**
+ * DocBlock constructor.
+ * @param string $summary
+ * @param string $description
+ * @param Tag[] $tags
+ */
+ public function __construct(string $summary, string $description, iterable $tags = [])
+ {
+ $this->summary = $summary;
+ $this->description = $description;
+
+ foreach ($tags as $tag) {
+ if ($tag instanceof InvalidTag) {
+ // TODO: log invalid tag
+ continue;
+ }
+
+ if ($tag instanceof BaseTag && 'inheritdoc' === mb_strtolower($tag->getName())) {
+ if (!self::checkInheritTag($this->description)) {
+ $tagDescription = $tag->getDescription();
+ $this->description = trim(sprintf(
+ '%s@inheritdoc%s',
+ $this->description . PHP_EOL,
+ $tagDescription ? PHP_EOL . $tagDescription : ''
+ ));
+ }
+
+ continue;
+ }
+
+ if (!isset($this->tags[$tag->getName()])) {
+ $this->tags[$tag->getName()] = [$tag];
+ } else {
+ $this->tags[$tag->getName()][] = $tag;
+ }
+ }
+ }
+
+ /**
+ * Getter for `summary` property.
+ * @return string
+ */
+ public function getSummary(): string
+ {
+ return $this->summary;
+ }
+
+ /**
+ * Getter for `description` property.
+ * @return string
+ */
+ public function getDescription(): string
+ {
+ return $this->description;
+ }
+
+ /**
+ * Getter for `tags` property.
+ * @return Generator
+ */
+ public function getTags(): Generator
+ {
+ foreach ($this->tags as $_ => $tags) {
+ foreach ($tags as $tag) {
+ yield $tag;
+ }
+ }
+ }
+
+ /**
+ * @param string $tagName
+ * @return Generator
+ */
+ public function getTagsByName(string $tagName): Generator
+ {
+ if (!isset($this->tags[$tagName])) {
+ return;
+ }
+
+ foreach ($this->tags[$tagName] as $tag) {
+ yield $tag;
+ }
+ }
+
+ public function getFirstTagByName(string $tagName): ?Tag
+ {
+ if (!isset($this->tags[$tagName])) {
+ return null;
+ }
+
+ return $this->tags[$tagName][0];
+ }
+
+ public function hasTag(string $tagName): bool
+ {
+ return isset($this->tags[$tagName]);
+ }
+
+ /**
+ * @return array>
+ */
+ public function getTagsGroupedByName(): array
+ {
+ return $this->tags;
+ }
+
+ public function hasInheritTag(): bool
+ {
+ return self::checkInheritTag($this->description);
+ }
+
+ private static function checkInheritTag(string $text): bool
+ {
+ return false !== mb_stripos($text, '@inheritdoc');
+ }
+}
diff --git a/src/Element/DocBlock/Factory/DocBlockFactory.php b/src/Element/DocBlock/Factory/DocBlockFactory.php
new file mode 100644
index 0000000..69ba9ad
--- /dev/null
+++ b/src/Element/DocBlock/Factory/DocBlockFactory.php
@@ -0,0 +1,133 @@
+docBlockFactory = $docBlockFactory;
+ $this->makeContext = new NamespaceNodeToReflectionTypeContext();
+ }
+
+ /**
+ * @inheritDoc
+ */
+ public function make(object $reflection): DocBlock
+ {
+ $comment = $this->extractComment($reflection);
+
+ if ('' === trim($comment)) {
+ return new DocBlock('', '');
+ }
+
+ $phpDocumentorDocBlock = $this->docBlockFactory->create(
+ $this->extractComment($reflection),
+ $this->makeContext($reflection)
+ );
+
+ return new DocBlock(
+ $this->prepareDocBlockText($phpDocumentorDocBlock->getSummary()),
+ $this->prepareDocBlockText($phpDocumentorDocBlock->getDescription()),
+ $phpDocumentorDocBlock->getTags()
+ );
+ }
+
+ private function extractComment(object $reflection): string
+ {
+ if (!method_exists($reflection, 'getDocComment')) {
+ throw GivenReflectionNotSupported::forReason($reflection, 'Unable to extract phpDoc comment.');
+ }
+
+ return $reflection->getDocComment();
+ }
+
+ private function makeContext(object $reflection): ?Context
+ {
+ if (null !== $namespace = $this->extractDeclaringNamespaceNode($reflection)) {
+ return ($this->makeContext)($namespace);
+ }
+
+ if (method_exists($reflection, 'getNamespaceName')) {
+ return new Context($reflection->getNamespaceName());
+ }
+
+ if (method_exists($reflection, 'getDeclaringClass')) {
+ $class = $reflection->getDeclaringClass();
+
+ if ($class instanceof ReflectionClass) {
+ return new Context($class->getNamespaceName());
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * @param ReflectionClass|ReflectionMethod|ReflectionProperty|object $reflection
+ * @return Namespace_|null
+ */
+ private function extractDeclaringNamespaceNode(object $reflection): ?Namespace_
+ {
+ $extractor = (function (): ?Namespace_ {
+ $vars = get_object_vars($this);
+
+ if (!isset($vars['declaringNamespace'])) {
+ return null;
+ }
+
+ if (!$vars['declaringNamespace'] instanceof Namespace_) {
+ return null;
+ }
+
+ return $vars['declaringNamespace'];
+ });
+
+ $scopes = array_merge([get_class($reflection)], class_parents($reflection) ?: []);
+
+ foreach ($scopes as $scope) {
+ if (null !== $namespace = $extractor->bindTo($reflection, $scope)()) {
+ return $namespace;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * @param string|object|mixed $text
+ * @return string
+ */
+ private function prepareDocBlockText($text): string
+ {
+ $text = (string)$text;
+
+ $text = str_ireplace([
+ '{@inheritdoc}',
+ '@inheritdoc',
+ ], '@inheritdoc', $text);
+
+ return trim($text);
+ }
+}
diff --git a/src/Element/DocBlock/Factory/DocBlockFactoryInterface.php b/src/Element/DocBlock/Factory/DocBlockFactoryInterface.php
new file mode 100644
index 0000000..f4faccd
--- /dev/null
+++ b/src/Element/DocBlock/Factory/DocBlockFactoryInterface.php
@@ -0,0 +1,17 @@
+docBlockFactory = $docBlockFactory;
+ }
+
+ /**
+ * @inheritDoc
+ */
+ final public function resolve(object $reflection): DocBlock
+ {
+ if (!$this->supports($reflection)) {
+ throw GivenReflectionNotSupported::byDocBlockResolver($reflection);
+ }
+
+ return $this->doResolve($reflection);
+ }
+
+ /**
+ * @param object $reflection
+ * @return DocBlock
+ */
+ protected function doResolve(object $reflection): DocBlock
+ {
+ $docBlock = $this->docBlockFactory->make($reflection);
+
+ if (!$docBlock->hasInheritTag()) {
+ return $docBlock;
+ }
+
+ foreach ($this->getParentReflection($reflection) as $parentReflection) {
+ $docBlock = $this->mergeDocBlocks($docBlock, $this->resolve($parentReflection));
+ }
+
+ return $docBlock;
+ }
+
+ /**
+ * Returns parent reflection
+ * @param object $reflection
+ * @return iterable