text: var isUndef = require('./isUndef');
  var Class = require('./Class');
  
  exports = Class({
      initialize: function QuickLru(max) {
          this._max = max;
          this._cache = {};
          this._oldCache = {};
          this._size = 0;
      },
      has: function(key) {
          return !isUndef(this._cache[key]) || !isUndef(this._oldCache[key]);
      },
      remove: function(key) {
          if (!isUndef(this._cache[key])) this._cache[key] = undefined;
          if (!isUndef(this._oldCache[key])) this._oldCache[key] = undefined;
      },
      get: function(key) {
          if (!isUndef(this._cache[key])) {
              return this._cache[key];
          }
  
          var val = this._oldCache[key];
  
          if (!isUndef(val)) {
              this._update(key, val);
  
              return val;
          }
      },
      set: function(key, val) {
          if (!isUndef(this._cache[key])) {
              this._cache[key] = val;
          } else {
              this._update(key, val);
          }
      },
      clear: function() {
          this._cache = {};
          this._oldCache = {};
      },
      _update: function(key, val) {
          this._cache[key] = val;
          this._size++;
  
          if (this._size > this._max) {
              this._size = 0;
              this._oldCache = this._cache;
              this._cache = {};
          }
      }
  });
  
  module.exports = exports;
  