@Override public boolean containsAll(Collection<?> c) { long mask = 0; for (Object o : c) { mask |= (1L << getOrdinal(o)); } return (mask & ~queue) == 0; }
@Override public boolean removeAll(Collection<?> c) { long mask = 0; for (Object o : c) { mask |= (1L << getOrdinal(o)); } long old = queue; queue &= ~mask; min = nextSetBit(min); return old != queue; }
@Override public boolean retainAll(Collection<?> c) { long mask = 0; for (Object o : c) { mask |= (1L << getOrdinal(o)); } long old = queue; queue &= mask; min = nextSetBit(min); return old != queue; }
@Override public boolean addAll(Collection<? extends E> c) { long mask = 0; for (Object o : c) { mask |= (1L << getOrdinal(o)); } long old = queue; queue |= mask; if (old == queue) { return false; } min = nextSetBit(0); return true; }