### Question:
MaskedLong implements Comparable<MaskedLong> { public MaskedLong shiftLeft(long n) { if (n == 0) { return this; } long atright = ~((-1L) << n); return fromMaskAndValue((this.msk << n) | atright, this.val << n); } protected  MaskedLong(long msk, long val); static MaskedLong fromMaskAndValue(long msk, long val); static MaskedLong fromLong(long val); long longValue(); long getMask(); boolean isFullyDefined(); boolean isFullyUndefined(); MaskedLong mask(long mask); MaskedLong signExtend(); MaskedLong zeroExtend(); MaskedLong unknownExtend(int n); MaskedLong signExtend(int n); MaskedLong zeroExtend(int n); MaskedLong combine(MaskedLong that); MaskedLong shiftCircular(long n, int size, int dir); MaskedLong shiftCircular(MaskedLong n, int size, int dir); MaskedLong shiftLeft(long n); MaskedLong shiftLeft(MaskedLong n); MaskedLong invShiftLeft(long n); MaskedLong invShiftLeft(MaskedLong n); MaskedLong shiftRight(long n); MaskedLong shiftRight(MaskedLong n); MaskedLong invShiftRight(long n); MaskedLong invShiftRight(MaskedLong n); MaskedLong shiftRightLogical(long n); MaskedLong shiftRightLogical(MaskedLong n); MaskedLong shiftRightPositional(long n); MaskedLong invShiftRightLogical(long n); MaskedLong invShiftRightLogical(MaskedLong n); MaskedLong byteSwap(int n); MaskedLong and(MaskedLong that); MaskedLong invAnd(MaskedLong that); MaskedLong or(MaskedLong that); MaskedLong invOr(MaskedLong that); MaskedLong xor(MaskedLong that); MaskedLong negate(); MaskedLong not(); MaskedLong add(MaskedLong that); MaskedLong subtract(MaskedLong that); MaskedLong multiply(MaskedLong that); MaskedLong divideSigned(MaskedLong that); MaskedLong divideUnsigned(MaskedLong that); MaskedLong invMultiplyUnsigned(MaskedLong that); boolean agrees(MaskedLong that); boolean agrees(long that); boolean agrees(Object that); boolean isInRange(long max, boolean signed); @Override int compareTo(MaskedLong that); @Override boolean equals(Object other); @Override int hashCode(); @Override String toString(); MaskedLong fillMask(); static final MaskedLong ZERO; static final MaskedLong UNKS; static final MaskedLong ONES; }### Answer:
@Test public void testShiftLeft() { assertEquals(MaskedLong.fromLong(0xfffffffffffffff8L), MaskedLong.ONES.shiftLeft(3)); assertEquals(MaskedLong.ZERO, MaskedLong.ZERO.shiftLeft(3)); assertEquals(MaskedLong.fromMaskAndValue(0x7, 0), MaskedLong.UNKS.shiftLeft(3)); }