IParamsValue (AbstractInsnNode insn, IParamsValue value1, IParamsValue value2) { int size; switch (insn.getOpcode()) { case LALOAD, DALOAD -> { size = 2; leaking |= value1.params; } case LADD, DADD, LSUB, DSUB, LMUL, DMUL, LDIV, DDIV, LREM, DREM, LSHL, LSHR, LUSHR, LAND, LOR, LXOR -> size = 2; case IALOAD, FALOAD, AALOAD, BALOAD, CALOAD, SALOAD -> { leaking |= value1.params; size = 1; } case PUTFIELD -> { leaking |= value1.params; nullableLeaking |= value2.params; size = 1; } default -> size = 1; } return size == 1 ? val1 : val2; }