class {{ python_class_name.pascal_case }}(
{%- if properties %}
    # Property Mixins
    {%- for property in properties %}
    {{ property.python_class_name.pascal_case }}{% if property.generics_impl %}[{{ property.generics_impl }}]{% endif %},
    {%- endfor %}
{%- endif -%}
{%- if methods %}
    # Method Mixins
    {%- for method in methods %}
    {{ method.python_class_name.pascal_case}}{% if method.generics_impl %}[{{ method.generics_impl }}]{% endif %},
    {%- endfor %}
{%- endif %}
    # Base
    {% if declared_base_flow is not none -%}
    {{ declared_base_flow.pascal_case }}{% if declared_base_flow_generics_def %}[{{ declared_base_flow_generics_def }}]{% endif %},
{%- else -%}
    FlowBase[{{ return_type }}],
{%- endif %}
{%- if generics_def %}
    Generic[{{ generics_def }}],
{%- endif %}
):{% if property_setters or property_constant_setters %}
    def __init__(
        self,
        *args: Any,
    {%- for property_setter in  property_setters %}
        {{ property_setter.abstract_property_name.snake_case }}: {{ property_setter.property_type }},
    {%- endfor %}
        **kwargs: Any,
    ):
    {%- for property_setter in  property_setters %}
        self._{{ property_setter.abstract_property_name.snake_case }} = {{ property_setter.abstract_property_name.snake_case }}
    {%- endfor %}
    {%- for property_constant_setter in property_constant_setters %}
        self._{{ property_constant_setter.property_name.snake_case }} = {{ property_constant_setter.constant_value }}
    {%- endfor %}
        super().__init__(*args, **kwargs)
{% endif %}
    def __call__(self) -> {{ return_type }}:

