void collectComponentsRight(RightShiftExpression exp, long shift,
			Map<Long, PatternExpression> components, Map<String, Long> vals,
			AssemblyResolvedPatterns cur) throws SolverException {
		MaskedLong adj;
		try {
			adj = solver.getValue(exp.getRight(), vals, cur);
		}
		catch (NeedsBackfillException e) {
			throw new SolverException("Variable shifts break field catenation solver", e);
		}
		if (adj == null || !adj.isFullyDefined()) {
			throw new SolverException("Variable shifts break field catenation solver");
		}
		collectComponents(exp.getLeft(), shift - adj.val, components, vals, cur);
	}
Solves expressions of the form {@code A | B}
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/assembler/sleigh/expr/OrExpressionSolver.java