  /**
   * {{ doc }}
   */
  {{ variant_name }}({{ direct_params }}): this;
  {{ variant_name }}({{ factory_params }}): (fn: (...args: any[]) => any) => (...args: any[]) => any;
  {{ variant_name }}({{ impl_params }}): this | ((fn: (...args: any[]) => any) => (...args: any[]) => any) {
{{ wrapper_code }}    if (handler !== undefined) {
      this._app.{{ variant_name }}({{ native_args }}, handler);
      return this;
    }
    return (fn: (...args: any[]) => any) => {
      this._app.{{ variant_name }}({{ native_args }}, fn);
      return fn;
    };
  }
