docs: function(rootData, scopeData, scopePath) {
      var results = [];
      if(this.isRange) {
        
        // Break if tokens look suspicious
        if(this.tokens.length != 2) {
          this.throwRuntimeError(this, "Tried to evaluate range with "+this.tokens.length+" tokens, expected 2 tokens. Tokens: "+this.tokens.join(", "));
        }
        
        var startResults = this.tokens[0].evaluate(rootData, scopeData, scopePath);
        var endResults = this.tokens[1].evaluate(rootData, scopeData, scopePath);
      
        // Break if evaluation of either token returns no results
        if(startResults.length == 0 || endResults.length == 0) return results;
        
        var start = startResults[0].value;
        var end = endResults[0].value;
        var sType = SpahQL.DataHelper.objectType(start);
        var eType = SpahQL.DataHelper.objectType(end);
        if(sType == eType) {
          if(sType == "number") results = results.concat(this.evalNumericRange(start, end));
          else if(sType == "string") results = results.concat(this.evalStringRange(start, end));
          else new SpahQL.Errors.SpahQLRunTimeError("Unsupported type used in range. Ranges support only strings and numbers.");
        }
        else {
          throw new SpahQL.Errors.SpahQLRunTimeError("Illegal range with start type '"+sType+"' and end type '"+eType+"'. Ranges must use the same type at each end.");
        }
      }
      else {
        // Loop - evaluate queries
        for(var i in this.tokens) {
          var token = this.tokens[i];
          results = results.concat(token.evaluate(rootData, scopeData, scopePath));
        }
      }
      return results;
    }