public boolean isEmpty() {
   return newStack.isEmpty() && oldStack.isEmpty();
 }
 public T peek() {
   if (isEmpty()) throw new NoSuchElementException();
   if (oldStack.isEmpty()) moveNewToOld();
   return oldStack.peek();
 }
 private void moveNewToOld() {
   while (!newStack.isEmpty()) oldStack.push(newStack.pop());
 }
 public void add(T val) {
   newStack.push(val);
 }