docs: function NativeEngine() {
  // public
      // Override
      this.isAvailable = function() {
          if (browserVersion && browserVersion.isIE) {
              // javascript-xpath can fake out the check otherwise
              return false;
          }
  
          return this.doc && this.doc.evaluate;
      };
  
      // Override
      this.selectNodes = function(xpath, contextNode, namespaceResolver) {
          if (contextNode != this.doc) {
              xpath = '.' + xpath;
          }
  
          var nodes = [];
  
          try {
              var xpathResult = this.doc.evaluate(xpath, contextNode,
                  namespaceResolver, 0, null);
          }
          catch (e) {
              var msg = extractExceptionMessage(e);
              throw new SeleniumError("Invalid xpath [1]: " + msg);
          }
          finally {
              if (xpathResult == null) {
                  // If the result is null, we should still throw an Error.
                  throw new SeleniumError("Invalid xpath [2]: " + xpath);
              }
          }
  
          var node = xpathResult.iterateNext();
  
          while (node) {
              nodes.push(node);
              node = xpathResult.iterateNext();
          }
  
          return nodes;
      };
  }