@Override
  public V get(Object key) {
    Entry<K, V>[] table = this.table;
    int hash = hashKey((K)key);
    int index = hash % table.length;

    for (Entry<K, V> e = table[index]; e != null; e = e.hashNext) {
      final K entryKey;
      if (e.keyHash == hash && ((entryKey = e.key) == key || hashingStrategy.isEqual(entryKey, (K)key))) {
        moveToTop(e);
        return e.value;

      }
    }
    return null;
  }
@Override
  public V get(Object key)