code: 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
docs: `delegate` is optional, but should respond to `call` or `parse`