From 6dab09c7b824077ef0a3ed17a4a3410f321188f5 Mon Sep 17 00:00:00 2001
From: Constantine Karnaukhov
Date: Sun, 22 Nov 2020 23:29:54 +0400
Subject: [PATCH 1/2] feat: rewrite everything for next major version
BREAKING CHANGE
---
.apidocrc.php | 14 +
.editorconfig | 11 +-
.gitattributes | 14 +-
.github/FUNDING.yml | 3 +
.github/ISSUE_TEMPLATE.md | 10 +-
.github/workflows/build.yml | 113 +++
.gitignore | 27 +-
CODE_OF_CONDUCT.md | 23 +-
CONTRIBUTING.md | 19 +-
LICENSE.md | 0
Makefile | 6 +
README.md | 23 +-
bin/apidoc | 114 ++-
bin/build-phar.sh | 5 +
bin/coverage-badge | 129 ++++
box.json.dist | 15 +
composer.json | 57 +-
docker-compose.yml | 15 +
docs/Application/ApiDocKernel.md | 92 +++
docs/Application/Console/GenerateCommand.md | 701 ++++++++++++++++++
.../ServiceProviders/ConfigProvider.md | 375 ++++++++++
.../ConsoleCommandsProvider.md | 139 ++++
.../DefaultApiDocGeneratorProvider.md | 139 ++++
.../DefaultRendererProvider.md | 139 ++++
.../DocBlockResolverProvider.md | 139 ++++
.../ElementFactoryProvider.md | 139 ++++
.../FallbackBetterReflectionProvider.md | 139 ++++
.../ServiceProviders/LinkServiceProvider.md | 139 ++++
.../SignatureRendererProvider.md | 139 ++++
.../ServiceProviders/TranslatorProvider.md | 157 ++++
.../ServiceProviders/TypeFactoryProvider.md | 139 ++++
docs/Config/Config.md | 303 ++++++++
docs/Config/Processor/BuilderProcessor.md | 424 +++++++++++
.../Config/Processor/ComposerJsonProcessor.md | 56 ++
docs/Config/Processor/ConfigFileProcessor.md | 67 ++
.../Config/Processor/ConsoleInputProcessor.md | 75 ++
docs/Config/Processor/DefaultsProcessor.md | 56 ++
docs/Config/Processor/ProcessorInterface.md | 36 +
docs/Element/AbstractElement.md | 146 ++++
docs/Element/ClassElement.md | 308 ++++++++
docs/Element/ConstantElement.md | 180 +++++
docs/Element/ConstantsAggregate.md | 99 +++
docs/Element/DocBlock/DocBlock.md | 181 +++++
.../DocBlock/Factory/DocBlockFactory.md | 54 ++
.../Factory/DocBlockFactoryInterface.md | 36 +
.../Resolver/AbstractDocBlockResolver.md | 78 ++
.../Resolver/ClassDocBlockResolver.md | 79 ++
.../Resolver/CompositeDocBlockResolver.md | 74 ++
.../Resolver/DefaultDocBlockResolver.md | 79 ++
.../DocBlock/Resolver/DocBlockMerger.md | 55 ++
.../Resolver/DocBlockResolverInterface.md | 57 ++
.../Resolver/MemoizedDocBlockResolver.md | 74 ++
.../Resolver/MethodDocBlockResolver.md | 79 ++
.../Resolver/PropertyDocBlockResolver.md | 79 ++
docs/Element/ElementInterface.md | 13 +
.../Example/ExampleCodeSnippetResolver.md | 72 ++
.../Element/Factory/AbstractElementFactory.md | 101 +++
.../Factory/ClassLikeElementFactory.md | 101 +++
.../Factory/CompositeElementFactory.md | 96 +++
.../Element/Factory/ConstantElementFactory.md | 102 +++
.../Factory/ElementFactoryInterface.md | 78 ++
.../Factory/FunctionLikeElementFactory.md | 102 +++
.../Element/Factory/MemoizedElementFactory.md | 94 +++
.../Element/Factory/PropertyElementFactory.md | 102 +++
docs/Element/FunctionElement.md | 196 +++++
docs/Element/FunctionsAggregate.md | 99 +++
docs/Element/InterfaceElement.md | 228 ++++++
docs/Element/Link/AnchorGenerator.md | 33 +
docs/Element/Link/CompositeLinkResolver.md | 73 ++
docs/Element/Link/ExternalLinkResolver.md | 54 ++
docs/Element/Link/FqsenLinkResolver.md | 71 ++
docs/Element/Link/LinkResolverInterface.md | 54 ++
docs/Element/Location/Location.md | 113 +++
docs/Element/Location/LocationFactory.md | 54 ++
docs/Element/MethodElement.md | 260 +++++++
docs/Element/PropertyElement.md | 212 ++++++
.../Signature/CompositeSignatureRenderer.md | 70 ++
.../Signature/ConstantSignatureRenderer.md | 53 ++
.../FunctionLikeElementSignatureRenderer.md | 53 ++
.../Signature/PropertySignatureRenderer.md | 53 ++
.../Signature/SignatureRendererInterface.md | 53 ++
docs/Element/TableOfContentsElement.md | 81 ++
docs/Element/TraitElement.md | 228 ++++++
.../Type/BetterReflectionInstanceOfType.md | 75 ++
.../Type/Converter/PhpDocTypeConverter.md | 72 ++
.../Type/Converter/ReflectionTypeConverter.md | 52 ++
.../BetterReflectionInstanceOfTypeFactory.md | 98 +++
.../Factory/BetterReflectionParentFactory.md | 98 +++
.../Type/Resolver/AbstractTypeResolver.md | 79 ++
.../Type/Resolver/ArgumentTypeResolver.md | 80 ++
.../Type/Resolver/CompositeTypeResolver.md | 77 ++
.../Resolver/FunctionReturnTypeResolver.md | 80 ++
.../Type/Resolver/MemoizedTypeResolver.md | 75 ++
.../Type/Resolver/PropertyTypeResolver.md | 80 ++
.../Type/Resolver/TypeResolverInterface.md | 58 ++
.../ValueObject/AbstractTypedSymbol.md | 73 ++
.../ClassMembersVisibilityFilter.md | 94 +++
docs/Element/ValueObject/CodeSnippet.md | 90 +++
docs/Element/ValueObject/Example.md | 172 +++++
docs/Element/ValueObject/ExternalLink.md | 94 +++
docs/Element/ValueObject/Fqsen.md | 151 ++++
docs/Element/ValueObject/FqsenLink.md | 94 +++
docs/Element/ValueObject/FunctionParameter.md | 155 ++++
docs/Element/ValueObject/FunctionReturn.md | 75 ++
docs/Element/ValueObject/FunctionThrows.md | 75 ++
docs/Element/ValueObject/LinkInterface.md | 75 ++
docs/Element/ValueObject/Value.md | 53 ++
docs/Element/ValueObject/Visibility.md | 284 +++++++
docs/Element/ValueObject/VisibilityFilter.md | 83 +++
docs/Exception/GivenReflectionNotSupported.md | 263 +++++++
docs/Exception/TypeCannotBeConverted.md | 222 ++++++
docs/Generator/ApiDocGenerator.md | 57 ++
docs/Generator/File.md | 73 ++
docs/Generator/FileNameStrategy.md | 55 ++
docs/Generator/FileNameStrategyInterface.md | 34 +
docs/Generator/GeneratorInterface.md | 36 +
docs/Generator/LocalFilesystemPersister.md | 55 ++
docs/Generator/PersisterInterface.md | 34 +
docs/Project/Project.md | 132 ++++
docs/Project/ProjectFactory.md | 55 ++
docs/README.md | 221 ++++--
docs/Render/RendererInterface.md | 56 ++
docs/Render/StaticListTemplateNameStrategy.md | 86 +++
docs/Render/TemplateNameStrategyInterface.md | 66 ++
docs/Render/Twig/DumpExtension.md | 169 +++++
docs/Render/Twig/ExampleRendererExtension.md | 136 ++++
docs/Render/Twig/LinkExtension.md | 155 ++++
docs/Render/Twig/MarkdownExtension.md | 268 +++++++
docs/Render/Twig/SignatureExtension.md | 136 ++++
docs/Render/TwigRenderer.md | 77 ++
docs/spaceonfire/SimplePhpApiDoc/Context.md | 182 -----
.../Elements/ArgumentElement.md | 134 ----
.../SimplePhpApiDoc/Elements/BaseElement.md | 83 ---
.../SimplePhpApiDoc/Elements/ClassElement.md | 263 -------
...lterableByVisibilityCollectionInterface.md | 33 -
.../FilterableByVisibilityCollectionTrait.md | 19 -
.../Elements/Collections/MethodsCollection.md | 40 -
.../Collections/NamespacesCollection.md | 23 -
.../Collections/PropertiesCollection.md | 40 -
.../Elements/Collections/TraitsCollection.md | 51 --
.../Elements/ConstantElement.md | 141 ----
.../DocBlockResolver/BaseDocBlockResolver.md | 79 --
.../DocBlockResolver/ClassDocBlockResolver.md | 125 ----
.../MethodDocBlockResolver.md | 125 ----
.../PropertyDocBlockResolver.md | 125 ----
.../Elements/ElementDecoratorInterface.md | 38 -
.../Elements/ElementInterface.md | 67 --
.../Elements/ElementVisibilityInterface.md | 23 -
.../Elements/FunctionElement.md | 154 ----
.../Elements/InterfaceElement.md | 176 -----
.../SimplePhpApiDoc/Elements/MethodElement.md | 272 -------
.../Elements/MethodOwnerInterface.md | 24 -
.../Elements/NamespaceElement.md | 183 -----
.../Elements/PropertyElement.md | 235 ------
.../Elements/PropertyOwnerInterface.md | 24 -
.../SimplePhpApiDoc/Elements/TraitElement.md | 189 -----
.../SimplePhpApiDoc/GeneratorCommand.md | 118 ---
.../SimplePhpApiDoc/Renderers/BaseRenderer.md | 303 --------
.../Renderers/Markdown/MarkdownHelper.md | 105 ---
.../Renderers/Markdown/MarkdownRenderer.md | 329 --------
.../Renderers/RendererInterface.md | 282 -------
ecs.php | 60 ++
phpcs.xml.dist | 14 -
phpstan.neon.dist | 39 +
phpunit.xml.dist | 0
resources/languages/en.php | 59 ++
resources/languages/ru.php | 61 ++
resources/views/_class_macros.md.twig | 136 ++++
resources/views/_constant_macros.md.twig | 41 +
resources/views/_function_macros.md.twig | 98 +++
resources/views/_macros.md.twig | 101 +++
resources/views/class.md.twig | 57 ++
resources/views/class_like_element.md.twig | 16 +
resources/views/constants.md.twig | 13 +
resources/views/functions.md.twig | 13 +
resources/views/interface.md.twig | 37 +
resources/views/layout.md.twig | 5 +
resources/views/toc.md.twig | 21 +
resources/views/trait.md.twig | 37 +
scoper.inc.php | 58 ++
src/Application/ApiDocKernel.php | 128 ++++
src/Application/Console/GenerateCommand.php | 65 ++
.../ServiceProviders/ConfigProvider.php | 289 ++++++++
.../ConsoleCommandsProvider.php | 37 +
.../DefaultApiDocGeneratorProvider.php | 44 ++
.../DefaultRendererProvider.php | 50 ++
.../DocBlockResolverProvider.php | 57 ++
.../ElementFactoryProvider.php | 45 ++
.../FallbackBetterReflectionProvider.php | 34 +
.../ServiceProviders/LinkServiceProvider.php | 37 +
.../SignatureRendererProvider.php | 46 ++
.../ServiceProviders/TranslatorProvider.php | 104 +++
.../ServiceProviders/TypeFactoryProvider.php | 48 ++
src/Config/Config.php | 83 +++
src/Config/Processor/BuilderProcessor.php | 395 ++++++++++
.../Processor/ComposerJsonProcessor.php | 137 ++++
src/Config/Processor/ConfigFileProcessor.php | 44 ++
.../Processor/ConsoleInputProcessor.php | 88 +++
src/Config/Processor/DefaultsProcessor.php | 53 ++
src/Config/Processor/ProcessorInterface.php | 16 +
src/Context.php | 282 -------
src/Element/AbstractElement.php | 57 ++
src/Element/ClassElement.php | 101 +++
src/Element/ConstantElement.php | 20 +
src/Element/ConstantsAggregate.php | 56 ++
src/Element/DocBlock/DocBlock.php | 142 ++++
.../DocBlock/Factory/DocBlockFactory.php | 133 ++++
.../Factory/DocBlockFactoryInterface.php | 17 +
.../Resolver/AbstractDocBlockResolver.php | 84 +++
.../Resolver/ClassDocBlockResolver.php | 51 ++
.../Resolver/CompositeDocBlockResolver.php | 49 ++
.../Resolver/DefaultDocBlockResolver.php | 16 +
.../DocBlock/Resolver/DocBlockMerger.php | 225 ++++++
.../Resolver/DocBlockResolverInterface.php | 24 +
.../Resolver/MemoizedDocBlockResolver.php | 48 ++
.../Resolver/MethodDocBlockResolver.php | 59 ++
.../Resolver/PropertyDocBlockResolver.php | 57 ++
src/Element/ElementInterface.php | 9 +
.../Example/ExampleCodeSnippetResolver.php | 116 +++
.../Factory/AbstractElementFactory.php | 216 ++++++
.../Factory/ClassLikeElementFactory.php | 306 ++++++++
.../Factory/CompositeElementFactory.php | 66 ++
.../Factory/ConstantElementFactory.php | 83 +++
.../Factory/ElementFactoryInterface.php | 30 +
.../Factory/FunctionLikeElementFactory.php | 166 +++++
.../Factory/MemoizedElementFactory.php | 57 ++
.../Factory/PropertyElementFactory.php | 69 ++
src/Element/FunctionElement.php | 40 +
src/Element/FunctionsAggregate.php | 56 ++
src/Element/InterfaceElement.php | 68 ++
src/Element/Link/AnchorGenerator.php | 19 +
src/Element/Link/CompositeLinkResolver.php | 53 ++
src/Element/Link/ExternalLinkResolver.php | 29 +
src/Element/Link/FqsenLinkResolver.php | 91 +++
src/Element/Link/LinkResolverInterface.php | 24 +
src/Element/Location/Location.php | 76 ++
src/Element/Location/LocationFactory.php | 45 ++
src/Element/MethodElement.php | 57 ++
src/Element/PropertyElement.php | 29 +
.../Signature/CompositeSignatureRenderer.php | 49 ++
.../Signature/ConstantSignatureRenderer.php | 36 +
.../FunctionLikeElementSignatureRenderer.php | 90 +++
.../Signature/PropertySignatureRenderer.php | 49 ++
.../Signature/SignatureRendererInterface.php | 23 +
src/Element/TableOfContentsElement.php | 93 +++
src/Element/TraitElement.php | 68 ++
.../Type/BetterReflectionInstanceOfType.php | 42 ++
.../Type/Converter/PhpDocTypeConverter.php | 168 +++++
.../Converter/ReflectionTypeConverter.php | 63 ++
.../BetterReflectionInstanceOfTypeFactory.php | 58 ++
.../Factory/BetterReflectionParentFactory.php | 68 ++
.../Type/Resolver/AbstractTypeResolver.php | 58 ++
.../Type/Resolver/ArgumentTypeResolver.php | 82 ++
.../Type/Resolver/CompositeTypeResolver.php | 54 ++
.../Resolver/FunctionReturnTypeResolver.php | 78 ++
.../Type/Resolver/MemoizedTypeResolver.php | 49 ++
.../Type/Resolver/PropertyTypeResolver.php | 76 ++
.../Type/Resolver/TypeResolverInterface.php | 26 +
.../ValueObject/AbstractTypedSymbol.php | 48 ++
.../ClassMembersVisibilityFilter.php | 66 ++
src/Element/ValueObject/CodeSnippet.php | 54 ++
src/Element/ValueObject/Example.php | 138 ++++
src/Element/ValueObject/ExternalLink.php | 54 ++
src/Element/ValueObject/Fqsen.php | 78 ++
src/Element/ValueObject/FqsenLink.php | 52 ++
src/Element/ValueObject/FunctionParameter.php | 88 +++
src/Element/ValueObject/FunctionReturn.php | 9 +
src/Element/ValueObject/FunctionThrows.php | 9 +
src/Element/ValueObject/LinkInterface.php | 26 +
src/Element/ValueObject/Value.php | 31 +
src/Element/ValueObject/Visibility.php | 21 +
src/Element/ValueObject/VisibilityFilter.php | 47 ++
src/Elements/ArgumentElement.php | 93 ---
src/Elements/BaseElement.php | 78 --
src/Elements/ClassElement.php | 256 -------
...terableByVisibilityCollectionInterface.php | 21 -
.../FilterableByVisibilityCollectionTrait.php | 30 -
.../Collections/MethodsCollection.php | 22 -
.../Collections/NamespacesCollection.php | 20 -
.../Collections/PropertiesCollection.php | 22 -
src/Elements/Collections/TraitsCollection.php | 44 --
src/Elements/ConstantElement.php | 86 ---
.../DocBlockResolver/BaseDocBlockResolver.php | 144 ----
.../ClassDocBlockResolver.php | 76 --
.../MethodDocBlockResolver.php | 108 ---
.../PropertyDocBlockResolver.php | 81 --
src/Elements/ElementDecoratorInterface.php | 22 -
src/Elements/ElementInterface.php | 37 -
src/Elements/ElementVisibilityInterface.php | 16 -
src/Elements/FunctionElement.php | 103 ---
src/Elements/InterfaceElement.php | 125 ----
src/Elements/MethodElement.php | 229 ------
src/Elements/MethodOwnerInterface.php | 16 -
src/Elements/NamespaceElement.php | 113 ---
src/Elements/PropertyElement.php | 200 -----
src/Elements/PropertyOwnerInterface.php | 16 -
src/Elements/TraitElement.php | 156 ----
src/Exception/GivenReflectionNotSupported.php | 41 +
src/Exception/TypeCannotBeConverted.php | 16 +
src/Generator/ApiDocGenerator.php | 74 ++
src/Generator/File.php | 46 ++
src/Generator/FileNameStrategy.php | 40 +
src/Generator/FileNameStrategyInterface.php | 16 +
src/Generator/GeneratorInterface.php | 17 +
src/Generator/LocalFilesystemPersister.php | 41 +
src/Generator/PersisterInterface.php | 13 +
src/GeneratorCommand.php | 268 -------
src/Project/Project.php | 103 +++
src/Project/ProjectFactory.php | 165 +++++
src/Render/RendererInterface.php | 24 +
src/Render/StaticListTemplateNameStrategy.php | 48 ++
src/Render/TemplateNameStrategyInterface.php | 11 +
src/Render/Twig/DumpExtension.php | 113 +++
src/Render/Twig/ExampleRendererExtension.php | 40 +
src/Render/Twig/LinkExtension.php | 53 ++
src/Render/Twig/MarkdownExtension.php | 97 +++
src/Render/Twig/SignatureExtension.php | 40 +
src/Render/TwigRenderer.php | 61 ++
src/Renderers/BaseRenderer.php | 246 ------
src/Renderers/Markdown/MarkdownHelper.php | 131 ----
src/Renderers/Markdown/MarkdownRenderer.php | 92 ---
src/Renderers/Markdown/views/_constants.php | 33 -
src/Renderers/Markdown/views/_docblock.php | 43 --
src/Renderers/Markdown/views/_footer.php | 11 -
src/Renderers/Markdown/views/_methods.php | 88 ---
src/Renderers/Markdown/views/_properties.php | 33 -
src/Renderers/Markdown/views/class.php | 91 ---
src/Renderers/Markdown/views/interface.php | 62 --
src/Renderers/Markdown/views/toc.php | 79 --
src/Renderers/Markdown/views/trait.php | 71 --
src/Renderers/RendererInterface.php | 141 ----
.../Resolver/ClassDocBlockResolverTest.php | 189 +++++
.../Resolver/DocBlockResolverTest.php | 96 +++
.../Resolver/MethodDocBlockResolverTest.php | 105 +++
.../Resolver/PropertyDocBlockResolverTest.php | 130 ++++
tests/Element/Factory/ElementFactoryTest.php | 154 ++++
tests/Element/ValueObject/FqsenTest.php | 50 ++
tests/ExampleTest.php | 16 -
tests/_Fixtures/.apidocrc.php | 15 +
tests/_Fixtures/.gitignore | 1 +
tests/_Fixtures/Php72/AbstractClass.php | 87 +++
tests/_Fixtures/Php72/DummyInterface.php | 10 +
tests/_Fixtures/Php72/ExampleChildClass.php | 76 ++
.../_Fixtures/Php72/ExampleChildInterface.php | 12 +
tests/_Fixtures/Php72/ExampleChildTrait.php | 10 +
tests/_Fixtures/Php72/ExampleClass.php | 66 ++
tests/_Fixtures/Php72/ExampleInterface.php | 64 ++
tests/_Fixtures/Php72/ExampleTrait.php | 24 +
tests/_Fixtures/Php72/my_constant.php | 5 +
tests/_Fixtures/Php72/my_function.php | 18 +
.../Php72/my_namespaced_constant.php | 7 +
.../Php72/my_namespaced_function.php | 18 +
tests/_Fixtures/examples/ConcreteClass.php | 15 +
tests/_Fixtures/examples/example.php | 5 +
354 files changed, 23125 insertions(+), 7964 deletions(-)
create mode 100644 .apidocrc.php
create mode 100644 .github/FUNDING.yml
mode change 100644 => 100755 .github/ISSUE_TEMPLATE.md
create mode 100644 .github/workflows/build.yml
mode change 100644 => 100755 CODE_OF_CONDUCT.md
mode change 100644 => 100755 CONTRIBUTING.md
mode change 100644 => 100755 LICENSE.md
create mode 100755 Makefile
create mode 100644 bin/build-phar.sh
create mode 100644 bin/coverage-badge
create mode 100644 box.json.dist
create mode 100755 docker-compose.yml
create mode 100644 docs/Application/ApiDocKernel.md
create mode 100644 docs/Application/Console/GenerateCommand.md
create mode 100644 docs/Application/ServiceProviders/ConfigProvider.md
create mode 100644 docs/Application/ServiceProviders/ConsoleCommandsProvider.md
create mode 100644 docs/Application/ServiceProviders/DefaultApiDocGeneratorProvider.md
create mode 100644 docs/Application/ServiceProviders/DefaultRendererProvider.md
create mode 100644 docs/Application/ServiceProviders/DocBlockResolverProvider.md
create mode 100644 docs/Application/ServiceProviders/ElementFactoryProvider.md
create mode 100644 docs/Application/ServiceProviders/FallbackBetterReflectionProvider.md
create mode 100644 docs/Application/ServiceProviders/LinkServiceProvider.md
create mode 100644 docs/Application/ServiceProviders/SignatureRendererProvider.md
create mode 100644 docs/Application/ServiceProviders/TranslatorProvider.md
create mode 100644 docs/Application/ServiceProviders/TypeFactoryProvider.md
create mode 100644 docs/Config/Config.md
create mode 100644 docs/Config/Processor/BuilderProcessor.md
create mode 100644 docs/Config/Processor/ComposerJsonProcessor.md
create mode 100644 docs/Config/Processor/ConfigFileProcessor.md
create mode 100644 docs/Config/Processor/ConsoleInputProcessor.md
create mode 100644 docs/Config/Processor/DefaultsProcessor.md
create mode 100644 docs/Config/Processor/ProcessorInterface.md
create mode 100644 docs/Element/AbstractElement.md
create mode 100644 docs/Element/ClassElement.md
create mode 100644 docs/Element/ConstantElement.md
create mode 100644 docs/Element/ConstantsAggregate.md
create mode 100644 docs/Element/DocBlock/DocBlock.md
create mode 100644 docs/Element/DocBlock/Factory/DocBlockFactory.md
create mode 100644 docs/Element/DocBlock/Factory/DocBlockFactoryInterface.md
create mode 100644 docs/Element/DocBlock/Resolver/AbstractDocBlockResolver.md
create mode 100644 docs/Element/DocBlock/Resolver/ClassDocBlockResolver.md
create mode 100644 docs/Element/DocBlock/Resolver/CompositeDocBlockResolver.md
create mode 100644 docs/Element/DocBlock/Resolver/DefaultDocBlockResolver.md
create mode 100644 docs/Element/DocBlock/Resolver/DocBlockMerger.md
create mode 100644 docs/Element/DocBlock/Resolver/DocBlockResolverInterface.md
create mode 100644 docs/Element/DocBlock/Resolver/MemoizedDocBlockResolver.md
create mode 100644 docs/Element/DocBlock/Resolver/MethodDocBlockResolver.md
create mode 100644 docs/Element/DocBlock/Resolver/PropertyDocBlockResolver.md
create mode 100644 docs/Element/ElementInterface.md
create mode 100644 docs/Element/Example/ExampleCodeSnippetResolver.md
create mode 100644 docs/Element/Factory/AbstractElementFactory.md
create mode 100644 docs/Element/Factory/ClassLikeElementFactory.md
create mode 100644 docs/Element/Factory/CompositeElementFactory.md
create mode 100644 docs/Element/Factory/ConstantElementFactory.md
create mode 100644 docs/Element/Factory/ElementFactoryInterface.md
create mode 100644 docs/Element/Factory/FunctionLikeElementFactory.md
create mode 100644 docs/Element/Factory/MemoizedElementFactory.md
create mode 100644 docs/Element/Factory/PropertyElementFactory.md
create mode 100644 docs/Element/FunctionElement.md
create mode 100644 docs/Element/FunctionsAggregate.md
create mode 100644 docs/Element/InterfaceElement.md
create mode 100644 docs/Element/Link/AnchorGenerator.md
create mode 100644 docs/Element/Link/CompositeLinkResolver.md
create mode 100644 docs/Element/Link/ExternalLinkResolver.md
create mode 100644 docs/Element/Link/FqsenLinkResolver.md
create mode 100644 docs/Element/Link/LinkResolverInterface.md
create mode 100644 docs/Element/Location/Location.md
create mode 100644 docs/Element/Location/LocationFactory.md
create mode 100644 docs/Element/MethodElement.md
create mode 100644 docs/Element/PropertyElement.md
create mode 100644 docs/Element/Signature/CompositeSignatureRenderer.md
create mode 100644 docs/Element/Signature/ConstantSignatureRenderer.md
create mode 100644 docs/Element/Signature/FunctionLikeElementSignatureRenderer.md
create mode 100644 docs/Element/Signature/PropertySignatureRenderer.md
create mode 100644 docs/Element/Signature/SignatureRendererInterface.md
create mode 100644 docs/Element/TableOfContentsElement.md
create mode 100644 docs/Element/TraitElement.md
create mode 100644 docs/Element/Type/BetterReflectionInstanceOfType.md
create mode 100644 docs/Element/Type/Converter/PhpDocTypeConverter.md
create mode 100644 docs/Element/Type/Converter/ReflectionTypeConverter.md
create mode 100644 docs/Element/Type/Factory/BetterReflectionInstanceOfTypeFactory.md
create mode 100644 docs/Element/Type/Factory/BetterReflectionParentFactory.md
create mode 100644 docs/Element/Type/Resolver/AbstractTypeResolver.md
create mode 100644 docs/Element/Type/Resolver/ArgumentTypeResolver.md
create mode 100644 docs/Element/Type/Resolver/CompositeTypeResolver.md
create mode 100644 docs/Element/Type/Resolver/FunctionReturnTypeResolver.md
create mode 100644 docs/Element/Type/Resolver/MemoizedTypeResolver.md
create mode 100644 docs/Element/Type/Resolver/PropertyTypeResolver.md
create mode 100644 docs/Element/Type/Resolver/TypeResolverInterface.md
create mode 100644 docs/Element/ValueObject/AbstractTypedSymbol.md
create mode 100644 docs/Element/ValueObject/ClassMembersVisibilityFilter.md
create mode 100644 docs/Element/ValueObject/CodeSnippet.md
create mode 100644 docs/Element/ValueObject/Example.md
create mode 100644 docs/Element/ValueObject/ExternalLink.md
create mode 100644 docs/Element/ValueObject/Fqsen.md
create mode 100644 docs/Element/ValueObject/FqsenLink.md
create mode 100644 docs/Element/ValueObject/FunctionParameter.md
create mode 100644 docs/Element/ValueObject/FunctionReturn.md
create mode 100644 docs/Element/ValueObject/FunctionThrows.md
create mode 100644 docs/Element/ValueObject/LinkInterface.md
create mode 100644 docs/Element/ValueObject/Value.md
create mode 100644 docs/Element/ValueObject/Visibility.md
create mode 100644 docs/Element/ValueObject/VisibilityFilter.md
create mode 100644 docs/Exception/GivenReflectionNotSupported.md
create mode 100644 docs/Exception/TypeCannotBeConverted.md
create mode 100644 docs/Generator/ApiDocGenerator.md
create mode 100644 docs/Generator/File.md
create mode 100644 docs/Generator/FileNameStrategy.md
create mode 100644 docs/Generator/FileNameStrategyInterface.md
create mode 100644 docs/Generator/GeneratorInterface.md
create mode 100644 docs/Generator/LocalFilesystemPersister.md
create mode 100644 docs/Generator/PersisterInterface.md
create mode 100644 docs/Project/Project.md
create mode 100644 docs/Project/ProjectFactory.md
create mode 100644 docs/Render/RendererInterface.md
create mode 100644 docs/Render/StaticListTemplateNameStrategy.md
create mode 100644 docs/Render/TemplateNameStrategyInterface.md
create mode 100644 docs/Render/Twig/DumpExtension.md
create mode 100644 docs/Render/Twig/ExampleRendererExtension.md
create mode 100644 docs/Render/Twig/LinkExtension.md
create mode 100644 docs/Render/Twig/MarkdownExtension.md
create mode 100644 docs/Render/Twig/SignatureExtension.md
create mode 100644 docs/Render/TwigRenderer.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Context.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/ArgumentElement.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/BaseElement.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/ClassElement.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/FilterableByVisibilityCollectionInterface.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/FilterableByVisibilityCollectionTrait.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/MethodsCollection.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/NamespacesCollection.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/PropertiesCollection.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/Collections/TraitsCollection.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/ConstantElement.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/BaseDocBlockResolver.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/ClassDocBlockResolver.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/MethodDocBlockResolver.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/DocBlockResolver/PropertyDocBlockResolver.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/ElementDecoratorInterface.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/ElementInterface.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/ElementVisibilityInterface.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/FunctionElement.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/InterfaceElement.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/MethodElement.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/MethodOwnerInterface.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/NamespaceElement.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/PropertyElement.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/PropertyOwnerInterface.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Elements/TraitElement.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/GeneratorCommand.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Renderers/BaseRenderer.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Renderers/Markdown/MarkdownHelper.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Renderers/Markdown/MarkdownRenderer.md
delete mode 100644 docs/spaceonfire/SimplePhpApiDoc/Renderers/RendererInterface.md
create mode 100644 ecs.php
delete mode 100644 phpcs.xml.dist
create mode 100755 phpstan.neon.dist
mode change 100644 => 100755 phpunit.xml.dist
create mode 100644 resources/languages/en.php
create mode 100644 resources/languages/ru.php
create mode 100644 resources/views/_class_macros.md.twig
create mode 100644 resources/views/_constant_macros.md.twig
create mode 100644 resources/views/_function_macros.md.twig
create mode 100644 resources/views/_macros.md.twig
create mode 100644 resources/views/class.md.twig
create mode 100644 resources/views/class_like_element.md.twig
create mode 100644 resources/views/constants.md.twig
create mode 100644 resources/views/functions.md.twig
create mode 100644 resources/views/interface.md.twig
create mode 100644 resources/views/layout.md.twig
create mode 100644 resources/views/toc.md.twig
create mode 100644 resources/views/trait.md.twig
create mode 100644 scoper.inc.php
create mode 100644 src/Application/ApiDocKernel.php
create mode 100644 src/Application/Console/GenerateCommand.php
create mode 100644 src/Application/ServiceProviders/ConfigProvider.php
create mode 100644 src/Application/ServiceProviders/ConsoleCommandsProvider.php
create mode 100644 src/Application/ServiceProviders/DefaultApiDocGeneratorProvider.php
create mode 100644 src/Application/ServiceProviders/DefaultRendererProvider.php
create mode 100644 src/Application/ServiceProviders/DocBlockResolverProvider.php
create mode 100644 src/Application/ServiceProviders/ElementFactoryProvider.php
create mode 100644 src/Application/ServiceProviders/FallbackBetterReflectionProvider.php
create mode 100644 src/Application/ServiceProviders/LinkServiceProvider.php
create mode 100644 src/Application/ServiceProviders/SignatureRendererProvider.php
create mode 100644 src/Application/ServiceProviders/TranslatorProvider.php
create mode 100644 src/Application/ServiceProviders/TypeFactoryProvider.php
create mode 100644 src/Config/Config.php
create mode 100644 src/Config/Processor/BuilderProcessor.php
create mode 100644 src/Config/Processor/ComposerJsonProcessor.php
create mode 100644 src/Config/Processor/ConfigFileProcessor.php
create mode 100644 src/Config/Processor/ConsoleInputProcessor.php
create mode 100644 src/Config/Processor/DefaultsProcessor.php
create mode 100644 src/Config/Processor/ProcessorInterface.php
delete mode 100755 src/Context.php
create mode 100644 src/Element/AbstractElement.php
create mode 100644 src/Element/ClassElement.php
create mode 100644 src/Element/ConstantElement.php
create mode 100644 src/Element/ConstantsAggregate.php
create mode 100644 src/Element/DocBlock/DocBlock.php
create mode 100644 src/Element/DocBlock/Factory/DocBlockFactory.php
create mode 100644 src/Element/DocBlock/Factory/DocBlockFactoryInterface.php
create mode 100644 src/Element/DocBlock/Resolver/AbstractDocBlockResolver.php
create mode 100644 src/Element/DocBlock/Resolver/ClassDocBlockResolver.php
create mode 100644 src/Element/DocBlock/Resolver/CompositeDocBlockResolver.php
create mode 100644 src/Element/DocBlock/Resolver/DefaultDocBlockResolver.php
create mode 100644 src/Element/DocBlock/Resolver/DocBlockMerger.php
create mode 100644 src/Element/DocBlock/Resolver/DocBlockResolverInterface.php
create mode 100644 src/Element/DocBlock/Resolver/MemoizedDocBlockResolver.php
create mode 100644 src/Element/DocBlock/Resolver/MethodDocBlockResolver.php
create mode 100644 src/Element/DocBlock/Resolver/PropertyDocBlockResolver.php
create mode 100644 src/Element/ElementInterface.php
create mode 100644 src/Element/Example/ExampleCodeSnippetResolver.php
create mode 100644 src/Element/Factory/AbstractElementFactory.php
create mode 100644 src/Element/Factory/ClassLikeElementFactory.php
create mode 100644 src/Element/Factory/CompositeElementFactory.php
create mode 100644 src/Element/Factory/ConstantElementFactory.php
create mode 100644 src/Element/Factory/ElementFactoryInterface.php
create mode 100644 src/Element/Factory/FunctionLikeElementFactory.php
create mode 100644 src/Element/Factory/MemoizedElementFactory.php
create mode 100644 src/Element/Factory/PropertyElementFactory.php
create mode 100644 src/Element/FunctionElement.php
create mode 100644 src/Element/FunctionsAggregate.php
create mode 100644 src/Element/InterfaceElement.php
create mode 100644 src/Element/Link/AnchorGenerator.php
create mode 100644 src/Element/Link/CompositeLinkResolver.php
create mode 100644 src/Element/Link/ExternalLinkResolver.php
create mode 100644 src/Element/Link/FqsenLinkResolver.php
create mode 100644 src/Element/Link/LinkResolverInterface.php
create mode 100644 src/Element/Location/Location.php
create mode 100644 src/Element/Location/LocationFactory.php
create mode 100644 src/Element/MethodElement.php
create mode 100644 src/Element/PropertyElement.php
create mode 100644 src/Element/Signature/CompositeSignatureRenderer.php
create mode 100644 src/Element/Signature/ConstantSignatureRenderer.php
create mode 100644 src/Element/Signature/FunctionLikeElementSignatureRenderer.php
create mode 100644 src/Element/Signature/PropertySignatureRenderer.php
create mode 100644 src/Element/Signature/SignatureRendererInterface.php
create mode 100644 src/Element/TableOfContentsElement.php
create mode 100644 src/Element/TraitElement.php
create mode 100644 src/Element/Type/BetterReflectionInstanceOfType.php
create mode 100644 src/Element/Type/Converter/PhpDocTypeConverter.php
create mode 100644 src/Element/Type/Converter/ReflectionTypeConverter.php
create mode 100644 src/Element/Type/Factory/BetterReflectionInstanceOfTypeFactory.php
create mode 100644 src/Element/Type/Factory/BetterReflectionParentFactory.php
create mode 100644 src/Element/Type/Resolver/AbstractTypeResolver.php
create mode 100644 src/Element/Type/Resolver/ArgumentTypeResolver.php
create mode 100644 src/Element/Type/Resolver/CompositeTypeResolver.php
create mode 100644 src/Element/Type/Resolver/FunctionReturnTypeResolver.php
create mode 100644 src/Element/Type/Resolver/MemoizedTypeResolver.php
create mode 100644 src/Element/Type/Resolver/PropertyTypeResolver.php
create mode 100644 src/Element/Type/Resolver/TypeResolverInterface.php
create mode 100644 src/Element/ValueObject/AbstractTypedSymbol.php
create mode 100644 src/Element/ValueObject/ClassMembersVisibilityFilter.php
create mode 100644 src/Element/ValueObject/CodeSnippet.php
create mode 100644 src/Element/ValueObject/Example.php
create mode 100644 src/Element/ValueObject/ExternalLink.php
create mode 100644 src/Element/ValueObject/Fqsen.php
create mode 100644 src/Element/ValueObject/FqsenLink.php
create mode 100644 src/Element/ValueObject/FunctionParameter.php
create mode 100644 src/Element/ValueObject/FunctionReturn.php
create mode 100644 src/Element/ValueObject/FunctionThrows.php
create mode 100644 src/Element/ValueObject/LinkInterface.php
create mode 100644 src/Element/ValueObject/Value.php
create mode 100644 src/Element/ValueObject/Visibility.php
create mode 100644 src/Element/ValueObject/VisibilityFilter.php
delete mode 100755 src/Elements/ArgumentElement.php
delete mode 100755 src/Elements/BaseElement.php
delete mode 100755 src/Elements/ClassElement.php
delete mode 100755 src/Elements/Collections/FilterableByVisibilityCollectionInterface.php
delete mode 100755 src/Elements/Collections/FilterableByVisibilityCollectionTrait.php
delete mode 100755 src/Elements/Collections/MethodsCollection.php
delete mode 100755 src/Elements/Collections/NamespacesCollection.php
delete mode 100755 src/Elements/Collections/PropertiesCollection.php
delete mode 100755 src/Elements/Collections/TraitsCollection.php
delete mode 100755 src/Elements/ConstantElement.php
delete mode 100755 src/Elements/DocBlockResolver/BaseDocBlockResolver.php
delete mode 100755 src/Elements/DocBlockResolver/ClassDocBlockResolver.php
delete mode 100755 src/Elements/DocBlockResolver/MethodDocBlockResolver.php
delete mode 100755 src/Elements/DocBlockResolver/PropertyDocBlockResolver.php
delete mode 100755 src/Elements/ElementDecoratorInterface.php
delete mode 100755 src/Elements/ElementInterface.php
delete mode 100755 src/Elements/ElementVisibilityInterface.php
delete mode 100755 src/Elements/FunctionElement.php
delete mode 100755 src/Elements/InterfaceElement.php
delete mode 100755 src/Elements/MethodElement.php
delete mode 100755 src/Elements/MethodOwnerInterface.php
delete mode 100755 src/Elements/NamespaceElement.php
delete mode 100755 src/Elements/PropertyElement.php
delete mode 100755 src/Elements/PropertyOwnerInterface.php
delete mode 100755 src/Elements/TraitElement.php
create mode 100644 src/Exception/GivenReflectionNotSupported.php
create mode 100644 src/Exception/TypeCannotBeConverted.php
create mode 100644 src/Generator/ApiDocGenerator.php
create mode 100644 src/Generator/File.php
create mode 100644 src/Generator/FileNameStrategy.php
create mode 100644 src/Generator/FileNameStrategyInterface.php
create mode 100644 src/Generator/GeneratorInterface.php
create mode 100644 src/Generator/LocalFilesystemPersister.php
create mode 100644 src/Generator/PersisterInterface.php
delete mode 100755 src/GeneratorCommand.php
create mode 100644 src/Project/Project.php
create mode 100644 src/Project/ProjectFactory.php
create mode 100644 src/Render/RendererInterface.php
create mode 100644 src/Render/StaticListTemplateNameStrategy.php
create mode 100644 src/Render/TemplateNameStrategyInterface.php
create mode 100644 src/Render/Twig/DumpExtension.php
create mode 100644 src/Render/Twig/ExampleRendererExtension.php
create mode 100644 src/Render/Twig/LinkExtension.php
create mode 100644 src/Render/Twig/MarkdownExtension.php
create mode 100644 src/Render/Twig/SignatureExtension.php
create mode 100644 src/Render/TwigRenderer.php
delete mode 100755 src/Renderers/BaseRenderer.php
delete mode 100755 src/Renderers/Markdown/MarkdownHelper.php
delete mode 100755 src/Renderers/Markdown/MarkdownRenderer.php
delete mode 100755 src/Renderers/Markdown/views/_constants.php
delete mode 100755 src/Renderers/Markdown/views/_docblock.php
delete mode 100755 src/Renderers/Markdown/views/_footer.php
delete mode 100755 src/Renderers/Markdown/views/_methods.php
delete mode 100755 src/Renderers/Markdown/views/_properties.php
delete mode 100755 src/Renderers/Markdown/views/class.php
delete mode 100755 src/Renderers/Markdown/views/interface.php
delete mode 100755 src/Renderers/Markdown/views/toc.php
delete mode 100755 src/Renderers/Markdown/views/trait.php
delete mode 100755 src/Renderers/RendererInterface.php
create mode 100644 tests/Element/DocBlock/Resolver/ClassDocBlockResolverTest.php
create mode 100644 tests/Element/DocBlock/Resolver/DocBlockResolverTest.php
create mode 100644 tests/Element/DocBlock/Resolver/MethodDocBlockResolverTest.php
create mode 100644 tests/Element/DocBlock/Resolver/PropertyDocBlockResolverTest.php
create mode 100644 tests/Element/Factory/ElementFactoryTest.php
create mode 100644 tests/Element/ValueObject/FqsenTest.php
delete mode 100755 tests/ExampleTest.php
create mode 100644 tests/_Fixtures/.apidocrc.php
create mode 100644 tests/_Fixtures/.gitignore
create mode 100644 tests/_Fixtures/Php72/AbstractClass.php
create mode 100644 tests/_Fixtures/Php72/DummyInterface.php
create mode 100644 tests/_Fixtures/Php72/ExampleChildClass.php
create mode 100644 tests/_Fixtures/Php72/ExampleChildInterface.php
create mode 100644 tests/_Fixtures/Php72/ExampleChildTrait.php
create mode 100644 tests/_Fixtures/Php72/ExampleClass.php
create mode 100644 tests/_Fixtures/Php72/ExampleInterface.php
create mode 100644 tests/_Fixtures/Php72/ExampleTrait.php
create mode 100644 tests/_Fixtures/Php72/my_constant.php
create mode 100644 tests/_Fixtures/Php72/my_function.php
create mode 100644 tests/_Fixtures/Php72/my_namespaced_constant.php
create mode 100644 tests/_Fixtures/Php72/my_namespaced_function.php
create mode 100644 tests/_Fixtures/examples/ConcreteClass.php
create mode 100644 tests/_Fixtures/examples/example.php
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..0ea4220
--- /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/coverage.txt
+
+ - name: PHPUnit Artifacts
+ uses: actions/upload-artifact@v2
+ with:
+ name: phpunit-${{ matrix.php-version }}
+ path: build/
+
+ - 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..2ed0072 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,19 @@ nbproject
.directory
*.sql
*.tar*
+
+# Dotenv
+.env
+.env.*
+!.env.example
+
+# Project folders and files to ignore
+build
+vendor
+.phpunit.result.cache
+phpunit.xml
+phpstan.neon
+docker-compose.override.yml
+box.phar
+box.json
+php-scoper.phar
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..5583fa1
--- /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/build-phar.sh b/bin/build-phar.sh
new file mode 100644
index 0000000..91ac1be
--- /dev/null
+++ b/bin/build-phar.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+wget https://github.com/box-project/box/releases/download/3.9.1/box.phar
+
+php box.phar compile
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..81118d9
--- /dev/null
+++ b/box.json.dist
@@ -0,0 +1,15 @@
+{
+ "alias": "apidoc.phar",
+ "force-autodiscovery": true,
+ "dump-autoload": true,
+ "directories": [
+ "resources",
+ "vendor/twig/twig/src/Node/Expression/Test"
+ ],
+ "files": [
+ "vendor/twig/twig/src/TwigTest.php"
+ ],
+ "compactors": [
+ "KevinGH\\Box\\Compactor\\PhpScoper"
+ ]
+}
diff --git a/composer.json b/composer.json
index 7b8608d..f0324e9 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",
"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-development": "2.0-dev"
}
},
"config": {
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..988cb84
--- /dev/null
+++ b/phpstan.neon.dist
@@ -0,0 +1,39 @@
+# 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
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