// This file is auto-generated by alef. DO NOT EDIT.
#nullable enable

using System;

namespace {{ namespace }};

{% if doc %}
/// <summary>
{% for line in doc_lines %}
/// {{ line }}
{% endfor %}
/// </summary>
{% endif %}
public class {{ base_name }} : {{ base_parent }}
{
{% if has_methods %}
{% for m in methods %}
{% if m.doc %}    /// <summary>{{ m.doc }}</summary>
{% endif %}
    public {{ m.cs_type }} {{ m.prop_name }} { get; }
{% endfor %}

    public {{ base_name }}(string message) : base(message)
    {
{% for m in methods %}
        {{ m.prop_name }} = {{ m.default_value }};
{% endfor %}
    }

    public {{ base_name }}(string message, Exception innerException) : base(message, innerException)
    {
{% for m in methods %}
        {{ m.prop_name }} = {{ m.default_value }};
{% endfor %}
    }

    public {{ base_name }}(string message{% for m in methods %}, {{ m.cs_type }} {{ m.param_name }}{% endfor %}) : base(message)
    {
{% for m in methods %}
        {{ m.prop_name }} = {{ m.param_name }};
{% endfor %}
    }

    public {{ base_name }}(string message, Exception innerException{% for m in methods %}, {{ m.cs_type }} {{ m.param_name }}{% endfor %}) : base(message, innerException)
    {
{% for m in methods %}
        {{ m.prop_name }} = {{ m.param_name }};
{% endfor %}
    }
{% else %}
    public {{ base_name }}(string message) : base(message) { }

    public {{ base_name }}(string message, Exception innerException) : base(message, innerException) { }
{% endif %}
}
