class MaskedLong implements Comparable<MaskedLong> {

	public MaskedLong invShiftLeft(long n) throws SolverException {
		if (n == 0) {
			return this;
		}
		long checkDef = ~(-1L << n) & val;
		if (checkDef != 0) {
			throw new SolverException("Cannot invert left shift where ones appear on the right");
		}
		return shiftRightPositional(n);
	}

	protected  MaskedLong(long msk, long val);

}