@SuppressWarnings("unchecked")
	static <T extends JitOp> OpGen<T> lookup(T op) {
		return (OpGen<T>) switch (op) {
			case JitBoolAndOp andOp -> BoolAndOpGen.GEN;
			case JitBoolNegateOp negOp -> BoolNegateOpGen.GEN;
			case JitBoolOrOp andOp -> BoolOrOpGen.GEN;
			case JitBoolXorOp andOp -> BoolXorOpGen.GEN;
			case JitBranchIndOp branchIndOp -> BranchIndOpGen.GEN;
			case JitBranchOp branchOp -> BranchOpGen.GEN;
			case JitCallOtherOp callOtherOp -> CallOtherOpGen.GEN;
			case JitCallOtherDefOp callOtherOp -> CallOtherOpGen.GEN;
			case JitCallOtherMissingOp callOtherOp -> CallOtherMissingOpGen.GEN;
			case JitCatenateOp catenateOp -> CatenateOpGen.GEN;
			case JitCBranchOp cBranchOp -> CBranchOpGen.GEN;
			case JitCopyOp copyOp -> CopyOpGen.GEN;
			case JitFloatAbsOp absOp -> FloatAbsOpGen.GEN;
			case JitFloatAddOp addOp -> FloatAddOpGen.GEN;
			case JitFloatCeilOp ceilOp -> FloatCeilOpGen.GEN;
			case JitFloatDivOp divOp -> FloatDivOpGen.GEN;
			case JitFloatEqualOp eqOp -> FloatEqualOpGen.GEN;
			case JitFloatFloat2FloatOp f2fOp -> FloatFloat2FloatOpGen.GEN;
			case JitFloatFloorOp floorOp -> FloatFloorOpGen.GEN;
			case JitFloatInt2FloatOp int2FloatOp -> FloatInt2FloatOpGen.GEN;
			case JitFloatLessEqualOp leqOp -> FloatLessEqualOpGen.GEN;
			case JitFloatLessOp lessOp -> FloatLessOpGen.GEN;
			case JitFloatMultOp multOp -> FloatMultOpGen.GEN;
			case JitFloatNaNOp nanOp -> FloatNaNOpGen.GEN;
			case JitFloatNegOp negOp -> FloatNegOpGen.GEN;
			case JitFloatNotEqualOp neqOp -> FloatNotEqualOpGen.GEN;
			case JitFloatRoundOp roundOp -> FloatRoundOpGen.GEN;
			case JitFloatSqrtOp sqrtOp -> FloatSqrtOpGen.GEN;
			case JitFloatSubOp subOp -> FloatSubOpGen.GEN;
			case JitFloatTruncOp truccOp -> FloatTruncOpGen.GEN;
			case JitInt2CompOp twoCompOp -> Int2CompOpGen.GEN;
			case JitIntAddOp addOp -> IntAddOpGen.GEN;
			case JitIntAndOp andOp -> IntAndOpGen.GEN;
			case JitIntCarryOp carryOp -> IntCarryOpGen.GEN;
			case JitIntDivOp divOp -> IntDivOpGen.GEN;
			case JitIntEqualOp eqOp -> IntEqualOpGen.GEN;
			case JitIntNegateOp negOp -> IntNegateOpGen.GEN;
			case JitIntLeftOp leftOp -> IntLeftOpGen.GEN;
			case JitIntLessEqualOp leqOp -> IntLessEqualOpGen.GEN;
			case JitIntLessOp lessOp -> IntLessOpGen.GEN;
			case JitIntMultOp multOp -> IntMultOpGen.GEN;
			case JitIntNotEqualOp neqOp -> IntNotEqualOpGen.GEN;
			case JitIntOrOp orOp -> IntOrOpGen.GEN;
			case JitIntRemOp remOp -> IntRemOpGen.GEN;
			case JitIntRightOp rightOp -> IntRightOpGen.GEN;
			case JitIntSBorrowOp sborrowOp -> IntSBorrowOpGen.GEN;
			case JitIntSCarryOp scarryOp -> IntSCarryOpGen.GEN;
			case JitIntSExtOp sExtOp -> IntSExtOpGen.GEN;
			case JitIntSLessEqualOp sleqOp -> IntSLessEqualOpGen.GEN;
			case JitIntSLessOp sleqOp -> IntSLessOpGen.GEN;
			case JitIntSDivOp sdivOp -> IntSDivOpGen.GEN;
			case JitIntSRemOp sremOp -> IntSRemOpGen.GEN;
			case JitIntSRightOp srightOp -> IntSRightOpGen.GEN;
			case JitIntSubOp subOp -> IntSubOpGen.GEN;
			case JitIntXorOp xorOp -> IntXorOpGen.GEN;
			case JitIntZExtOp sExtOp -> IntZExtOpGen.GEN;
			case JitLoadOp loadOp -> LoadOpGen.GEN;
			case JitLzCountOp lzCountOp -> LzCountOpGen.GEN;
			case JitPhiOp phiOp -> PhiOpGen.GEN;
			case JitPopCountOp popCountOp -> PopCountOpGen.GEN;
			case JitNopOp nopOp -> NopOpGen.GEN;
			case JitStoreOp storeOp -> StoreOpGen.GEN;
			case JitSubPieceOp spOp -> SubPieceOpGen.GEN;
			case JitSynthSubPieceOp subPieceOp -> SynthSubPieceOpGen.GEN;
			case JitUnimplementedOp unimplOp -> UnimplementedOpGen.GEN;
			default -> throw new AssertionError("Unrecognized op: " + op);
		};
	}
Lookup the generator for a given p-code op use-def node

@param <T> the class of the op
@param op the {@link JitOp} whose generator to look up
@return the generator
Ghidra/Framework/Emulation/src/main/java/ghidra/pcode/emu/jit/gen/op/OpGen.java