code: @Override
      public V remove(final long key) {
          V x = firstGenerationQueue.remove(key);
          if (x != null) {
              fireListenersAboutDeletion(key, x);
          } else {
              x = secondGenerationQueue.remove(key);
              if (x != null) {
                  fireListenersAboutDeletion(key, x);
              }
          }
          return x;
      }
docs: returns value pushed out of the cache