{
exception_count = e.length + 3; // Throwable, Error, RuntimeException
code_length += 9; // new, dup_x1, swap, invokespecial, athrow
}
int handler_pc = code_length - 1;
CPStringBuilder signature = new CPStringBuilder("(");
for (int j = 0; j < paramtypes.length; j++)
signature.append(TypeSignature.getEncodingOfClass(paramtypes[j]));
signature.append(")").append(TypeSignature.getEncodingOfClass(ret_type));
// Now we have enough information to emit the method.
// handler.access_flags
putU2(Modifier.PUBLIC | Modifier.FINAL);
// handler.name_index
putU2(utf8Info(m.getName()));
// handler.descriptor_index
putU2(utf8Info(signature.toString()));
// handler.attributes_count - Code is necessary, Exceptions possible
putU2(e.length > 0 ? 2 : 1);
// handler.Code.info:
// type name(args) {