final String delegateSig)
{
final ExceptionsAttribute exceptAttr = null;
// begin of method body
final InsnTarget begin = new InsnTarget();
Insn insn = begin;
// check arg
insn = appendCheckVarNonNull(insn, 1,
JAVA_IllegalArgumentException_Path,
"arg1");
// store the array argument length into local var
insn = insn.append(Insn.create(opc_aload_1));
insn = insn.append(Insn.create(opc_arraylength));
insn = insn.append(Insn.create(opc_istore_2));
// init loop counter and goto loop check
final InsnTarget loopcheck = new InsnTarget();
insn = insn.append(Insn.create(opc_iconst_0));
insn = insn.append(Insn.create(opc_istore_3));
insn = insn.append(Insn.create(opc_goto, loopcheck));
// loop body: call self-delegating method with array element
final InsnTarget loopbody = new InsnTarget();
insn = insn.append(loopbody);
insn = insn.append(Insn.create(opc_aload_0));
// select element from array argument at loop counter
insn = insn.append(Insn.create(opc_aload_1));