{%- if module.has_functions() %}
    public static class {{ module.class_name }}
    {
{%- for func in module.functions %}
{%- let callable = func %}
{%- let native_method_name = func.name %}
{%- let native_call_args = func.native_call_args() %}
{%- let native_call_args_async = func.native_call_args() %}
{%- if func.is_async() %}
{%- match func.async_call %}
{%- when Some with (ac) %}
{{ self::summary_doc_block(func.summary_doc, "        ") }}        public static {{ func.task_return_type() }} {{ func.name }}({% for p in func.params %}{{ p.csharp_type }} {{ p.name }}{% if !loop.last %}, {% endif %}{% endfor %})
            => {{ func.name }}({% for p in func.params %}{{ p.name }}, {% endfor %}global::System.Threading.CancellationToken.None);

{{ self::summary_doc_block(func.summary_doc, "        ") }}        public static {{ func.task_return_type() }} {{ func.name }}({% for p in func.params %}{{ p.csharp_type }} {{ p.name }}, {% endfor %}global::System.Threading.CancellationToken cancellationToken)
        {
{%- include "render_csharp/callable_setup.txt" -%}
{%- include "render_csharp/callable_open_pins.txt" -%}
{%- include "render_csharp/callable_async_return.txt" -%}
{%- include "render_csharp/callable_close_pins.txt" %}
        }
{%- when None %}
{%- endmatch %}
{%- else %}
{{ self::summary_doc_block(func.summary_doc, "        ") }}        public static {{ func.return_type }} {{ func.name }}({% for p in func.params %}{{ p.csharp_type }} {{ p.name }}{% if !loop.last %}, {% endif %}{% endfor %})
        {
{%- include "render_csharp/callable_setup.txt" -%}
{%- include "render_csharp/callable_open_pins.txt" -%}
{%- include "render_csharp/callable_sync_return.txt" -%}
{%- include "render_csharp/callable_close_pins.txt" %}
        }
{%- endif %}
{% endfor %}
    }

{% endif -%}
