@Override
	public AssemblyResolution solve(AbstractAssemblyResolutionFactory<?, ?> factory, T exp,
			MaskedLong goal, Map<String, Long> vals, AssemblyResolvedPatterns cur,
			Set<SolverHint> hints, String description) throws NeedsBackfillException {
		MaskedLong uval = solver.getValue(exp.getUnary(), vals, cur);
		try {
			if (uval != null && uval.isFullyDefined()) {
				MaskedLong cval = compute(uval);
				if (cval != null) {
					return ConstantValueSolver.checkConstAgrees(factory, cval, goal, description);
				}
			}
			return solver.solve(factory, exp.getUnary(), computeInverse(goal), vals, cur, hints,
				description);
		}
		/*
		 * catch (NeedsBackfillException e) { throw e; } catch (SolverException e) { return
		 * AssemblyResolvedConstructor.error(e.getMessage(), description, null); }
		 */
		catch (AssertionError e) {
			dbg.println("While solving: " + exp + " (" + description + ")");
			throw e;
		}
	}
A solver that handles expressions of the form {@code [OP]A}

@param <T> the type of expression solved (the operator)
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/assembler/sleigh/expr/AbstractUnaryExpressionSolver.java