    # File temp/xpath.rb, line 22
        def XPath::first element, path=nil, namespaces=nil, variables={}
          raise "The namespaces argument, if supplied, must be a hash object." unless namespaces.nil? or namespaces.kind_of?(Hash)
          raise "The variables argument, if supplied, must be a hash object." unless variables.kind_of?(Hash)
                            parser = XPathParser.new
                            parser.namespaces = namespaces
                            parser.variables = variables
                            path = "*" unless path
                            element = [element] unless element.kind_of? Array
                            parser.parse(path, element).flatten[0]
                    end