code: function LayeredTextureCache(renderer) {
    var self = this;
    var r = self.renderer = renderer;
    var cy = r.cy;
    self.layersByLevel = {}; // e.g. 2 => [ layer1, layer2, ..., layerN ]
  
    self.firstGet = true;
    self.lastInvalidationTime = performanceNow() - 2 * invalidThreshold;
    self.skipping = false;
    self.eleTxrDeqs = cy.collection();
    self.scheduleElementRefinement = util(function () {
      self.refineElementTextures(self.eleTxrDeqs);
      self.eleTxrDeqs.unmerge(self.eleTxrDeqs);
    }, refineEleDebounceTime);
    r.beforeRender(function (willDraw, now$$1) {
      if (now$$1 - self.lastInvalidationTime <= invalidThreshold) {
        self.skipping = true;
      } else {
        self.skipping = false;
      }
    }, r.beforeRenderPriorities.lyrTxrSkip);
  
    var qSort = function qSort(a, b) {
      return b.reqs - a.reqs;
    };
  
    self.layersQueue = new Heap(qSort);
    self.setupDequeueing();
  }
docs: whether to use high quality ele txr requests (generally faster and cheaper in the longterm) var log = function(){ console.log.apply( console, arguments ); };