code: def public(name=None):
      
      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 _
docs: 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()``.