ASMを使用して生成したクラスを読み込もうとすると、予期されるClassVerifyErrorsが発生します。さらに詳しく調べると、jvmが正しく、メソッドが話しているMAX_STACK値が無効であることがわかります。奇妙なことに、スタックと最大ローカルオプションの自動計算を使用しているので、これは問題にはなりません...無効なオプションを使用する方法は非常に単純ですが、結果は不正なバイトコードになります。
目的のメソッドを使用してクラスを作成し、asmで生成されたクラスをjavacが生成するクラスと比較しました。バイトコードの一致は、最大スタックが0であり、javacが値2を設定しているときに間違っています。
最大スタック/ローカルを自分で計算する必要はありません。