public Object rest() {
    if (size() == 0) {
      throw new RuntimeException("Cannot remove first element of an empty list.");
    } else if ((super.size() == 1) && (!this.isProperList)) {
      return this.getDottedElement();
    }
    final CycList<E> cycList = new CycList<E>(this);
    cycList.remove(0);
    return cycList;
  }