static int[] merge(int[] a, int[] b) {
		if (a == null)
			throw new NullPointerException("a is null");
		if (b == null)
			throw new NullPointerException("b is null");
		int[] result = new int[a.length + b.length];
		// Precondition
		assert result.length == a.length + b.length : "length mismatch";
		for (int i = 0; i < a.length; i++)
			result[i] = a[i];
		for (int i = 0; i < b.length; i++)
			result[a.length + i - 1] = b[i];
		// Postcondition
		assert containsAll(result, a, b) : "value missing from array";
		return result;
	}