BitString (BitString other) { long orBits = myBits | other.myBits; // 1 | ? = ? | 1 = 1; 0 | 0 = 0; ? | 0 = 0 | ? = ? | ? = ? long orMask = ((myMask ^ myBits) & (other.myMask ^ other.myBits)) | orBits; return new BitString(orBits, orMask); }