static/ext/src/util/AbstractMixedCollection.js
function(property, root, allowNull) {
        var values = this.extractValues(property, root),
            length = values.length,
            hits   = {},
            unique = [],
            value, strValue, i;

        for (i = 0; i < length; i++) {
            value = values[i];
            strValue = String(value);

            if ((allowNull || !Ext.isEmpty(value)) && !hits[strValue]) {
                hits[strValue] = true;
                unique.push(value);
            }
        }

        return unique;
    }
function(property, root, allowNull) {
        var values = this.extractValues(property, root),
            length = values.length,
            hits   = {},
            unique = [],
            value, strValue, i;

        for (i = 0; i < length; i++) {
            value = values[i];
            strValue = String(value);

            if ((allowNull || !Ext.isEmpty(value)) && !hits[strValue]) {
                hits[strValue] = true;
                unique.push(value);
            }
        }

        return unique;
    }
Collects unique values of a particular property in this MixedCollection
@param {String} property The property to collect on
@param {String} root (optional) 'root' property to extract the first argument from. This is used mainly when
summing fields in records, where the fields are all stored inside the 'data' object
@param {Boolean} allowBlank (optional) Pass true to allow null, undefined or empty string values
@return {Array} The unique values