protected JitCompiledPassageClass compileWithMaxOpsBackoff(AddrCtx pcCtx,
			JitPassageDecoder decoder) {
		int maxOps = getConfiguration().maxPassageOps();
		while (maxOps > 0) {
			JitPassage decoded = decoder.decodePassage(pcCtx, maxOps);
			try {
				return compiler.compilePassage(lookup, decoded);
			}
			catch (MethodTooLargeException e) {
				Msg.warn(this, "Method too large for " + pcCtx + " with maxOps=" + maxOps +
					". Retrying with half.");
				maxOps >>= 1;
			}
		}
		/**
		 * This would be caused by an exceptionally large stride, perhaps with a good bit of
		 * instrumentation.
		 * 
		 * TODO: If this happens, we'll need to be willing to stop decoding mid-stride. I think it's
		 * easily doable, as we already do this when we hit an address with an existing entry point.
		 * 
		 * NOTE: We still need to treat each instruction, along with any instrumentation on it, as
		 * an atomic unit. I can't imagine a single instruction maxing out the Java method size,
		 * though.
		 */
		throw new AssertionError();
	}
Translate a new passage starting at the given seed.

<p>
Note the compiler must provide an entry to the resulting passage at the requested seed. It
and any additional entry points are placed into the code cache. Each thread executing the
passage must still create (and ought to cache) an instance of the translation.

@param pcCtx the seed address and contextreg value for decoding and selecting a passage
@param decoder the passage decoder, provided by the thread
@return the class that is the translation of the passage, and information about its entry
        points.
Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/emu/jit/JitPcodeEmulator.java