{%- if callable.return_kind.is_void() %}
            NativeMethods.{{ native_method_name }}({{ native_call_args }});
{%- else if callable.return_kind.is_direct() %}
            return NativeMethods.{{ native_method_name }}({{ native_call_args }});
{%- else if callable.return_kind.is_callback_handle() %}
            return {{ callable.return_kind.callback_bridge_class() }}.Wrap(NativeMethods.{{ native_method_name }}({{ native_call_args }}));
{%- else if callable.return_kind.is_class_handle() %}
{%- if callable.return_kind.class_handle_nullable() %}
            IntPtr _resultHandle = NativeMethods.{{ native_method_name }}({{ native_call_args }});
            return _resultHandle == IntPtr.Zero ? null : new {{ callable.return_kind.class_handle_class() }}(_resultHandle);
{%- else %}
            return new {{ callable.return_kind.class_handle_class() }}(NativeMethods.{{ native_method_name }}({{ native_call_args }}));
{%- endif %}
{%- else %}
            FfiBuf _buf = NativeMethods.{{ native_method_name }}({{ native_call_args }});
            try
            {
{%- let wire_decode_statement_indent = "                " %}
{%- include "render_csharp/callable_wire_decode_return.txt" %}
            }
            finally
            {
                NativeMethods.FreeBuf(_buf);
            }
{%- endif %}
