public class DequeStack implements Stack {
  private Deque D;
  public DequeStack() {
    D = new MyDeque();
  }
  public int size() {
    return D.size();
  }
  public boolean isEmpty() {
    return D.isEmpty();
  }
  public void push(Object obj) {
    D.insertLast(obj);
  }
  public Object top() throws StackEmptyException {
    try {
      return D.last();
    }
    catch (DequeEmptyException ece) {
      throw new StackEmptyException("Stack is empty!");
    }
  }
  public Object pop() throws StackEmptyException {
    try {
      return D.removeLast();
    }
    catch (DequeEmptyException ece) {
      throw new StackEmptyException("Stack is empty!");
    }
  }  
}