IList.java
/**
 * Represents the abstract notion of a list.
 * It how has behaviors consisting of three methods.
 * @author Dung X. Nguyen
 * @since Copyright 2003 - DXN All rights reserved
 */
public interface IList {
    /**
     * Computes the number of elements in this IList.
     * @return an int >= 0.
     */
    public abstract int getLength();

    /**
     * Concatenates this IList with a given IList.
     * @param rhs the IList on the right hand side.
     * @return an IList consisting of elements of this IList followed by
     * elements of rhs.
     */
    public abstract IList concatenate(IList rhs);

    /**
     * Returns an appropriate String representation of this IList as the rest
     * of some other IList.
     * Called only when this IList is the rest of some other IList.
     */
    public abstract String toStringHelp();
}