protected void checkAllExact(AssemblyResolutionResults rr, Collection<String> disassembly,
			long addr, String ctxstr) {
		Address address = lang.getDefaultSpace().getAddress(addr);
		final AssemblyPatternBlock ctx = (ctxstr == null ? context.getDefaultAt(address)
				: AssemblyPatternBlock.fromString(ctxstr)).fillMask();
		dbg.println("Checking each: " + disassembly + " ctx:" + ctx);
		boolean gotOne = false;
		boolean failedOne = false;
		Set<AssemblyResolvedError> errs = new TreeSet<>(); // Display in order, I guess.
		MultiValuedMap<String, String> misTxtToCons = new TreeSetValuedTreeMap<>();
		MultiValuedMap<String, AssemblyResolvedPatterns> misTxtConsToRes =
			new TreeSetValuedTreeMap<>();
		for (AssemblyResolution ar : rr) {
			if (ar.isError()) {
				errs.add((AssemblyResolvedError) ar);
				continue;
			}
			AssemblyResolvedPatterns rcon = (AssemblyResolvedPatterns) ar;
			try {
				dbg.println("  " + rcon.lineToString());
				for (byte[] ins : rcon.possibleInsVals(ctx)) {
					dbg.println("    " + NumericUtilities.convertBytesToString(ins));
					PseudoInstruction pi = disassemble(addr, ins, ctx.getVals());
					String cons = dumpConstructorTree(pi);
					String dis = pi.toString();
					dbg.println("      " + dis);
					if (!disassembly.contains(dis.trim())) {
						failedOne = true;
						misTxtToCons.put(dis, cons);
						misTxtConsToRes.put(dis + cons, rcon);
					}
					gotOne = true;
				}
			}
			catch (Exception e) {
				throw new RuntimeException(e);
			}
		}
		if (failedOne) {
			dbg.println("Disassembly Mismatches:");
			for (String dis : misTxtToCons.keySet()) {
				dbg.println("  " + dis);
				for (String cons : misTxtToCons.get(dis)) {
					for (AssemblyResolvedPatterns rc : misTxtConsToRes.get(dis + cons)) {
						dbg.println("    d:" + cons);
						dbg.println("    a:" + rc.dumpConstructorTree());
						dbg.println(rc.toString("      "));
					}
				}
			}
			fail("At least one result did not disassemble to the given text");
		}
		if (!gotOne) {
			dbg.println("Errors:");
			for (AssemblyResolution ar : errs) {
				dbg.println(ar.toString("  "));
			}
			fail("Did not get any matches");
		}
	}
Confirm that every non-erroneous resolution disassembles to the given text

@param rr the collection of assembly resolutions
@param disassembly the expected disassembly text
@param addr the address of the instruction(s)
@param ctxstr a string describing the input context pattern
@see AssemblyPatternBlock#fromString(String)
Ghidra/Framework/SoftwareModeling/src/test/java/ghidra/app/plugin/assembler/sleigh/AssemblyTestCase.java