/**
 * @class Ext.data.PageMap
 * @extend Ext.util.LruCache
 * Private class for use by only Store when configured `buffered: true`.
 * @private
 */
 
/**
 * @cfg {Number} [pageSize=0]
 * The size of pages in this map.
 * @accessor
 */
 
/**
 * @cfg {String} [rootProperty=""]
 * The root property to use for aggregation, filtering and sorting. By default
 * this is `null` but when containing things like {@link Ext.data.Model records}
 * this config would likely be set to "data" so that property names are applied
 * to the fields of each record.
 * @accessor
 */
 
/**
 * @method findBy
 * Returns the first record in this page map which elicits a true return value from the
 * passed selection function.
 *
 * **IMPORTANT
 * This can ONLY find records which happen to be cached in the page cache. This will be parts of the dataset around the currently
 * visible zone, or recently visited zones if the pages have not yet been purged from the cache.
 *
 * This CAN NOT find records which have not been loaded into the cache.**
 *
 * If full client side searching is required, do not use a buffered store, instead use a regular, fully loaded store and
 * use the {@link Ext.grid.plugin.BufferedRenderer BufferedRenderer} plugin to minimize DOM footprint.
 * @param {Function} fn The selection function to execute for each item.
 * @param {Mixed} fn.rec The record.
 * @param {Mixed} fn.index The index in the total dataset of the record.
 * @param {Object} [scope] The scope (`this` reference) in which the function is executed. Defaults to this PageMap.
 * @return {Object} The first record in this page map which returned true from the selection
 * function, or null if none was found.
 */
 
/**
 * @method findIndexBy
 * Returns the index *in the whole dataset* of the first record in this page map which elicits a true return value from the
 * passed selection function.
 *
 * **IMPORTANT
 * This can ONLY find records which happen to be cached in the page cache. This will be parts of the dataset around the currently
 * visible zone, or recently visited zones if the pages have not yet been purged from the cache.
 *
 * This CAN NOT find records which have not been loaded into the cache.**
 *
 * If full client side searching is required, do not use a buffered store, instead use a regular, fully loaded store and
 * use the {@link Ext.grid.plugin.BufferedRenderer BufferedRenderer} plugin to minimize DOM footprint.
 * @param {Function} fn The selection function to execute for each item.
 * @param {Mixed} fn.rec The record.
 * @param {Mixed} fn.index The index in the total dataset of the record.
 * @param {Object} [scope] The scope (`this` reference) in which the function is executed. Defaults to this PageMap.
 * @return {Number} The index first record in this page map which returned true from the selection
 * function, or -1 if none was found.
 */