@Override
  public boolean add(T elem) {
    /* If no free space exists, add a new element to the list. */
    if (mHead == null || mHead.mFreeSpace == 0)
      mHead = new VListCell<T>(mHead == null? 1 : mHead.mElems.length * 2, mHead);

    /* Prepend this element to the current cell. */
    mHead.mElems[(mHead.mFreeSpace--) - 1] = elem;
    ++mSize;

    /* Success! */
    return true;
  }