def METHOD_NAME(model):
    from nncf.torch.dynamic_graph.io_handling import replicate_same_tensors  # pylint: disable=cyclic-import
    from nncf.torch.dynamic_graph.io_handling import (
        wrap_nncf_model_inputs_with_objwalk,  # pylint: disable=cyclic-import
    )
    from nncf.torch.dynamic_graph.io_handling import (
        wrap_nncf_model_outputs_with_objwalk,  # pylint: disable=cyclic-import
    )
    device = get_model_device(model)
    args_list = [create_mock_tensor(info, device) for info in input_infos if info.keyword is None]
    kwargs = OrderedDict()
    for info in input_infos:
        if info.keyword is not None:
            kwargs[info.keyword] = create_mock_tensor(info, device)
    args = tuple(args_list)
    if with_input_tracing:
        if wrap_inputs_fn is None:
            # We control the input argument structure w.r.t. tensors
            # - a simple objwalk application should be sufficient in this simple case.
            # For more control, wrap_inputs_fn is used when this is used in NNCFNetwork
            # which is guaranteed to be the same as during the actual NNCFNetwork.forward
            args, kwargs = wrap_nncf_model_inputs_with_objwalk(args, kwargs)
        else:
            args, kwargs = wrap_inputs_fn(args, kwargs)
    retval = model(*args, **kwargs)
    if with_output_tracing:
        retval = replicate_same_tensors(retval)
        if wrap_outputs_fn is not None:
            return wrap_outputs_fn(retval)
        return wrap_nncf_model_outputs_with_objwalk(retval)
    return retval