def parse_result(node, delegate)
      if delegate
        method = delegate.is_a?(Proc) ? delegate : delegate.method(delegate.respond_to?(:call) ? :call : :parse)
        method.arity == 1 ? method[node] : method[node, self]
      else
        node
      end unless node.nil?
    end
def parse_result(node, delegate)
      if delegate
        method = delegate.is_a?(Proc) ? delegate : delegate.method(delegate.respond_to?(:call) ? :call : :parse)
        method.arity == 1 ? method[node] : method[node, self]
      else
        node
      end unless node.nil?
    end
`delegate` is optional, but should respond to `call` or `parse`