public void remove(int key) {
    int index = searchForCacheEntry(key);
    if (index != 0) {
      removeEntry(index);
      removeEntryFromHashTable(index);
      myCache[index].hash_next = myFirstFree;
      myFirstFree = index;

      final CacheEntry cacheEntry = myCache[index];
      final int deletedKey = cacheEntry.key;
      final Object deletedValue = cacheEntry.value;

      myCache[index].value = null;

      fireListenersAboutDeletion(deletedKey, (T)deletedValue);
    }
  }
public void remove(int key)