Мне нужно добавить локальную переменную в сгенерированное тело перехваченного метода.
Я пробовал (чтобы создать переменную int):
List<StackManipulation> statements = new ArrayList();
statements.add(IntegerConstant.forValue(false));
statements.add(MethodVariableAccess.INTEGER.storeAt(3));
...
StackManipulation logic = new StackManipulation.Compound(statements.toArray(new StackManipulation[0]));
StackManipulation.Size size = new StackManipulation.Compound(logic).apply(methodVisitor, context);
return new ByteCodeAppender.Size(size.getMaximalSize(), methodDescription.getStackSize());
но это дает мне
java.lang.VerifyError: переполнение таблицы локальных переменных.
Конечно, в таблице локальных переменных эта переменная уже должна быть.
Чтобы обойти это, я теперь создаю дополнительные параметры метода, которые действуют как локальные переменные, что, конечно, неудобно.
Итак, как я могу изменить таблицу локальных переменных с помощью ByteBuddy?