Instruction (int opcode, boolean wide, int group, int bytecodeVersion, int[] operands) { if (opcode >= opc_ifeq && opcode <= opc_if_acmpne || opcode == opc_ifnull || opcode == opc_ifnonnull || opcode == opc_jsr || opcode == opc_jsr_w || opcode == opc_goto || opcode == opc_goto_w) { return new JumpInstruction(opcode, group, wide, bytecodeVersion, operands); } else if (opcode == opc_tableswitch || opcode == opc_lookupswitch) { return new SwitchInstruction(opcode, group, wide, bytecodeVersion, operands); } else { return new Instruction(opcode, group, wide, bytecodeVersion, operands); } }