protected MaskedLong computeCircShiftG(MaskedLong fval, int size, int dir, MaskedLong goal)
			throws SolverException {
		long acc = 0;
		//long bit = 1;
		for (int i = 0; i < size; i++) {
			if (fval.shiftCircular(i, size, dir).agrees(goal)) {
				return MaskedLong.fromLong(i);
				//acc |= bit;
			}
			//bit <<= 1;
		}
		if (Long.bitCount(acc) == 1) {
			return MaskedLong.fromLong(Long.numberOfTrailingZeros(acc));
		}
		throw new SolverException("Cannot solve for the circular shift amount");
	}
Solves expressions of the form {@code A | B}
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/assembler/sleigh/expr/OrExpressionSolver.java