docs: function(rootData, scopeData, scopePath) {
        // Start off with a simulated result using the data required by the query
        var results = [
          SpahQL.result(
            ((this.useRoot)? null : scopePath) || "/", 
            ((this.useRoot)? rootData : scopeData)
          )
        ];
  
        // Loop path components and pass reduced data
        for(var i=0; i< this.pathComponents.length; i++) {
          var pc = this.pathComponents[i];
          var pcResults = []; // The results, flattened, for this path component   
  
          for(var j=0; j < results.length; j++) {
            // Run each result from the previous iteration through the path component evaluator.
            // Resultset for initial run is defined at top of this method.
            pcResults = pcResults.concat(pc.evaluate(rootData, results[j].value, results[j].path));
          }
          results = pcResults;
          
          // only continue if there are results to work with
          if(results.length == 0) break;
        }
        return results;
      }