@Override 
	public boolean containsAll(IntSet c) {
		if (c == null || c.isEmpty() || c == this)
			return true;
		if (isEmpty())
			return false;
		
		final ArraySet o = convert(c);
		final int[] thisElements = elements;		// faster
		final int[] otherElements = o.elements;		// faster
		int otherSize = o.size;
		int thisIndex = -1;
		int otherIndex = -1;
		while (thisIndex < (size - 1) && otherIndex < (otherSize - 1)) {
			thisIndex++;
			otherIndex++;
			while (thisElements[thisIndex] < otherElements[otherIndex]) {
				if (thisIndex == size - 1)
					return false;
				thisIndex++;
			}
			if (thisElements[thisIndex] > otherElements[otherIndex])
				return false;
		}
		return otherIndex == otherSize - 1;
	}