{% if object.phpdoc %}{% include 'phpdoc/structure_phpdoc.twig' with {'structure_phpdoc': object.phpdoc} %}{% endif %}
{{ object.isAbstract ? 'abstract ' }}{{ object.isFinal ? 'final ' }}class {{ object.name }}
    {{- object.hasParent ? ' extends ' ~ object.Parent.name }}
    {{- object.allContracts is not empty ? ' implements ' }}
    {%- include 'collection/contract_collection.twig' with { 'contract_collection': object.allContracts } only %}
{
{% include 'collection/constant_collection.twig' with {
    'constant_collection': object.allConstants
} only %}
{% if needs_line_after(object, 'constants') %}

{% endif %}
{% include 'collection/property_collection.twig' with {
    'property_collection': object.allProperties
} only %}
{% if needs_line_after(object, 'properties') %}

{% endif %}
{% include 'collection/method_collection.twig' with {
    'method_collection': object.allMethods
} only %}
}
