let maybe_fn = self.inner.dollar("{{ method_name }}");
let fn_robj = match maybe_fn {
    Ok(v) if !v.is_null() && !v.is_na() => v,
{% if has_error %}
    _ => return Err({{ missing_method_error }}),
{% else %}
    _ => return Default::default(),
{% endif %}
};

{% if empty_args %}
let result = fn_robj.call(extendr_api::Pairlist::new());
{% else %}
let args = extendr_api::Pairlist::from_pairs(&[{{ args_pairs }}]);
let result = fn_robj.call(args);
{% endif %}

match result {
    Err(_) if {{ has_error_check }} => {
{% if has_error %}
        Err({{ failed_method_error }})
{% else %}
        Ok(())
{% endif %}
    }
    _ => {% if has_error %}Ok(()){% else %}(){% endif %},
}
