def _dispatch(request, *args)
      raise ArgumentError, "Invalid request #{request.inspect}" if not request.to_s =~ /\A(#{Node::NAME_REGEXP})(\?{,1})\z/
      node_name = $1.to_sym
      is_question = ($2 != "")

      node = @instance.find_local_node(node_name, @parent)

      # NOTE: Method return result.
      if node
        if is_question
          # Help request.
          out = [
            node.brief_desc || @instance.conf.brief_desc_stub,
            (["", node.full_desc] if node.full_desc),
          ].flatten(1).compact

          # `out` are lines of text, eventually.
          ::Kernel.puts out.empty?? "No description, please provide one" : out

          # For groups list contents after description.
          #if node.is_a? Node::Group
          #  ::Kernel.puts ["", self.class.new(@instance, node).inspect]
          #end
        else
          # Group/hack request.
          case node
          when Node::Group
            # Create and return a new nested access context.
            self.class.new(@instance, node)
          when Node::Hack
            # Invoke hack in the context of `HackTree` instance.
            @instance.instance_exec(*args, &node.block)
          else
            raise "Unknown node class #{node.class}, SE"
          end
        end # if is_question
      else
        ::Kernel.puts "Node not found: '#{node_name}'"
      end
    end
def _dispatch(request, *args)
      raise ArgumentError, "Invalid request #{request.inspect}" if not request.to_s =~ /\A(#{Node::NAME_REGEXP})(\?{,1})\z/
      node_name = $1.to_sym
      is_question = ($2 != "")

      node = @instance.find_local_node(node_name, @parent)

      # NOTE: Method return result.
      if node
        if is_question
          # Help request.
          out = [
            node.brief_desc || @instance.conf.brief_desc_stub,
            (["", node.full_desc] if node.full_desc),
          ].flatten(1).compact

          # `out` are lines of text, eventually.
          ::Kernel.puts out.empty?? "No description, please provide one" : out

          # For groups list contents after description.
          #if node.is_a? Node::Group
          #  ::Kernel.puts ["", self.class.new(@instance, node).inspect]
          #end
        else
          # Group/hack request.
          case node
          when Node::Group
            # Create and return a new nested access context.
            self.class.new(@instance, node)
          when Node::Hack
            # Invoke hack in the context of `HackTree` instance.
            @instance.instance_exec(*args, &node.block)
          else
            raise "Unknown node class #{node.class}, SE"
          end
        end # if is_question
      else
        ::Kernel.puts "Node not found: '#{node_name}'"
      end
    end
_dispatch(:hello)     # Group/hack request.
   _dispatch(:hello?)    # Help request.