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