class ObjStack {
  /*@ non_null */ Object [] a;
  //@ invariant a.length == 10;
  //@ invariant \elemtype(\typeof(a)) == \type(Object);
  int n;  //@ invariant 0 <= n & n <= 10;
  //@ invariant (\forall int i; n <= i & i < 10 ==> a[i] == null);

  ObjStack() {
    n = 0;
    a = new Object[10];
  }

  //@ requires n < 10;
  void Push(Object o) {
    a[n++] = o;
  }

  //@ requires n > 0;
  Object Pop() {
    Object o = a[--n];
    a[n] = null;
    return o;
  }

}
