if (argCount > 5) il.append(new BIPUSH((byte) argCount)); else il.append(new ICONST((byte) argCount));
il.append(getIntConst(argCount,cp));
    static int createArgArray(    InstructionList il,    InstructionFactory factory,    ConstantPoolGen cp,    Type[] args) {                int argCount = args.length;        if (argCount > 5)            il.append(new BIPUSH((byte) argCount));        else            il.append(new ICONST((byte) argCount));        il.append(new ANEWARRAY(cp.addClass(Type.OBJECT)));        int load = 1;        for (int i = 0; i < argCount; i++) {            il.append(new DUP());            if (i > 5)                il.append(new BIPUSH((byte) i));            else                il.append(new ICONST((byte) i));            if (args[i] instanceof BasicType) {                if (args[i].equals(Type.BOOLEAN)) {                    il.append(new NEW(cp.addClass(BOOLEAN_OBJECT)));                    il.append(new DUP());                    il.append(new ILOAD(load++));                    il.append(                    new INVOKESPECIAL(                    cp.addMethodref(Boolean.class.getName(), CONSTRUCTOR_NAME, "(Z)V")));                } else if (args[i].equals(Type.INT)) {                    il.append(new NEW(cp.addClass(INTEGER_OBJECT)));                    il.append(new DUP());                    il.append(new ILOAD(load++));                    il.append(                    new INVOKESPECIAL(                    cp.addMethodref(Integer.class.getName(), CONSTRUCTOR_NAME, "(I)V")));                } else if (args[i].equals(Type.CHAR)) {                    il.append(new NEW(cp.addClass(CHARACTER_OBJECT)));                    il.append(new DUP());                    il.append(new ILOAD(load++));                    il.append(                    new INVOKESPECIAL(                    cp.addMethodref(Character.class.getName(), CONSTRUCTOR_NAME, "(C)V")));                } else if (args[i].equals(Type.BYTE)) {                    il.append(new NEW(cp.addClass(BYTE_OBJECT)));                    il.append(new DUP());                    il.append(new ILOAD(load++));                    il.append(                    new INVOKESPECIAL(                    cp.addMethodref(Byte.class.getName(), CONSTRUCTOR_NAME, "(B)V")));                } else if (args[i].equals(Type.SHORT)) {                    il.append(new NEW(cp.addClass(SHORT_OBJECT)));                    il.append(new DUP());                    il.append(new ILOAD(load++));                    il.append(                    new INVOKESPECIAL(                    cp.addMethodref(Short.class.getName(), CONSTRUCTOR_NAME, "(S)V")));                } else if (args[i].equals(Type.LONG)) {                    il.append(new NEW(cp.addClass(LONG_OBJECT)));                    il.append(new DUP());                    il.append(new LLOAD(load));                    load += 2;                    il.append(                    new INVOKESPECIAL(                    cp.addMethodref(Long.class.getName(), CONSTRUCTOR_NAME, "(J)V")));                } else if (args[i].equals(Type.DOUBLE)) {                    il.append(new NEW(cp.addClass(DOUBLE_OBJECT)));                    il.append(new DUP());                    il.append(new DLOAD(load));                    load += 2;                    il.append(                    new INVOKESPECIAL(                    cp.addMethodref(Double.class.getName(), CONSTRUCTOR_NAME, "(D)V")));                } else if (args[i].equals(Type.FLOAT)) {                    il.append(new NEW(cp.addClass(FLOAT_OBJECT)));                    il.append(new DUP());                    il.append(new FLOAD(load++));                    il.append(                    new INVOKESPECIAL(                    cp.addMethodref(Float.class.getName(), CONSTRUCTOR_NAME, "(F)V")));                }                il.append(new AASTORE());            } else {                il.append(new ALOAD(load++));                il.append(new AASTORE());            }        }        return load;    }