protected AssemblyResolutionResults filterByDisassembly(AssemblyResolutionResults temp) {
		AssemblyDefaultContext asmCtx = new AssemblyDefaultContext(lang);
		asmCtx.setContextRegister(context);
		return temp.apply(factory, rp -> {
			MemBuffer buf =
				new ByteMemBufferImpl(at, rp.getInstruction().getVals(), lang.isBigEndian());
			try {
				SleighInstructionPrototype ip =
					(SleighInstructionPrototype) lang.parse(buf, asmCtx, false);
				if (!rp.equivalentConstructState(ip.getRootState())) {
					return factory.error("Disassembly prototype mismatch", rp);
				}
				return rp;
			}
			catch (InsufficientBytesException | UnknownInstructionException e) {
				return factory.error("Disassembly failed: " + e.getMessage(), rp);
			}
		});
	}
Filter out results that get disassembled differently than assembled

<p>
The forbids mechanism is not perfect, so as a final fail safe, we disassemble the result and
compare the prototypes.

@param temp the results whose disassemblies have not yet been checked
@return the results that pass. Those that do not are replaced with errors.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/plugin/assembler/sleigh/sem/AbstractAssemblyTreeResolver.java