docs: function(rootData, scopeData, path) {
        var results;
        var scopePath = (!path || path == "/")? "" : path; // Root path is blanked for easy appending 
  
        if(this.key == null && this.property == null) {
          // Root query, 
          results = [SpahQL.result(path, scopeData, rootData)]; // Uses original path arg
        }
        else if(this.key != null) {
          // Key query - key might be wildcard.
          var keyName = this.key.value; // pull from token
          results = this.fetchResultsFromObjectByKey(keyName, rootData, scopeData, scopePath, this.recursive);
        }
        else if(this.property != null) {
          // Property query
          var propertyName = this.property.value;
          results = this.fetchResultsFromObjectByProperty(propertyName, rootData, scopeData, scopePath, this.recursive);
        }
  
        // Now filter results if there are filter queries
        if(results.length > 0 && this.filterQueries.length > 0) {
          var fI, rI;
  
          // Loop filter queries
          for(fI=0; fI<this.filterQueries.length; fI++) {
            var filterQueryToken = this.filterQueries[fI];
            var filteredResults = [];
  
            // Loop results and assert filters against the result's data
            for(rI = 0; rI < results.length; rI++) {
              var r = results[rI];
              var filterResult = filterQueryToken.evaluate(rootData, r.value);
  
              if(filterResult && filteredResults.indexOf(r) < 0) {
                filteredResults.push(r);
              }
            } // result loop
            // Set results to those allowed by this filter query
            results = filteredResults;
          } // filter query loop
        } // condition
  
        // Return remainder
        return results;
      }