public class Bag { int[] a; //@ invariant a != null; int n; //@ invariant 0 <= n && n <= a.length; //@ requires initialElements != null; Bag(int[] initialElements) { n = initialElements.length; a = new int[n]; System.arraycopy(initialElements, 0, a, 0, n); } Bag(int[] initialElements, int start, int howMany) { n = howMany; a = new int[n]; for (int i=start; i 0) { n--; a[mindex] = a[n]; } return m; } void add(int x) { if (n == a.length) { int[] b = new int[2*a.length]; System.arraycopy(a, 0, b, 0, n); a = b; } a[n] = x; n++; } }