void (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); } }