@Override
  public void endWindow() {
    for (K key : cache.getChangedKeys()) {

      SpillableSetImpl<V> spillableSet = cache.get(key);
      spillableSet.endWindow();

      map.put(key, new ImmutablePair<>(spillableSet.size(), spillableSet.getHead()));
    }

    for (SpillableSetImpl removedSet : removedSets) {
      removedSet.endWindow();
    }
    removedSets.clear();

    cache.endWindow();
    map.endWindow();

    keyValueSerdeManager.resetReadBuffer();
  }