# File lib/xml/xpath.rb, line 2881
    def funcall(name)   # for XPointer
      raise "BUG" unless block_given?
      func = ('f_' + name.tr('-', '_')).intern
      super unless respond_to? func, true
      size = @nodes.size
      pos = 1
      c = @context.dup
      begin
        @nodes.collect! { |node|
          c.reuse node, pos, size
          pos += 1
          args = yield(c)
          send(func, node, *args)
        }
      rescue Object::ArgumentError
        if $@[1] == "#{__FILE__}:#{__LINE__-3}:in `send'" then
          raise XPath::ArgumentError, "#{$!} for `#{name}'"
        end
        raise
      end
      self
    end