public @Nullable IntObjectLRUMap.MapEntry<T> getCachedEntry(int id, boolean allowMutation) {
    IntObjectLRUMap.MapEntry<T> entry = myProtectedQueue.getEntry(id);
    if (entry != null) {
      protectedHits++;
      return entry;
    }

    entry = myProbationalQueue.getEntry(id);
    if (entry != null) {
      printStatistics(++probationalHits);

      if (allowMutation) {
        myProbationalQueue.removeEntry(entry.key);
        IntObjectLRUMap.MapEntry<T> demoted = myProtectedQueue.putEntry(entry);
        if (demoted != null) {
          myProbationalQueue.putEntry(demoted);
        }
      }
      return entry;
    }

    printStatistics(++misses);

    return null;
  }
public @Nullable IntObjectLRUMap.MapEntry<T> getCachedEntry(int id, boolean allowMutation)