public void union(FlowSet<T> otherFlow, FlowSet<T> destFlow) { if (sameType(otherFlow) && sameType(destFlow)) { ArrayPackedSet<T> other = (ArrayPackedSet<T>) otherFlow; ArrayPackedSet<T> dest = (ArrayPackedSet<T>) destFlow; if (!(other instanceof ArrayPackedSet) || bits.length != other.bits.length) throw new RuntimeException("Incompatible other set for union"); for (int i = 0; i < bits.length; i++) dest.bits[i] = this.bits[i] | other.bits[i]; } else super.union(otherFlow, destFlow); }