class LIFOList extends AbstractEvictionList {

  @Override
  public EvictableEntry getEvictableEntry() {
    long evaluations = 0;
    EvictionNode evictionNode;
    // search for entry to return from list
    for (;;) {
      evictionNode = unlinkTailEntry();
      // end of Lifo list stop searching
      if (evictionNode == null) {
        break;
      }
      evaluations++;
      synchronized (evictionNode) {
        // if entry NOT used by transaction and NOT evicted return entry
        if (!evictionNode.isInUseByTransaction() && !evictionNode.isEvicted()) {
          break;
        }
      }
    }
    getStatistics().incEvaluations(evaluations);
    return (EvictableEntry) evictionNode;
  }

  public  LIFOList(EvictionController controller);

}