<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def public(name=None):
 """Decorator. Mark a method as eligible for registration by a dispatcher. The dispatchers :py:func:`~tinyrpc.dispatch.RPCDispatcher.register_instance` function will do the actual registration of the marked method. The difference with :py:func:`~tinyrpc.dispatch.RPCDispatcher.public` is that this decorator does not register with a dispatcher, therefore binding the marked methods with a dispatcher is delayed until runtime. It also becomes possible to bind with multiple dispatchers. :param name: The name to register the function with. :type name: str or None Example: .. code-block:: python def class Baz(object):
 def not_exposed(self); @public('do_something') def visible_method(arg1):
 baz = Baz() dispatch = RPCDispatcher() dispatch.register_instance(baz, 'bazzies`) # Baz.visible_method is now callable via RPC as bazzies.do_something ``@public`` is a shortcut for ``@public()``. """

    if callable(name):
        f = name
        f._rpc_public_name = f.__name__
        return f

    def _(f):
        f._rpc_public_name = name or f.__name__
        return f

    return _