It is pretty annoying that some classes like Subroutine are final and non-public. Because of that, I cannot extend the Analyzer class. You may think that users won't need to extend the Analyzer class because there is an Interpreter interface, but in my case need it, as i want to handle edges of jumps with a known outcome differently. The same applies to MethodWriter and other classes.
Another thing that bothers me is that InvokeDynamicInsnNode has a public bsmArgs, but ConstantDynamic only has a private one with get / set methods. This is pretty annoying when i want to iterate over the args.
Also think about implementing those methods in the Type class:
public Type toArray(int dimensions) public static Type getOpcodeReturnType(int opcode) public static Type getOpcodeArgumentTypes(int opcode) public static Type getGenericType(int sort)