docs: function(fieldName, sortAttribute, sortDirection, limit, statsFunction) {
              if (!this.dataModelObject.hasField(fieldName)) {
                  throw new Error("Cannot add limit filter on a nonexistent field.");
              }
  
              var f = this.dataModelObject.fieldByName(fieldName);
  
              if (!utils.contains(["string", "number", "objectCount"], f.type)) {
                  throw new Error("Cannot add limit filter on " + fieldName + " because it is of type " + f.type);
              }
  
              if ("string" === f.type && !utils.contains(["count", "dc"], statsFunction)) {
                  throw new Error("Stats function for fields of type string must be COUNT or DISTINCT_COUNT; found " +
                      statsFunction);
              }
  
              if ("number" === f.type && !utils.contains(["count", "dc", "average", "sum"], statsFunction)) {
                  throw new Error("Stats function for fields of type number must be one of COUNT, DISTINCT_COUNT, SUM, or AVERAGE; found " +
                      statsFunction);
              }
  
              if ("objectCount" === f.type && !utils.contains(["count"], statsFunction)) {
                  throw new Error("Stats function for fields of type object count must be COUNT; found " + statsFunction);
              }
  
              var filter = {
                  fieldName: fieldName,
                  owner: f.lineage.join("."),
                  type: f.type,
                  attributeName: sortAttribute,
                  attributeOwner: this.dataModelObject.fieldByName(sortAttribute).lineage.join("."),
                  sortDirection: sortDirection,
                  limitAmount: limit,
                  statsFn: statsFunction
              };
              // Assumed "highest" is preferred for when sortDirection is "DEFAULT"
              filter.limitType = "ASCENDING" === sortDirection ? "lowest" : "highest";
              this.filters.push(filter);
  
              return this;
          }