public interface Stack<E> {
    /**
	 * Add o to the top of this Stack.
	 * Precondition: ! isFull() -- that is, the stack is not full.
	 * @param e The element to be pushed.
	 */
    void push(E e);

    /**
	 * Remove and return the top element of this Stack.
	 * Precondition: ! isEmpty() -- that is, the stack is not empty.
	 * @return The former top element.
	 */
    E pop();

    /**
	 * Return whether this Stack is empty.
	 * @return true or false depending on whether the stack is empty.
	 */
    boolean isEmpty();

    /**
	 * Return whether this Stack is full. This method may always return
	 * false in some implementations.
	 * @return true or false depending on whether the stack is full.
	 */
    boolean isFull();
}
