var ListCache = require('./_ListCache'),

Map = require('./_Map'),
MapCache = require('./_MapCache');

/** Used as the size to enable large array optimizations. */ var LARGE_ARRAY_SIZE = 200;

/**

* Sets the stack `key` to `value`.
*
* @private
* @name set
* @memberOf Stack
* @param {string} key The key of the value to set.
* @param {*} value The value to set.
* @returns {Object} Returns the stack cache instance.
*/

function stackSet(key, value) {

var data = this.__data__;
if (data instanceof ListCache) {
  var pairs = data.__data__;
  if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
    pairs.push([key, value]);
    this.size = ++data.size;
    return this;
  }
  data = this.__data__ = new MapCache(pairs);
}
data.set(key, value);
this.size = data.size;
return this;

}

module.exports = stackSet;