@Override
	public boolean retainAll(IntSet c) {
		modCount++;

		if (isEmpty() || c == this)
			return false;
		if (c == null || c.isEmpty()) {
			clear();
			return true;
		}
		
		ConciseSet other = convert(c);
		if (other.size == 1) {
			if (contains(other.last)) {
				if (size == 1) 
					return false;
				return replaceWith(convert(other.last));
			} 
			clear();
			return true;
		}
		
		return replaceWith(performOperation(other, Operator.AND));
	}