public MaskedLong and(MaskedLong that) {
		long newMsk = this.msk & that.msk;
		long newVal = this.val & that.val;

		// If we have a definite 0 on either side, we know the results is definitely 0.
		// Careful we don't ignore the mask. Only definite 0s give a definite 0.
		newMsk |= this.msk & ~this.val;
		newMsk |= that.msk & ~that.val;

		// No need to remask. I checked the arithmetic.
		assert newVal == (newMsk & newVal);
		return fromMaskAndValue(newMsk, newVal);
	}
Compute the bitwise AND of this and another masked long

<p>
To handle unknown bits, the result is derived from the following truth table:

<pre>{@code
  0 x 1 <= A (this)
0 0 0 0
x 0 x x
1 0 x 1
^
B (that)
}</pre>

@param that the other masked long ({@code B}).
@return the result.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/assembler/sleigh/expr/MaskedLong.java