final Entry<V> removeEntryForKey(long key) {
    int hash = hash(key);
    int i = indexFor(hash, this.table.length);
    Entry prev = this.table[i];
    Entry e = prev;

    while (e != null) {
      Entry next = e.next;
      if (e.key == key) {
        this.modCount += 1;
        this.size -= 1;
        if (prev == e) this.table[i] = next; else
          prev.next = next;
        return e;
      }
      prev = e;
      e = next;
    }

    return e;
  }