def METHOD_NAME(self, obj: Any) -> tuple:
    if isinstance(obj, Module):
        method_list = ["forward"]
    elif isinstance(obj, Optimizer):
        method_list = ["step"]
    elif isinstance(obj, Function):
        method_list = ["forward", "backward"]
    elif isinstance(obj, Dataset):
        method_list = ["__getitem__"]
    else:
        default_methods = ["forward", "__call__", "__next__", "__getitem__"]
        method_list = []
        for method in default_methods:
            if hasattr(obj, method):
                method_list.append(method)
        if len(method_list) < 1:
            raise ValueError(
                f"The method to be wrapped for this object [{type(obj)}] is not recognized."
                "The name of the method should be provided or the object should have one of these methods:"
                f"{default_methods}"
            )
    return ensure_tuple(method_list)