code: protected DoubleLinkedElement<T> removeElem(final T key) {
      DoubleLinkedElement<T> found = (DoubleLinkedElement<T>) (super
          .removeElem(key));
      if (found == null) {
        return null;
      }
  
      // update linked list
      if (found.after != null) {
        found.after.before = found.before;
      }
      if (found.before != null) {
        found.before.after = found.after;
      }
      if (head == found) {
        head = head.after;
      }
      if (tail == found) {
        tail = tail.before;
      }
      return found;
    }
docs: Remove the element corresponding to the key, given key.hashCode() == index.
  
  @return Return the entry with the element if exists. Otherwise return null.