docs: function(property, rootData, scopeData, path, recursive) {
        var oType = SpahQL.DataHelper.objectType(scopeData);
        var pPath = path+"/."+property;
        var results = [];
  
        switch(property) {
          case this.PROPERTY_SIZE:
            switch(oType) {
              case "array": case "string":
                results.push(SpahQL.result(pPath, scopeData.length, rootData));
                break;
              case "object":
                results.push(SpahQL.result(pPath, SpahQL.DataHelper.hashKeys(scopeData).length, rootData));
                break;
            }
            break;
          case this.PROPERTY_TYPE:
            results.push(SpahQL.result(pPath, oType, rootData));
            break;
          case this.PROPERTY_EXPLODE:
            if(oType =="string") {
              for(var c=0; c<scopeData.length; c++) {
                results.push(SpahQL.result(path+"/"+c, scopeData.charAt(c), rootData));
              }
            }
            break;
          default:
            throw new SpahQL.Errors.SpahQLRunTimeError("Unrecognised property token '"+property+"'.");
            break;
        }
  
        // recurse if needed
        if(recursive && (oType == "array" || oType == "object")) {
          for(var k in scopeData) {
            var kPath = path+"/"+k;
            var kVal = scopeData[k];
            results = results.concat(this.fetchResultsFromObjectByProperty(property, rootData, kVal, kPath, recursive));
          }
        }
  
        return results;
      }