    pub {% if is_async %}async {% endif %}fn {{ method_name }}(
        &mut self,
{%- for param in params %}
        {{ param.name }}: {{ param.rust_type }},
{%- endfor %}
    ) -> Result<{{ return_type }}, String> {
        let mut guard = self.inner.blocking_lock();
        let inner = guard.take().ok_or_else(|| "Service not initialized".to_string())?;
        drop(guard);

        {%- if is_async %}
        let result = inner.{{ method_name }}(
        {%- else %}
        let result = inner.{{ method_name }}(
        {%- endif %}
{%- for param in params %}
            {{ param.name }},
{%- endfor %}
        )
        {%- if is_async %}.await;
        {%- else %};
        {%- endif %}

        result.map_err(|e| e.to_string())
    }
