/** A nonrecursive generic method for reversing an array */
  public static <E> void reverse(E[] a) {
    Stack<E> S = new ArrayStack<E>(a.length);
    for (int i=0; i < a.length; i++)
      S.push(a[i]);
    for (int i=0; i < a.length; i++)
      a[i] = S.pop();
  }