BCEL или ASM .
Недавно я посмотрел несколько библиотек для чтения файлов классов Java. BCEL был самым быстрым, имел наименьшее количество зависимостей, компилировался из коробки и имел восхитительно простой API. Я предпочел BCEL, а не ASM, потому что ASM имеет больше зависимостей (хотя API по общему мнению проще).
AspectJ, как упоминалось ранее, является еще одним жизнеспособным вариантом.
BCEL действительно прост. Вы можете получить список методов в трех строках кода:
ClassParser cp = new ClassParser( "A.class" );
JavaClass jc = cp.parse();
Method[] m = jc.getMethods();
Существуют и другие возможности API для дальнейшего самоанализа, включая, как мне кажется, способы получения инструкций в методе. Однако это решение, вероятно, будет более трудоемким, чем AspectJ.
Другая возможность состоит в том, чтобы изменить сами методы умножения или деления, а не пытаться изменить все экземпляры кода, который вызывает операцию. Это было бы легче сделать с BCEL (или ASM).