IParamsValue (AbstractInsnNode insn, IParamsValue value) { int size; switch (insn.getOpcode()) { case CHECKCAST -> { return value; } case LNEG, DNEG, I2L, I2D, L2D, F2L, F2D, D2L -> size = 2; case GETFIELD -> { size = ASMUtils.getSizeFast(((FieldInsnNode)insn).desc); leaking |= value.params; } case ARRAYLENGTH, MONITORENTER, INSTANCEOF, IRETURN, ARETURN, IFNONNULL, IFNULL, IFEQ, IFNE -> { size = 1; leaking |= value.params; } default -> size = 1; } return size == 1 ? val1 : val2; }