async def METHOD_NAME(self, args: Namespace, client: Client) -> None:
    app_arguments = args.app_args
    app_environment = args.app_env
    # merge in special environment variables prefixed with 'IDB_'
    app_environment.update(get_env_with_idb_prefix())
    post_process_arguments = args.post_args
    timings = (
        InstrumentsTimings(
            terminate_timeout=args.terminate_timeout,
            launch_retry_timeout=args.launch_retry_timeout,
            launch_error_timeout=args.launch_error_timeout,
            operation_duration=args.operation_duration,
        )
        if (
            args.terminate_timeout
            or args.launch_retry_timeout
            or args.launch_error_timeout
            or args.operation_duration
        )
        else None
    )
    trace_extensions = ["trace"]
    trace_basename = args.output
    if trace_basename:
        if os.path.isdir(trace_basename):
            trace_basename = find_next_file_prefix(
                os.path.join(trace_basename, "trace"), trace_extensions
            )
        else:
            # remove any user-specified file extension (e.g. 'foo.trace')
            trace_basename = os.path.splitext(trace_basename)[0]
    else:
        trace_basename = find_next_file_prefix("trace", trace_extensions)
    result = await client.run_instruments(
        stop=signal_handler_event("instruments"),
        trace_basename=trace_basename,
        template_name=args.template,
        app_bundle_id=args.app_bundle_id,
        app_environment=app_environment,
        app_arguments=app_arguments,
        tool_arguments=None,
        timings=timings,
        post_process_arguments=post_process_arguments,
    )
    print(result)