public class javax.sound.midi.MidiSystem
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: javax.sound.midi.MidiSystem
  super_class: java.lang.Object
{
  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // javax.sound.midi.MidiSystem this
         0: .line 152
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 153
            return
        end local 0 // javax.sound.midi.MidiSystem this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljavax/sound/midi/MidiSystem;

  public static javax.sound.midi.MidiDevice$Info[] getMidiDeviceInfo();
    descriptor: ()[Ljavax/sound/midi/MidiDevice$Info;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=0
         0: .line 166
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 0 /* allInfos */
        start local 0 // java.util.List allInfos
         1: .line 167
            invokestatic javax.sound.midi.MidiSystem.getMidiDeviceProviders:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2
            goto 4
      StackMap locals: java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiDeviceProvider
            astore 1 /* provider */
        start local 1 // javax.sound.midi.spi.MidiDeviceProvider provider
         3: .line 168
            aload 0 /* allInfos */
            aload 1 /* provider */
            invokevirtual javax.sound.midi.spi.MidiDeviceProvider.getDeviceInfo:()[Ljavax/sound/midi/MidiDevice$Info;
            invokestatic java.util.Collections.addAll:(Ljava/util/Collection;[Ljava/lang/Object;)Z
            pop
        end local 1 // javax.sound.midi.spi.MidiDeviceProvider provider
         4: .line 167
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 170
            aload 0 /* allInfos */
            aload 0 /* allInfos */
            invokeinterface java.util.List.size:()I
            anewarray javax.sound.midi.MidiDevice$Info
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast javax.sound.midi.MidiDevice$Info[]
            areturn
        end local 0 // java.util.List allInfos
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            1    6     0  allInfos  Ljava/util/List<Ljavax/sound/midi/MidiDevice$Info;>;
            3    4     1  provider  Ljavax/sound/midi/spi/MidiDeviceProvider;

  public static javax.sound.midi.MidiDevice getMidiDevice(javax.sound.midi.MidiDevice$Info);
    descriptor: (Ljavax/sound/midi/MidiDevice$Info;)Ljavax/sound/midi/MidiDevice;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=3, args_size=1
        start local 0 // javax.sound.midi.MidiDevice$Info info
         0: .line 187
            aload 0 /* info */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 188
            invokestatic javax.sound.midi.MidiSystem.getMidiDeviceProviders:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2
            goto 5
      StackMap locals: javax.sound.midi.MidiDevice$Info top java.util.Iterator
      StackMap stack:
         2: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiDeviceProvider
            astore 1 /* provider */
        start local 1 // javax.sound.midi.spi.MidiDeviceProvider provider
         3: .line 189
            aload 1 /* provider */
            aload 0 /* info */
            invokevirtual javax.sound.midi.spi.MidiDeviceProvider.isDeviceSupported:(Ljavax/sound/midi/MidiDevice$Info;)Z
            ifeq 5
         4: .line 190
            aload 1 /* provider */
            aload 0 /* info */
            invokevirtual javax.sound.midi.spi.MidiDeviceProvider.getDevice:(Ljavax/sound/midi/MidiDevice$Info;)Ljavax/sound/midi/MidiDevice;
            areturn
        end local 1 // javax.sound.midi.spi.MidiDeviceProvider provider
         5: .line 188
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 193
            new java.lang.IllegalArgumentException
            dup
         7: .line 194
            ldc "Requested device not installed: %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* info */
            aastore
         8: .line 193
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // javax.sound.midi.MidiDevice$Info info
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      info  Ljavax/sound/midi/MidiDevice$Info;
            3    5     1  provider  Ljavax/sound/midi/spi/MidiDeviceProvider;
    Exceptions:
      throws javax.sound.midi.MidiUnavailableException
    MethodParameters:
      Name  Flags
      info  final

  public static javax.sound.midi.Receiver getReceiver();
    descriptor: ()Ljavax/sound/midi/Receiver;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=0
         0: .line 232
            ldc Ljavax/sound/midi/Receiver;
            invokestatic javax.sound.midi.MidiSystem.getDefaultDeviceWrapper:(Ljava/lang/Class;)Ljavax/sound/midi/MidiDevice;
            astore 0 /* device */
        start local 0 // javax.sound.midi.MidiDevice device
         1: .line 234
            aload 0 /* device */
            instanceof com.sun.media.sound.ReferenceCountingDevice
            ifeq 4
         2: .line 235
            aload 0 /* device */
            checkcast com.sun.media.sound.ReferenceCountingDevice
            invokeinterface com.sun.media.sound.ReferenceCountingDevice.getReceiverReferenceCounting:()Ljavax/sound/midi/Receiver;
            astore 1 /* receiver */
        start local 1 // javax.sound.midi.Receiver receiver
         3: .line 236
            goto 5
        end local 1 // javax.sound.midi.Receiver receiver
         4: .line 237
      StackMap locals: javax.sound.midi.MidiDevice
      StackMap stack:
            aload 0 /* device */
            invokeinterface javax.sound.midi.MidiDevice.getReceiver:()Ljavax/sound/midi/Receiver;
            astore 1 /* receiver */
        start local 1 // javax.sound.midi.Receiver receiver
         5: .line 239
      StackMap locals: javax.sound.midi.Receiver
      StackMap stack:
            aload 1 /* receiver */
            instanceof javax.sound.midi.MidiDeviceReceiver
            ifne 7
         6: .line 240
            new com.sun.media.sound.MidiDeviceReceiverEnvelope
            dup
            aload 0 /* device */
            aload 1 /* receiver */
            invokespecial com.sun.media.sound.MidiDeviceReceiverEnvelope.<init>:(Ljavax/sound/midi/MidiDevice;Ljavax/sound/midi/Receiver;)V
            astore 1 /* receiver */
         7: .line 242
      StackMap locals:
      StackMap stack:
            aload 1 /* receiver */
            areturn
        end local 1 // javax.sound.midi.Receiver receiver
        end local 0 // javax.sound.midi.MidiDevice device
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            1    8     0    device  Ljavax/sound/midi/MidiDevice;
            3    4     1  receiver  Ljavax/sound/midi/Receiver;
            5    8     1  receiver  Ljavax/sound/midi/Receiver;
    Exceptions:
      throws javax.sound.midi.MidiUnavailableException

  public static javax.sound.midi.Transmitter getTransmitter();
    descriptor: ()Ljavax/sound/midi/Transmitter;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=0
         0: .line 277
            ldc Ljavax/sound/midi/Transmitter;
            invokestatic javax.sound.midi.MidiSystem.getDefaultDeviceWrapper:(Ljava/lang/Class;)Ljavax/sound/midi/MidiDevice;
            astore 0 /* device */
        start local 0 // javax.sound.midi.MidiDevice device
         1: .line 279
            aload 0 /* device */
            instanceof com.sun.media.sound.ReferenceCountingDevice
            ifeq 4
         2: .line 280
            aload 0 /* device */
            checkcast com.sun.media.sound.ReferenceCountingDevice
            invokeinterface com.sun.media.sound.ReferenceCountingDevice.getTransmitterReferenceCounting:()Ljavax/sound/midi/Transmitter;
            astore 1 /* transmitter */
        start local 1 // javax.sound.midi.Transmitter transmitter
         3: .line 281
            goto 5
        end local 1 // javax.sound.midi.Transmitter transmitter
         4: .line 282
      StackMap locals: javax.sound.midi.MidiDevice
      StackMap stack:
            aload 0 /* device */
            invokeinterface javax.sound.midi.MidiDevice.getTransmitter:()Ljavax/sound/midi/Transmitter;
            astore 1 /* transmitter */
        start local 1 // javax.sound.midi.Transmitter transmitter
         5: .line 284
      StackMap locals: javax.sound.midi.Transmitter
      StackMap stack:
            aload 1 /* transmitter */
            instanceof javax.sound.midi.MidiDeviceTransmitter
            ifne 7
         6: .line 285
            new com.sun.media.sound.MidiDeviceTransmitterEnvelope
            dup
            aload 0 /* device */
            aload 1 /* transmitter */
            invokespecial com.sun.media.sound.MidiDeviceTransmitterEnvelope.<init>:(Ljavax/sound/midi/MidiDevice;Ljavax/sound/midi/Transmitter;)V
            astore 1 /* transmitter */
         7: .line 287
      StackMap locals:
      StackMap stack:
            aload 1 /* transmitter */
            areturn
        end local 1 // javax.sound.midi.Transmitter transmitter
        end local 0 // javax.sound.midi.MidiDevice device
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            1    8     0       device  Ljavax/sound/midi/MidiDevice;
            3    4     1  transmitter  Ljavax/sound/midi/Transmitter;
            5    8     1  transmitter  Ljavax/sound/midi/Transmitter;
    Exceptions:
      throws javax.sound.midi.MidiUnavailableException

  public static javax.sound.midi.Synthesizer getSynthesizer();
    descriptor: ()Ljavax/sound/midi/Synthesizer;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 305
            ldc Ljavax/sound/midi/Synthesizer;
            invokestatic javax.sound.midi.MidiSystem.getDefaultDeviceWrapper:(Ljava/lang/Class;)Ljavax/sound/midi/MidiDevice;
            checkcast javax.sound.midi.Synthesizer
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws javax.sound.midi.MidiUnavailableException

  public static javax.sound.midi.Sequencer getSequencer();
    descriptor: ()Ljavax/sound/midi/Sequencer;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 337
            iconst_1
            invokestatic javax.sound.midi.MidiSystem.getSequencer:(Z)Ljavax/sound/midi/Sequencer;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws javax.sound.midi.MidiUnavailableException

  public static javax.sound.midi.Sequencer getSequencer(boolean);
    descriptor: (Z)Ljavax/sound/midi/Sequencer;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // boolean connected
         0: .line 377
            ldc Ljavax/sound/midi/Sequencer;
            invokestatic javax.sound.midi.MidiSystem.getDefaultDeviceWrapper:(Ljava/lang/Class;)Ljavax/sound/midi/MidiDevice;
            checkcast javax.sound.midi.Sequencer
            astore 1 /* seq */
        start local 1 // javax.sound.midi.Sequencer seq
         1: .line 379
            iload 0 /* connected */
            ifeq 35
         2: .line 386
            aconst_null
            astore 2 /* rec */
        start local 2 // javax.sound.midi.Receiver rec
         3: .line 387
            aconst_null
            astore 3 /* mue */
        start local 3 // javax.sound.midi.MidiUnavailableException mue
         4: .line 391
            invokestatic javax.sound.midi.MidiSystem.getSynthesizer:()Ljavax/sound/midi/Synthesizer;
            astore 4 /* synth */
        start local 4 // javax.sound.midi.Synthesizer synth
         5: .line 392
            aload 4 /* synth */
            instanceof com.sun.media.sound.ReferenceCountingDevice
            ifeq 8
         6: .line 393
            aload 4 /* synth */
            checkcast com.sun.media.sound.ReferenceCountingDevice
            invokeinterface com.sun.media.sound.ReferenceCountingDevice.getReceiverReferenceCounting:()Ljavax/sound/midi/Receiver;
            astore 2 /* rec */
         7: .line 394
            goto 21
         8: .line 395
      StackMap locals: int javax.sound.midi.Sequencer javax.sound.midi.Receiver javax.sound.midi.MidiUnavailableException javax.sound.midi.Synthesizer
      StackMap stack:
            aload 4 /* synth */
            invokeinterface javax.sound.midi.Synthesizer.open:()V
         9: .line 397
            aload 4 /* synth */
            invokeinterface javax.sound.midi.Synthesizer.getReceiver:()Ljavax/sound/midi/Receiver;
            astore 2 /* rec */
        10: .line 398
            goto 15
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 5
        12: .line 400
            aload 2 /* rec */
            ifnonnull 14
        13: .line 401
            aload 4 /* synth */
            invokeinterface javax.sound.midi.Synthesizer.close:()V
        14: .line 403
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 5
            athrow
        15: .line 400
      StackMap locals:
      StackMap stack:
            aload 2 /* rec */
            ifnonnull 21
        16: .line 401
            aload 4 /* synth */
            invokeinterface javax.sound.midi.Synthesizer.close:()V
        end local 4 // javax.sound.midi.Synthesizer synth
        17: .line 405
            goto 21
      StackMap locals: int javax.sound.midi.Sequencer javax.sound.midi.Receiver javax.sound.midi.MidiUnavailableException
      StackMap stack: javax.sound.midi.MidiUnavailableException
        18: astore 4 /* e */
        start local 4 // javax.sound.midi.MidiUnavailableException e
        19: .line 407
            aload 4 /* e */
            instanceof javax.sound.midi.MidiUnavailableException
            ifeq 21
        20: .line 408
            aload 4 /* e */
            astore 3 /* mue */
        end local 4 // javax.sound.midi.MidiUnavailableException e
        21: .line 411
      StackMap locals:
      StackMap stack:
            aload 2 /* rec */
            ifnonnull 27
        22: .line 414
            invokestatic javax.sound.midi.MidiSystem.getReceiver:()Ljavax/sound/midi/Receiver;
            astore 2 /* rec */
        23: .line 415
            goto 27
      StackMap locals:
      StackMap stack: java.lang.Exception
        24: astore 4 /* e */
        start local 4 // java.lang.Exception e
        25: .line 417
            aload 4 /* e */
            instanceof javax.sound.midi.MidiUnavailableException
            ifeq 27
        26: .line 418
            aload 4 /* e */
            checkcast javax.sound.midi.MidiUnavailableException
            astore 3 /* mue */
        end local 4 // java.lang.Exception e
        27: .line 422
      StackMap locals:
      StackMap stack:
            aload 2 /* rec */
            ifnull 32
        28: .line 423
            aload 1 /* seq */
            invokeinterface javax.sound.midi.Sequencer.getTransmitter:()Ljavax/sound/midi/Transmitter;
            aload 2 /* rec */
            invokeinterface javax.sound.midi.Transmitter.setReceiver:(Ljavax/sound/midi/Receiver;)V
        29: .line 424
            aload 1 /* seq */
            instanceof com.sun.media.sound.AutoConnectSequencer
            ifeq 35
        30: .line 425
            aload 1 /* seq */
            checkcast com.sun.media.sound.AutoConnectSequencer
            aload 2 /* rec */
            invokeinterface com.sun.media.sound.AutoConnectSequencer.setAutoConnect:(Ljavax/sound/midi/Receiver;)V
        31: .line 427
            goto 35
        32: .line 428
      StackMap locals:
      StackMap stack:
            aload 3 /* mue */
            ifnull 34
        33: .line 429
            aload 3 /* mue */
            athrow
        34: .line 431
      StackMap locals:
      StackMap stack:
            new javax.sound.midi.MidiUnavailableException
            dup
            ldc "no receiver available"
            invokespecial javax.sound.midi.MidiUnavailableException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // javax.sound.midi.MidiUnavailableException mue
        end local 2 // javax.sound.midi.Receiver rec
        35: .line 434
      StackMap locals:
      StackMap stack:
            aload 1 /* seq */
            areturn
        end local 1 // javax.sound.midi.Sequencer seq
        end local 0 // boolean connected
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   36     0  connected  Z
            1   36     1        seq  Ljavax/sound/midi/Sequencer;
            3   35     2        rec  Ljavax/sound/midi/Receiver;
            4   35     3        mue  Ljavax/sound/midi/MidiUnavailableException;
            5   17     4      synth  Ljavax/sound/midi/Synthesizer;
           19   21     4          e  Ljavax/sound/midi/MidiUnavailableException;
           25   27     4          e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           9    11      11  any
           4    17      18  Class javax.sound.midi.MidiUnavailableException
          22    23      24  Class java.lang.Exception
    Exceptions:
      throws javax.sound.midi.MidiUnavailableException
    MethodParameters:
           Name  Flags
      connected  

  public static javax.sound.midi.Soundbank getSoundbank(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Ljavax/sound/midi/Soundbank;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.io.InputStream stream
         0: .line 458
            aload 0 /* stream */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 460
            aconst_null
            astore 1 /* sp */
        start local 1 // javax.sound.midi.spi.SoundbankReader sp
         2: .line 461
            aconst_null
            astore 2 /* s */
        start local 2 // javax.sound.midi.Soundbank s
         3: .line 463
            invokestatic javax.sound.midi.MidiSystem.getSoundbankReaders:()Ljava/util/List;
            astore 3 /* providers */
        start local 3 // java.util.List providers
         4: .line 465
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         5: goto 11
         6: .line 466
      StackMap locals: java.io.InputStream javax.sound.midi.spi.SoundbankReader javax.sound.midi.Soundbank java.util.List int
      StackMap stack:
            aload 3 /* providers */
            iload 4 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.SoundbankReader
            astore 1 /* sp */
         7: .line 467
            aload 1 /* sp */
            aload 0 /* stream */
            invokevirtual javax.sound.midi.spi.SoundbankReader.getSoundbank:(Ljava/io/InputStream;)Ljavax/sound/midi/Soundbank;
            astore 2 /* s */
         8: .line 469
            aload 2 /* s */
            ifnull 10
         9: .line 470
            aload 2 /* s */
            areturn
        10: .line 465
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 4 /* i */
            aload 3 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 6
        end local 4 // int i
        12: .line 473
            new javax.sound.midi.InvalidMidiDataException
            dup
            ldc "cannot get soundbank from stream"
            invokespecial javax.sound.midi.InvalidMidiDataException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.util.List providers
        end local 2 // javax.sound.midi.Soundbank s
        end local 1 // javax.sound.midi.spi.SoundbankReader sp
        end local 0 // java.io.InputStream stream
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0     stream  Ljava/io/InputStream;
            2   13     1         sp  Ljavax/sound/midi/spi/SoundbankReader;
            3   13     2          s  Ljavax/sound/midi/Soundbank;
            4   13     3  providers  Ljava/util/List<Ljavax/sound/midi/spi/SoundbankReader;>;
            5   12     4          i  I
    Exceptions:
      throws javax.sound.midi.InvalidMidiDataException, java.io.IOException
    MethodParameters:
        Name  Flags
      stream  final

  public static javax.sound.midi.Soundbank getSoundbank(java.net.URL);
    descriptor: (Ljava/net/URL;)Ljavax/sound/midi/Soundbank;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.net.URL url
         0: .line 490
            aload 0 /* url */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 492
            aconst_null
            astore 1 /* sp */
        start local 1 // javax.sound.midi.spi.SoundbankReader sp
         2: .line 493
            aconst_null
            astore 2 /* s */
        start local 2 // javax.sound.midi.Soundbank s
         3: .line 495
            invokestatic javax.sound.midi.MidiSystem.getSoundbankReaders:()Ljava/util/List;
            astore 3 /* providers */
        start local 3 // java.util.List providers
         4: .line 497
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         5: goto 11
         6: .line 498
      StackMap locals: java.net.URL javax.sound.midi.spi.SoundbankReader javax.sound.midi.Soundbank java.util.List int
      StackMap stack:
            aload 3 /* providers */
            iload 4 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.SoundbankReader
            astore 1 /* sp */
         7: .line 499
            aload 1 /* sp */
            aload 0 /* url */
            invokevirtual javax.sound.midi.spi.SoundbankReader.getSoundbank:(Ljava/net/URL;)Ljavax/sound/midi/Soundbank;
            astore 2 /* s */
         8: .line 501
            aload 2 /* s */
            ifnull 10
         9: .line 502
            aload 2 /* s */
            areturn
        10: .line 497
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 4 /* i */
            aload 3 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 6
        end local 4 // int i
        12: .line 505
            new javax.sound.midi.InvalidMidiDataException
            dup
            ldc "cannot get soundbank from stream"
            invokespecial javax.sound.midi.InvalidMidiDataException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.util.List providers
        end local 2 // javax.sound.midi.Soundbank s
        end local 1 // javax.sound.midi.spi.SoundbankReader sp
        end local 0 // java.net.URL url
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0        url  Ljava/net/URL;
            2   13     1         sp  Ljavax/sound/midi/spi/SoundbankReader;
            3   13     2          s  Ljavax/sound/midi/Soundbank;
            4   13     3  providers  Ljava/util/List<Ljavax/sound/midi/spi/SoundbankReader;>;
            5   12     4          i  I
    Exceptions:
      throws javax.sound.midi.InvalidMidiDataException, java.io.IOException
    MethodParameters:
      Name  Flags
      url   final

  public static javax.sound.midi.Soundbank getSoundbank(java.io.File);
    descriptor: (Ljava/io/File;)Ljavax/sound/midi/Soundbank;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.io.File file
         0: .line 522
            aload 0 /* file */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 524
            aconst_null
            astore 1 /* sp */
        start local 1 // javax.sound.midi.spi.SoundbankReader sp
         2: .line 525
            aconst_null
            astore 2 /* s */
        start local 2 // javax.sound.midi.Soundbank s
         3: .line 527
            invokestatic javax.sound.midi.MidiSystem.getSoundbankReaders:()Ljava/util/List;
            astore 3 /* providers */
        start local 3 // java.util.List providers
         4: .line 529
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         5: goto 11
         6: .line 530
      StackMap locals: java.io.File javax.sound.midi.spi.SoundbankReader javax.sound.midi.Soundbank java.util.List int
      StackMap stack:
            aload 3 /* providers */
            iload 4 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.SoundbankReader
            astore 1 /* sp */
         7: .line 531
            aload 1 /* sp */
            aload 0 /* file */
            invokevirtual javax.sound.midi.spi.SoundbankReader.getSoundbank:(Ljava/io/File;)Ljavax/sound/midi/Soundbank;
            astore 2 /* s */
         8: .line 533
            aload 2 /* s */
            ifnull 10
         9: .line 534
            aload 2 /* s */
            areturn
        10: .line 529
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 4 /* i */
            aload 3 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 6
        end local 4 // int i
        12: .line 537
            new javax.sound.midi.InvalidMidiDataException
            dup
            ldc "cannot get soundbank from stream"
            invokespecial javax.sound.midi.InvalidMidiDataException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.util.List providers
        end local 2 // javax.sound.midi.Soundbank s
        end local 1 // javax.sound.midi.spi.SoundbankReader sp
        end local 0 // java.io.File file
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0       file  Ljava/io/File;
            2   13     1         sp  Ljavax/sound/midi/spi/SoundbankReader;
            3   13     2          s  Ljavax/sound/midi/Soundbank;
            4   13     3  providers  Ljava/util/List<Ljavax/sound/midi/spi/SoundbankReader;>;
            5   12     4          i  I
    Exceptions:
      throws javax.sound.midi.InvalidMidiDataException, java.io.IOException
    MethodParameters:
      Name  Flags
      file  final

  public static javax.sound.midi.MidiFileFormat getMidiFileFormat(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Ljavax/sound/midi/MidiFileFormat;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.io.InputStream stream
         0: .line 574
            aload 0 /* stream */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 576
            invokestatic javax.sound.midi.MidiSystem.getMidiFileReaders:()Ljava/util/List;
            astore 1 /* providers */
        start local 1 // java.util.List providers
         2: .line 577
            aconst_null
            astore 2 /* format */
        start local 2 // javax.sound.midi.MidiFileFormat format
         3: .line 579
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         4: goto 10
         5: .line 580
      StackMap locals: java.util.List javax.sound.midi.MidiFileFormat int
      StackMap stack:
            aload 1 /* providers */
            iload 3 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiFileReader
            astore 4 /* reader */
        start local 4 // javax.sound.midi.spi.MidiFileReader reader
         6: .line 582
            aload 4 /* reader */
            aload 0 /* stream */
            invokevirtual javax.sound.midi.spi.MidiFileReader.getMidiFileFormat:(Ljava/io/InputStream;)Ljavax/sound/midi/MidiFileFormat;
            astore 2 /* format */
         7: .line 583
            goto 11
         8: .line 584
      StackMap locals: java.io.InputStream java.util.List javax.sound.midi.MidiFileFormat int javax.sound.midi.spi.MidiFileReader
      StackMap stack: javax.sound.midi.InvalidMidiDataException
            pop
        end local 4 // javax.sound.midi.spi.MidiFileReader reader
         9: .line 579
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 3 /* i */
            aload 1 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 5
        end local 3 // int i
        11: .line 589
      StackMap locals:
      StackMap stack:
            aload 2 /* format */
            ifnonnull 13
        12: .line 590
            new javax.sound.midi.InvalidMidiDataException
            dup
            ldc "input stream is not a supported file type"
            invokespecial javax.sound.midi.InvalidMidiDataException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 592
      StackMap locals:
      StackMap stack:
            aload 2 /* format */
            areturn
        end local 2 // javax.sound.midi.MidiFileFormat format
        end local 1 // java.util.List providers
        end local 0 // java.io.InputStream stream
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0     stream  Ljava/io/InputStream;
            2   14     1  providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiFileReader;>;
            3   14     2     format  Ljavax/sound/midi/MidiFileFormat;
            4   11     3          i  I
            6    9     4     reader  Ljavax/sound/midi/spi/MidiFileReader;
      Exception table:
        from    to  target  type
           6     7       8  Class javax.sound.midi.InvalidMidiDataException
    Exceptions:
      throws javax.sound.midi.InvalidMidiDataException, java.io.IOException
    MethodParameters:
        Name  Flags
      stream  final

  public static javax.sound.midi.MidiFileFormat getMidiFileFormat(java.net.URL);
    descriptor: (Ljava/net/URL;)Ljavax/sound/midi/MidiFileFormat;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.net.URL url
         0: .line 620
            aload 0 /* url */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 622
            invokestatic javax.sound.midi.MidiSystem.getMidiFileReaders:()Ljava/util/List;
            astore 1 /* providers */
        start local 1 // java.util.List providers
         2: .line 623
            aconst_null
            astore 2 /* format */
        start local 2 // javax.sound.midi.MidiFileFormat format
         3: .line 625
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         4: goto 10
         5: .line 626
      StackMap locals: java.util.List javax.sound.midi.MidiFileFormat int
      StackMap stack:
            aload 1 /* providers */
            iload 3 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiFileReader
            astore 4 /* reader */
        start local 4 // javax.sound.midi.spi.MidiFileReader reader
         6: .line 628
            aload 4 /* reader */
            aload 0 /* url */
            invokevirtual javax.sound.midi.spi.MidiFileReader.getMidiFileFormat:(Ljava/net/URL;)Ljavax/sound/midi/MidiFileFormat;
            astore 2 /* format */
         7: .line 629
            goto 11
         8: .line 630
      StackMap locals: java.net.URL java.util.List javax.sound.midi.MidiFileFormat int javax.sound.midi.spi.MidiFileReader
      StackMap stack: javax.sound.midi.InvalidMidiDataException
            pop
        end local 4 // javax.sound.midi.spi.MidiFileReader reader
         9: .line 625
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 3 /* i */
            aload 1 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 5
        end local 3 // int i
        11: .line 635
      StackMap locals:
      StackMap stack:
            aload 2 /* format */
            ifnonnull 13
        12: .line 636
            new javax.sound.midi.InvalidMidiDataException
            dup
            ldc "url is not a supported file type"
            invokespecial javax.sound.midi.InvalidMidiDataException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 638
      StackMap locals:
      StackMap stack:
            aload 2 /* format */
            areturn
        end local 2 // javax.sound.midi.MidiFileFormat format
        end local 1 // java.util.List providers
        end local 0 // java.net.URL url
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0        url  Ljava/net/URL;
            2   14     1  providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiFileReader;>;
            3   14     2     format  Ljavax/sound/midi/MidiFileFormat;
            4   11     3          i  I
            6    9     4     reader  Ljavax/sound/midi/spi/MidiFileReader;
      Exception table:
        from    to  target  type
           6     7       8  Class javax.sound.midi.InvalidMidiDataException
    Exceptions:
      throws javax.sound.midi.InvalidMidiDataException, java.io.IOException
    MethodParameters:
      Name  Flags
      url   final

  public static javax.sound.midi.MidiFileFormat getMidiFileFormat(java.io.File);
    descriptor: (Ljava/io/File;)Ljavax/sound/midi/MidiFileFormat;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.io.File file
         0: .line 666
            aload 0 /* file */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 668
            invokestatic javax.sound.midi.MidiSystem.getMidiFileReaders:()Ljava/util/List;
            astore 1 /* providers */
        start local 1 // java.util.List providers
         2: .line 669
            aconst_null
            astore 2 /* format */
        start local 2 // javax.sound.midi.MidiFileFormat format
         3: .line 671
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         4: goto 10
         5: .line 672
      StackMap locals: java.util.List javax.sound.midi.MidiFileFormat int
      StackMap stack:
            aload 1 /* providers */
            iload 3 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiFileReader
            astore 4 /* reader */
        start local 4 // javax.sound.midi.spi.MidiFileReader reader
         6: .line 674
            aload 4 /* reader */
            aload 0 /* file */
            invokevirtual javax.sound.midi.spi.MidiFileReader.getMidiFileFormat:(Ljava/io/File;)Ljavax/sound/midi/MidiFileFormat;
            astore 2 /* format */
         7: .line 675
            goto 11
         8: .line 676
      StackMap locals: java.io.File java.util.List javax.sound.midi.MidiFileFormat int javax.sound.midi.spi.MidiFileReader
      StackMap stack: javax.sound.midi.InvalidMidiDataException
            pop
        end local 4 // javax.sound.midi.spi.MidiFileReader reader
         9: .line 671
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 3 /* i */
            aload 1 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 5
        end local 3 // int i
        11: .line 681
      StackMap locals:
      StackMap stack:
            aload 2 /* format */
            ifnonnull 13
        12: .line 682
            new javax.sound.midi.InvalidMidiDataException
            dup
            ldc "file is not a supported file type"
            invokespecial javax.sound.midi.InvalidMidiDataException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 684
      StackMap locals:
      StackMap stack:
            aload 2 /* format */
            areturn
        end local 2 // javax.sound.midi.MidiFileFormat format
        end local 1 // java.util.List providers
        end local 0 // java.io.File file
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       file  Ljava/io/File;
            2   14     1  providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiFileReader;>;
            3   14     2     format  Ljavax/sound/midi/MidiFileFormat;
            4   11     3          i  I
            6    9     4     reader  Ljavax/sound/midi/spi/MidiFileReader;
      Exception table:
        from    to  target  type
           6     7       8  Class javax.sound.midi.InvalidMidiDataException
    Exceptions:
      throws javax.sound.midi.InvalidMidiDataException, java.io.IOException
    MethodParameters:
      Name  Flags
      file  final

  public static javax.sound.midi.Sequence getSequence(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Ljavax/sound/midi/Sequence;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.io.InputStream stream
         0: .line 721
            aload 0 /* stream */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 723
            invokestatic javax.sound.midi.MidiSystem.getMidiFileReaders:()Ljava/util/List;
            astore 1 /* providers */
        start local 1 // java.util.List providers
         2: .line 724
            aconst_null
            astore 2 /* sequence */
        start local 2 // javax.sound.midi.Sequence sequence
         3: .line 726
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         4: goto 10
         5: .line 727
      StackMap locals: java.util.List javax.sound.midi.Sequence int
      StackMap stack:
            aload 1 /* providers */
            iload 3 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiFileReader
            astore 4 /* reader */
        start local 4 // javax.sound.midi.spi.MidiFileReader reader
         6: .line 729
            aload 4 /* reader */
            aload 0 /* stream */
            invokevirtual javax.sound.midi.spi.MidiFileReader.getSequence:(Ljava/io/InputStream;)Ljavax/sound/midi/Sequence;
            astore 2 /* sequence */
         7: .line 730
            goto 11
         8: .line 731
      StackMap locals: java.io.InputStream java.util.List javax.sound.midi.Sequence int javax.sound.midi.spi.MidiFileReader
      StackMap stack: javax.sound.midi.InvalidMidiDataException
            pop
        end local 4 // javax.sound.midi.spi.MidiFileReader reader
         9: .line 726
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 3 /* i */
            aload 1 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 5
        end local 3 // int i
        11: .line 736
      StackMap locals:
      StackMap stack:
            aload 2 /* sequence */
            ifnonnull 13
        12: .line 737
            new javax.sound.midi.InvalidMidiDataException
            dup
            ldc "could not get sequence from input stream"
            invokespecial javax.sound.midi.InvalidMidiDataException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 739
      StackMap locals:
      StackMap stack:
            aload 2 /* sequence */
            areturn
        end local 2 // javax.sound.midi.Sequence sequence
        end local 1 // java.util.List providers
        end local 0 // java.io.InputStream stream
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0     stream  Ljava/io/InputStream;
            2   14     1  providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiFileReader;>;
            3   14     2   sequence  Ljavax/sound/midi/Sequence;
            4   11     3          i  I
            6    9     4     reader  Ljavax/sound/midi/spi/MidiFileReader;
      Exception table:
        from    to  target  type
           6     7       8  Class javax.sound.midi.InvalidMidiDataException
    Exceptions:
      throws javax.sound.midi.InvalidMidiDataException, java.io.IOException
    MethodParameters:
        Name  Flags
      stream  final

  public static javax.sound.midi.Sequence getSequence(java.net.URL);
    descriptor: (Ljava/net/URL;)Ljavax/sound/midi/Sequence;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.net.URL url
         0: .line 765
            aload 0 /* url */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 767
            invokestatic javax.sound.midi.MidiSystem.getMidiFileReaders:()Ljava/util/List;
            astore 1 /* providers */
        start local 1 // java.util.List providers
         2: .line 768
            aconst_null
            astore 2 /* sequence */
        start local 2 // javax.sound.midi.Sequence sequence
         3: .line 770
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         4: goto 10
         5: .line 771
      StackMap locals: java.util.List javax.sound.midi.Sequence int
      StackMap stack:
            aload 1 /* providers */
            iload 3 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiFileReader
            astore 4 /* reader */
        start local 4 // javax.sound.midi.spi.MidiFileReader reader
         6: .line 773
            aload 4 /* reader */
            aload 0 /* url */
            invokevirtual javax.sound.midi.spi.MidiFileReader.getSequence:(Ljava/net/URL;)Ljavax/sound/midi/Sequence;
            astore 2 /* sequence */
         7: .line 774
            goto 11
         8: .line 775
      StackMap locals: java.net.URL java.util.List javax.sound.midi.Sequence int javax.sound.midi.spi.MidiFileReader
      StackMap stack: javax.sound.midi.InvalidMidiDataException
            pop
        end local 4 // javax.sound.midi.spi.MidiFileReader reader
         9: .line 770
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 3 /* i */
            aload 1 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 5
        end local 3 // int i
        11: .line 780
      StackMap locals:
      StackMap stack:
            aload 2 /* sequence */
            ifnonnull 13
        12: .line 781
            new javax.sound.midi.InvalidMidiDataException
            dup
            ldc "could not get sequence from URL"
            invokespecial javax.sound.midi.InvalidMidiDataException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 783
      StackMap locals:
      StackMap stack:
            aload 2 /* sequence */
            areturn
        end local 2 // javax.sound.midi.Sequence sequence
        end local 1 // java.util.List providers
        end local 0 // java.net.URL url
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0        url  Ljava/net/URL;
            2   14     1  providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiFileReader;>;
            3   14     2   sequence  Ljavax/sound/midi/Sequence;
            4   11     3          i  I
            6    9     4     reader  Ljavax/sound/midi/spi/MidiFileReader;
      Exception table:
        from    to  target  type
           6     7       8  Class javax.sound.midi.InvalidMidiDataException
    Exceptions:
      throws javax.sound.midi.InvalidMidiDataException, java.io.IOException
    MethodParameters:
      Name  Flags
      url   final

  public static javax.sound.midi.Sequence getSequence(java.io.File);
    descriptor: (Ljava/io/File;)Ljavax/sound/midi/Sequence;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.io.File file
         0: .line 811
            aload 0 /* file */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 813
            invokestatic javax.sound.midi.MidiSystem.getMidiFileReaders:()Ljava/util/List;
            astore 1 /* providers */
        start local 1 // java.util.List providers
         2: .line 814
            aconst_null
            astore 2 /* sequence */
        start local 2 // javax.sound.midi.Sequence sequence
         3: .line 816
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         4: goto 10
         5: .line 817
      StackMap locals: java.util.List javax.sound.midi.Sequence int
      StackMap stack:
            aload 1 /* providers */
            iload 3 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiFileReader
            astore 4 /* reader */
        start local 4 // javax.sound.midi.spi.MidiFileReader reader
         6: .line 819
            aload 4 /* reader */
            aload 0 /* file */
            invokevirtual javax.sound.midi.spi.MidiFileReader.getSequence:(Ljava/io/File;)Ljavax/sound/midi/Sequence;
            astore 2 /* sequence */
         7: .line 820
            goto 11
         8: .line 821
      StackMap locals: java.io.File java.util.List javax.sound.midi.Sequence int javax.sound.midi.spi.MidiFileReader
      StackMap stack: javax.sound.midi.InvalidMidiDataException
            pop
        end local 4 // javax.sound.midi.spi.MidiFileReader reader
         9: .line 816
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 3 /* i */
            aload 1 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 5
        end local 3 // int i
        11: .line 826
      StackMap locals:
      StackMap stack:
            aload 2 /* sequence */
            ifnonnull 13
        12: .line 827
            new javax.sound.midi.InvalidMidiDataException
            dup
            ldc "could not get sequence from file"
            invokespecial javax.sound.midi.InvalidMidiDataException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 829
      StackMap locals:
      StackMap stack:
            aload 2 /* sequence */
            areturn
        end local 2 // javax.sound.midi.Sequence sequence
        end local 1 // java.util.List providers
        end local 0 // java.io.File file
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       file  Ljava/io/File;
            2   14     1  providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiFileReader;>;
            3   14     2   sequence  Ljavax/sound/midi/Sequence;
            4   11     3          i  I
            6    9     4     reader  Ljavax/sound/midi/spi/MidiFileReader;
      Exception table:
        from    to  target  type
           6     7       8  Class javax.sound.midi.InvalidMidiDataException
    Exceptions:
      throws javax.sound.midi.InvalidMidiDataException, java.io.IOException
    MethodParameters:
      Name  Flags
      file  final

  public static int[] getMidiFileTypes();
    descriptor: ()[I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=0
         0: .line 842
            invokestatic javax.sound.midi.MidiSystem.getMidiFileWriters:()Ljava/util/List;
            astore 0 /* providers */
        start local 0 // java.util.List providers
         1: .line 843
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 1 /* allTypes */
        start local 1 // java.util.Set allTypes
         2: .line 847
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         3: goto 12
         4: .line 848
      StackMap locals: java.util.List java.util.Set int
      StackMap stack:
            aload 0 /* providers */
            iload 2 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiFileWriter
            astore 3 /* writer */
        start local 3 // javax.sound.midi.spi.MidiFileWriter writer
         5: .line 849
            aload 3 /* writer */
            invokevirtual javax.sound.midi.spi.MidiFileWriter.getMidiFileTypes:()[I
            astore 4 /* types */
        start local 4 // int[] types
         6: .line 850
            iconst_0
            istore 5 /* j */
        start local 5 // int j
         7: goto 10
         8: .line 851
      StackMap locals: javax.sound.midi.spi.MidiFileWriter int[] int
      StackMap stack:
            aload 1 /* allTypes */
            aload 4 /* types */
            iload 5 /* j */
            iaload
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         9: .line 850
            iinc 5 /* j */ 1
      StackMap locals:
      StackMap stack:
        10: iload 5 /* j */
            aload 4 /* types */
            arraylength
            if_icmplt 8
        end local 5 // int j
        end local 4 // int[] types
        end local 3 // javax.sound.midi.spi.MidiFileWriter writer
        11: .line 847
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 2 /* i */
            aload 0 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 4
        end local 2 // int i
        13: .line 854
            aload 1 /* allTypes */
            invokeinterface java.util.Set.size:()I
            newarray 10
            astore 2 /* resultTypes */
        start local 2 // int[] resultTypes
        14: .line 855
            iconst_0
            istore 3 /* index */
        start local 3 // int index
        15: .line 856
            aload 1 /* allTypes */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4 /* iterator */
        start local 4 // java.util.Iterator iterator
        16: .line 857
            goto 19
        17: .line 858
      StackMap locals: java.util.List java.util.Set int[] int java.util.Iterator
      StackMap stack:
            aload 4 /* iterator */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 5 /* integer */
        start local 5 // java.lang.Integer integer
        18: .line 859
            aload 2 /* resultTypes */
            iload 3 /* index */
            iinc 3 /* index */ 1
            aload 5 /* integer */
            invokevirtual java.lang.Integer.intValue:()I
            iastore
        end local 5 // java.lang.Integer integer
        19: .line 857
      StackMap locals:
      StackMap stack:
            aload 4 /* iterator */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 17
        20: .line 861
            aload 2 /* resultTypes */
            areturn
        end local 4 // java.util.Iterator iterator
        end local 3 // int index
        end local 2 // int[] resultTypes
        end local 1 // java.util.Set allTypes
        end local 0 // java.util.List providers
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            1   21     0    providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiFileWriter;>;
            2   21     1     allTypes  Ljava/util/Set<Ljava/lang/Integer;>;
            3   13     2            i  I
            5   11     3       writer  Ljavax/sound/midi/spi/MidiFileWriter;
            6   11     4        types  [I
            7   11     5            j  I
           14   21     2  resultTypes  [I
           15   21     3        index  I
           16   21     4     iterator  Ljava/util/Iterator<Ljava/lang/Integer;>;
           18   19     5      integer  Ljava/lang/Integer;

  public static boolean isFileTypeSupported(int);
    descriptor: (I)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // int fileType
         0: .line 874
            invokestatic javax.sound.midi.MidiSystem.getMidiFileWriters:()Ljava/util/List;
            astore 1 /* providers */
        start local 1 // java.util.List providers
         1: .line 876
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 7
         3: .line 877
      StackMap locals: java.util.List int
      StackMap stack:
            aload 1 /* providers */
            iload 2 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiFileWriter
            astore 3 /* writer */
        start local 3 // javax.sound.midi.spi.MidiFileWriter writer
         4: .line 878
            aload 3 /* writer */
            iload 0 /* fileType */
            invokevirtual javax.sound.midi.spi.MidiFileWriter.isFileTypeSupported:(I)Z
            ifeq 6
         5: .line 879
            iconst_1
            ireturn
        end local 3 // javax.sound.midi.spi.MidiFileWriter writer
         6: .line 876
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 2 /* i */
            aload 1 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 3
        end local 2 // int i
         8: .line 882
            iconst_0
            ireturn
        end local 1 // java.util.List providers
        end local 0 // int fileType
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0   fileType  I
            1    9     1  providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiFileWriter;>;
            2    8     2          i  I
            4    6     3     writer  Ljavax/sound/midi/spi/MidiFileWriter;
    MethodParameters:
          Name  Flags
      fileType  

  public static int[] getMidiFileTypes(javax.sound.midi.Sequence);
    descriptor: (Ljavax/sound/midi/Sequence;)[I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // javax.sound.midi.Sequence sequence
         0: .line 895
            aload 0 /* sequence */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 897
            invokestatic javax.sound.midi.MidiSystem.getMidiFileWriters:()Ljava/util/List;
            astore 1 /* providers */
        start local 1 // java.util.List providers
         2: .line 898
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 2 /* allTypes */
        start local 2 // java.util.Set allTypes
         3: .line 902
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         4: goto 13
         5: .line 903
      StackMap locals: java.util.List java.util.Set int
      StackMap stack:
            aload 1 /* providers */
            iload 3 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiFileWriter
            astore 4 /* writer */
        start local 4 // javax.sound.midi.spi.MidiFileWriter writer
         6: .line 904
            aload 4 /* writer */
            aload 0 /* sequence */
            invokevirtual javax.sound.midi.spi.MidiFileWriter.getMidiFileTypes:(Ljavax/sound/midi/Sequence;)[I
            astore 5 /* types */
        start local 5 // int[] types
         7: .line 905
            iconst_0
            istore 6 /* j */
        start local 6 // int j
         8: goto 11
         9: .line 906
      StackMap locals: javax.sound.midi.spi.MidiFileWriter int[] int
      StackMap stack:
            aload 2 /* allTypes */
            aload 5 /* types */
            iload 6 /* j */
            iaload
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        10: .line 905
            iinc 6 /* j */ 1
      StackMap locals:
      StackMap stack:
        11: iload 6 /* j */
            aload 5 /* types */
            arraylength
            if_icmplt 9
        end local 6 // int j
        end local 5 // int[] types
        end local 4 // javax.sound.midi.spi.MidiFileWriter writer
        12: .line 902
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 3 /* i */
            aload 1 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 5
        end local 3 // int i
        14: .line 909
            aload 2 /* allTypes */
            invokeinterface java.util.Set.size:()I
            newarray 10
            astore 3 /* resultTypes */
        start local 3 // int[] resultTypes
        15: .line 910
            iconst_0
            istore 4 /* index */
        start local 4 // int index
        16: .line 911
            aload 2 /* allTypes */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 5 /* iterator */
        start local 5 // java.util.Iterator iterator
        17: .line 912
            goto 20
        18: .line 913
      StackMap locals: javax.sound.midi.Sequence java.util.List java.util.Set int[] int java.util.Iterator
      StackMap stack:
            aload 5 /* iterator */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 6 /* integer */
        start local 6 // java.lang.Integer integer
        19: .line 914
            aload 3 /* resultTypes */
            iload 4 /* index */
            iinc 4 /* index */ 1
            aload 6 /* integer */
            invokevirtual java.lang.Integer.intValue:()I
            iastore
        end local 6 // java.lang.Integer integer
        20: .line 912
      StackMap locals:
      StackMap stack:
            aload 5 /* iterator */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 18
        21: .line 916
            aload 3 /* resultTypes */
            areturn
        end local 5 // java.util.Iterator iterator
        end local 4 // int index
        end local 3 // int[] resultTypes
        end local 2 // java.util.Set allTypes
        end local 1 // java.util.List providers
        end local 0 // javax.sound.midi.Sequence sequence
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   22     0     sequence  Ljavax/sound/midi/Sequence;
            2   22     1    providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiFileWriter;>;
            3   22     2     allTypes  Ljava/util/Set<Ljava/lang/Integer;>;
            4   14     3            i  I
            6   12     4       writer  Ljavax/sound/midi/spi/MidiFileWriter;
            7   12     5        types  [I
            8   12     6            j  I
           15   22     3  resultTypes  [I
           16   22     4        index  I
           17   22     5     iterator  Ljava/util/Iterator<Ljava/lang/Integer;>;
           19   20     6      integer  Ljava/lang/Integer;
    MethodParameters:
          Name  Flags
      sequence  final

  public static boolean isFileTypeSupported(int, javax.sound.midi.Sequence);
    descriptor: (ILjavax/sound/midi/Sequence;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // int fileType
        start local 1 // javax.sound.midi.Sequence sequence
         0: .line 931
            aload 1 /* sequence */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 933
            invokestatic javax.sound.midi.MidiSystem.getMidiFileWriters:()Ljava/util/List;
            astore 2 /* providers */
        start local 2 // java.util.List providers
         2: .line 935
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 8
         4: .line 936
      StackMap locals: java.util.List int
      StackMap stack:
            aload 2 /* providers */
            iload 3 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiFileWriter
            astore 4 /* writer */
        start local 4 // javax.sound.midi.spi.MidiFileWriter writer
         5: .line 937
            aload 4 /* writer */
            iload 0 /* fileType */
            aload 1 /* sequence */
            invokevirtual javax.sound.midi.spi.MidiFileWriter.isFileTypeSupported:(ILjavax/sound/midi/Sequence;)Z
            ifeq 7
         6: .line 938
            iconst_1
            ireturn
        end local 4 // javax.sound.midi.spi.MidiFileWriter writer
         7: .line 935
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 3 /* i */
            aload 2 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 4
        end local 3 // int i
         9: .line 941
            iconst_0
            ireturn
        end local 2 // java.util.List providers
        end local 1 // javax.sound.midi.Sequence sequence
        end local 0 // int fileType
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0   fileType  I
            0   10     1   sequence  Ljavax/sound/midi/Sequence;
            2   10     2  providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiFileWriter;>;
            3    9     3          i  I
            5    7     4     writer  Ljavax/sound/midi/spi/MidiFileWriter;
    MethodParameters:
          Name  Flags
      fileType  final
      sequence  final

  public static int write(javax.sound.midi.Sequence, int, java.io.OutputStream);
    descriptor: (Ljavax/sound/midi/Sequence;ILjava/io/OutputStream;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // javax.sound.midi.Sequence in
        start local 1 // int fileType
        start local 2 // java.io.OutputStream out
         0: .line 963
            aload 0 /* in */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 964
            aload 2 /* out */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 966
            invokestatic javax.sound.midi.MidiSystem.getMidiFileWriters:()Ljava/util/List;
            astore 3 /* providers */
        start local 3 // java.util.List providers
         3: .line 968
            bipush -2
            istore 4 /* bytesWritten */
        start local 4 // int bytesWritten
         4: .line 970
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         5: goto 11
         6: .line 971
      StackMap locals: java.util.List int int
      StackMap stack:
            aload 3 /* providers */
            iload 5 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiFileWriter
            astore 6 /* writer */
        start local 6 // javax.sound.midi.spi.MidiFileWriter writer
         7: .line 972
            aload 6 /* writer */
            iload 1 /* fileType */
            aload 0 /* in */
            invokevirtual javax.sound.midi.spi.MidiFileWriter.isFileTypeSupported:(ILjavax/sound/midi/Sequence;)Z
            ifeq 10
         8: .line 974
            aload 6 /* writer */
            aload 0 /* in */
            iload 1 /* fileType */
            aload 2 /* out */
            invokevirtual javax.sound.midi.spi.MidiFileWriter.write:(Ljavax/sound/midi/Sequence;ILjava/io/OutputStream;)I
            istore 4 /* bytesWritten */
         9: .line 975
            goto 12
        end local 6 // javax.sound.midi.spi.MidiFileWriter writer
        10: .line 970
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 5 /* i */
            aload 3 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 6
        end local 5 // int i
        12: .line 978
      StackMap locals:
      StackMap stack:
            iload 4 /* bytesWritten */
            bipush -2
            if_icmpne 14
        13: .line 979
            new java.lang.IllegalArgumentException
            dup
            ldc "MIDI file type is not supported"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 981
      StackMap locals:
      StackMap stack:
            iload 4 /* bytesWritten */
            ireturn
        end local 4 // int bytesWritten
        end local 3 // java.util.List providers
        end local 2 // java.io.OutputStream out
        end local 1 // int fileType
        end local 0 // javax.sound.midi.Sequence in
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0            in  Ljavax/sound/midi/Sequence;
            0   15     1      fileType  I
            0   15     2           out  Ljava/io/OutputStream;
            3   15     3     providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiFileWriter;>;
            4   15     4  bytesWritten  I
            5   12     5             i  I
            7   10     6        writer  Ljavax/sound/midi/spi/MidiFileWriter;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      in        final
      fileType  final
      out       final

  public static int write(javax.sound.midi.Sequence, int, java.io.File);
    descriptor: (Ljavax/sound/midi/Sequence;ILjava/io/File;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // javax.sound.midi.Sequence in
        start local 1 // int type
        start local 2 // java.io.File out
         0: .line 1002
            aload 0 /* in */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 1003
            aload 2 /* out */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 1005
            invokestatic javax.sound.midi.MidiSystem.getMidiFileWriters:()Ljava/util/List;
            astore 3 /* providers */
        start local 3 // java.util.List providers
         3: .line 1007
            bipush -2
            istore 4 /* bytesWritten */
        start local 4 // int bytesWritten
         4: .line 1009
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         5: goto 11
         6: .line 1010
      StackMap locals: java.util.List int int
      StackMap stack:
            aload 3 /* providers */
            iload 5 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiFileWriter
            astore 6 /* writer */
        start local 6 // javax.sound.midi.spi.MidiFileWriter writer
         7: .line 1011
            aload 6 /* writer */
            iload 1 /* type */
            aload 0 /* in */
            invokevirtual javax.sound.midi.spi.MidiFileWriter.isFileTypeSupported:(ILjavax/sound/midi/Sequence;)Z
            ifeq 10
         8: .line 1013
            aload 6 /* writer */
            aload 0 /* in */
            iload 1 /* type */
            aload 2 /* out */
            invokevirtual javax.sound.midi.spi.MidiFileWriter.write:(Ljavax/sound/midi/Sequence;ILjava/io/File;)I
            istore 4 /* bytesWritten */
         9: .line 1014
            goto 12
        end local 6 // javax.sound.midi.spi.MidiFileWriter writer
        10: .line 1009
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 5 /* i */
            aload 3 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 6
        end local 5 // int i
        12: .line 1017
      StackMap locals:
      StackMap stack:
            iload 4 /* bytesWritten */
            bipush -2
            if_icmpne 14
        13: .line 1018
            new java.lang.IllegalArgumentException
            dup
            ldc "MIDI file type is not supported"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 1020
      StackMap locals:
      StackMap stack:
            iload 4 /* bytesWritten */
            ireturn
        end local 4 // int bytesWritten
        end local 3 // java.util.List providers
        end local 2 // java.io.File out
        end local 1 // int type
        end local 0 // javax.sound.midi.Sequence in
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0            in  Ljavax/sound/midi/Sequence;
            0   15     1          type  I
            0   15     2           out  Ljava/io/File;
            3   15     3     providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiFileWriter;>;
            4   15     4  bytesWritten  I
            5   12     5             i  I
            7   10     6        writer  Ljavax/sound/midi/spi/MidiFileWriter;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      in    final
      type  final
      out   final

  private static java.util.List<javax.sound.midi.spi.MidiDeviceProvider> getMidiDeviceProviders();
    descriptor: ()Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 1032
            ldc Ljavax/sound/midi/spi/MidiDeviceProvider;
            invokestatic javax.sound.midi.MidiSystem.getProviders:(Ljava/lang/Class;)Ljava/util/List;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: ()Ljava/util/List<Ljavax/sound/midi/spi/MidiDeviceProvider;>;

  private static java.util.List<javax.sound.midi.spi.SoundbankReader> getSoundbankReaders();
    descriptor: ()Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 1042
            ldc Ljavax/sound/midi/spi/SoundbankReader;
            invokestatic javax.sound.midi.MidiSystem.getProviders:(Ljava/lang/Class;)Ljava/util/List;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: ()Ljava/util/List<Ljavax/sound/midi/spi/SoundbankReader;>;

  private static java.util.List<javax.sound.midi.spi.MidiFileWriter> getMidiFileWriters();
    descriptor: ()Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 1052
            ldc Ljavax/sound/midi/spi/MidiFileWriter;
            invokestatic javax.sound.midi.MidiSystem.getProviders:(Ljava/lang/Class;)Ljava/util/List;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: ()Ljava/util/List<Ljavax/sound/midi/spi/MidiFileWriter;>;

  private static java.util.List<javax.sound.midi.spi.MidiFileReader> getMidiFileReaders();
    descriptor: ()Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 1062
            ldc Ljavax/sound/midi/spi/MidiFileReader;
            invokestatic javax.sound.midi.MidiSystem.getProviders:(Ljava/lang/Class;)Ljava/util/List;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: ()Ljava/util/List<Ljavax/sound/midi/spi/MidiFileReader;>;

  private static javax.sound.midi.MidiDevice getDefaultDeviceWrapper(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljavax/sound/midi/MidiDevice;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.lang.Class deviceClass
         0: .line 1080
            aload 0 /* deviceClass */
            invokestatic javax.sound.midi.MidiSystem.getDefaultDevice:(Ljava/lang/Class;)Ljavax/sound/midi/MidiDevice;
         1: areturn
         2: .line 1081
      StackMap locals:
      StackMap stack: java.lang.IllegalArgumentException
            astore 1 /* iae */
        start local 1 // java.lang.IllegalArgumentException iae
         3: .line 1082
            new javax.sound.midi.MidiUnavailableException
            dup
            invokespecial javax.sound.midi.MidiUnavailableException.<init>:()V
            astore 2 /* mae */
        start local 2 // javax.sound.midi.MidiUnavailableException mae
         4: .line 1083
            aload 2 /* mae */
            aload 1 /* iae */
            invokevirtual javax.sound.midi.MidiUnavailableException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
         5: .line 1084
            aload 2 /* mae */
            athrow
        end local 2 // javax.sound.midi.MidiUnavailableException mae
        end local 1 // java.lang.IllegalArgumentException iae
        end local 0 // java.lang.Class deviceClass
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0  deviceClass  Ljava/lang/Class<*>;
            3    6     1          iae  Ljava/lang/IllegalArgumentException;
            4    6     2          mae  Ljavax/sound/midi/MidiUnavailableException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.IllegalArgumentException
    Exceptions:
      throws javax.sound.midi.MidiUnavailableException
    Signature: (Ljava/lang/Class<*>;)Ljavax/sound/midi/MidiDevice;
    MethodParameters:
             Name  Flags
      deviceClass  

  private static javax.sound.midi.MidiDevice getDefaultDevice(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljavax/sound/midi/MidiDevice;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // java.lang.Class deviceClass
         0: .line 1097
            invokestatic javax.sound.midi.MidiSystem.getMidiDeviceProviders:()Ljava/util/List;
            astore 1 /* providers */
        start local 1 // java.util.List providers
         1: .line 1098
            aload 0 /* deviceClass */
            invokestatic com.sun.media.sound.JDK13Services.getDefaultProviderClassName:(Ljava/lang/Class;)Ljava/lang/String;
            astore 2 /* providerClassName */
        start local 2 // java.lang.String providerClassName
         2: .line 1099
            aload 0 /* deviceClass */
            invokestatic com.sun.media.sound.JDK13Services.getDefaultInstanceName:(Ljava/lang/Class;)Ljava/lang/String;
            astore 3 /* instanceName */
        start local 3 // java.lang.String instanceName
         3: .line 1102
            aload 2 /* providerClassName */
            ifnull 13
         4: .line 1103
            aload 2 /* providerClassName */
            aload 1 /* providers */
            invokestatic javax.sound.midi.MidiSystem.getNamedProvider:(Ljava/lang/String;Ljava/util/List;)Ljavax/sound/midi/spi/MidiDeviceProvider;
            astore 5 /* defaultProvider */
        start local 5 // javax.sound.midi.spi.MidiDeviceProvider defaultProvider
         5: .line 1104
            aload 5 /* defaultProvider */
            ifnull 13
         6: .line 1105
            aload 3 /* instanceName */
            ifnull 10
         7: .line 1106
            aload 3 /* instanceName */
            aload 5 /* defaultProvider */
            aload 0 /* deviceClass */
            invokestatic javax.sound.midi.MidiSystem.getNamedDevice:(Ljava/lang/String;Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class;)Ljavax/sound/midi/MidiDevice;
            astore 4 /* device */
        start local 4 // javax.sound.midi.MidiDevice device
         8: .line 1107
            aload 4 /* device */
            ifnull 10
         9: .line 1108
            aload 4 /* device */
            areturn
        end local 4 // javax.sound.midi.MidiDevice device
        10: .line 1111
      StackMap locals: java.lang.Class java.util.List java.lang.String java.lang.String top javax.sound.midi.spi.MidiDeviceProvider
      StackMap stack:
            aload 5 /* defaultProvider */
            aload 0 /* deviceClass */
            invokestatic javax.sound.midi.MidiSystem.getFirstDevice:(Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class;)Ljavax/sound/midi/MidiDevice;
            astore 4 /* device */
        start local 4 // javax.sound.midi.MidiDevice device
        11: .line 1112
            aload 4 /* device */
            ifnull 13
        12: .line 1113
            aload 4 /* device */
            areturn
        end local 5 // javax.sound.midi.spi.MidiDeviceProvider defaultProvider
        end local 4 // javax.sound.midi.MidiDevice device
        13: .line 1124
      StackMap locals: java.lang.Class java.util.List java.lang.String java.lang.String
      StackMap stack:
            aload 3 /* instanceName */
            ifnull 17
        14: .line 1125
            aload 3 /* instanceName */
            aload 1 /* providers */
            aload 0 /* deviceClass */
            invokestatic javax.sound.midi.MidiSystem.getNamedDevice:(Ljava/lang/String;Ljava/util/List;Ljava/lang/Class;)Ljavax/sound/midi/MidiDevice;
            astore 4 /* device */
        start local 4 // javax.sound.midi.MidiDevice device
        15: .line 1126
            aload 4 /* device */
            ifnull 17
        16: .line 1127
            aload 4 /* device */
            areturn
        end local 4 // javax.sound.midi.MidiDevice device
        17: .line 1135
      StackMap locals:
      StackMap stack:
            aload 1 /* providers */
            aload 0 /* deviceClass */
            invokestatic javax.sound.midi.MidiSystem.getFirstDevice:(Ljava/util/List;Ljava/lang/Class;)Ljavax/sound/midi/MidiDevice;
            astore 4 /* device */
        start local 4 // javax.sound.midi.MidiDevice device
        18: .line 1136
            aload 4 /* device */
            ifnull 20
        19: .line 1137
            aload 4 /* device */
            areturn
        20: .line 1139
      StackMap locals: javax.sound.midi.MidiDevice
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Requested device not installed"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // javax.sound.midi.MidiDevice device
        end local 3 // java.lang.String instanceName
        end local 2 // java.lang.String providerClassName
        end local 1 // java.util.List providers
        end local 0 // java.lang.Class deviceClass
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   21     0        deviceClass  Ljava/lang/Class<*>;
            1   21     1          providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiDeviceProvider;>;
            2   21     2  providerClassName  Ljava/lang/String;
            3   21     3       instanceName  Ljava/lang/String;
            8   10     4             device  Ljavax/sound/midi/MidiDevice;
           11   13     4             device  Ljavax/sound/midi/MidiDevice;
           15   17     4             device  Ljavax/sound/midi/MidiDevice;
           18   21     4             device  Ljavax/sound/midi/MidiDevice;
            5   13     5    defaultProvider  Ljavax/sound/midi/spi/MidiDeviceProvider;
    Signature: (Ljava/lang/Class<*>;)Ljavax/sound/midi/MidiDevice;
    MethodParameters:
             Name  Flags
      deviceClass  

  private static javax.sound.midi.spi.MidiDeviceProvider getNamedProvider(java.lang.String, java.util.List<javax.sound.midi.spi.MidiDeviceProvider>);
    descriptor: (Ljava/lang/String;Ljava/util/List;)Ljavax/sound/midi/spi/MidiDeviceProvider;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // java.lang.String providerClassName
        start local 1 // java.util.List providers
         0: .line 1153
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         1: goto 6
         2: .line 1154
      StackMap locals: int
      StackMap stack:
            aload 1 /* providers */
            iload 2 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiDeviceProvider
            astore 3 /* provider */
        start local 3 // javax.sound.midi.spi.MidiDeviceProvider provider
         3: .line 1155
            aload 3 /* provider */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aload 0 /* providerClassName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 5
         4: .line 1156
            aload 3 /* provider */
            areturn
        end local 3 // javax.sound.midi.spi.MidiDeviceProvider provider
         5: .line 1153
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 2 /* i */
            aload 1 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 2
        end local 2 // int i
         7: .line 1159
            aconst_null
            areturn
        end local 1 // java.util.List providers
        end local 0 // java.lang.String providerClassName
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    8     0  providerClassName  Ljava/lang/String;
            0    8     1          providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiDeviceProvider;>;
            1    7     2                  i  I
            3    5     3           provider  Ljavax/sound/midi/spi/MidiDeviceProvider;
    Signature: (Ljava/lang/String;Ljava/util/List<Ljavax/sound/midi/spi/MidiDeviceProvider;>;)Ljavax/sound/midi/spi/MidiDeviceProvider;
    MethodParameters:
                   Name  Flags
      providerClassName  
      providers          

  private static javax.sound.midi.MidiDevice getNamedDevice(java.lang.String, javax.sound.midi.spi.MidiDeviceProvider, java.lang.Class<?>);
    descriptor: (Ljava/lang/String;Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class;)Ljavax/sound/midi/MidiDevice;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // java.lang.String deviceName
        start local 1 // javax.sound.midi.spi.MidiDeviceProvider provider
        start local 2 // java.lang.Class deviceClass
         0: .line 1176
            aload 0 /* deviceName */
            aload 1 /* provider */
            aload 2 /* deviceClass */
         1: .line 1177
            iconst_0
            iconst_0
         2: .line 1176
            invokestatic javax.sound.midi.MidiSystem.getNamedDevice:(Ljava/lang/String;Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class;ZZ)Ljavax/sound/midi/MidiDevice;
            astore 3 /* device */
        start local 3 // javax.sound.midi.MidiDevice device
         3: .line 1178
            aload 3 /* device */
            ifnull 5
         4: .line 1179
            aload 3 /* device */
            areturn
         5: .line 1182
      StackMap locals: javax.sound.midi.MidiDevice
      StackMap stack:
            aload 2 /* deviceClass */
            ldc Ljavax/sound/midi/Receiver;
            if_acmpne 11
         6: .line 1184
            aload 0 /* deviceName */
            aload 1 /* provider */
            aload 2 /* deviceClass */
         7: .line 1185
            iconst_1
            iconst_0
         8: .line 1184
            invokestatic javax.sound.midi.MidiSystem.getNamedDevice:(Ljava/lang/String;Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class;ZZ)Ljavax/sound/midi/MidiDevice;
            astore 3 /* device */
         9: .line 1186
            aload 3 /* device */
            ifnull 11
        10: .line 1187
            aload 3 /* device */
            areturn
        11: .line 1191
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 3 // javax.sound.midi.MidiDevice device
        end local 2 // java.lang.Class deviceClass
        end local 1 // javax.sound.midi.spi.MidiDeviceProvider provider
        end local 0 // java.lang.String deviceName
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0   deviceName  Ljava/lang/String;
            0   12     1     provider  Ljavax/sound/midi/spi/MidiDeviceProvider;
            0   12     2  deviceClass  Ljava/lang/Class<*>;
            3   12     3       device  Ljavax/sound/midi/MidiDevice;
    Signature: (Ljava/lang/String;Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class<*>;)Ljavax/sound/midi/MidiDevice;
    MethodParameters:
             Name  Flags
      deviceName   
      provider     
      deviceClass  

  private static javax.sound.midi.MidiDevice getNamedDevice(java.lang.String, javax.sound.midi.spi.MidiDeviceProvider, java.lang.Class<?>, boolean, boolean);
    descriptor: (Ljava/lang/String;Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class;ZZ)Ljavax/sound/midi/MidiDevice;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=8, args_size=5
        start local 0 // java.lang.String deviceName
        start local 1 // javax.sound.midi.spi.MidiDeviceProvider provider
        start local 2 // java.lang.Class deviceClass
        start local 3 // boolean allowSynthesizer
        start local 4 // boolean allowSequencer
         0: .line 1219
            aload 1 /* provider */
            invokevirtual javax.sound.midi.spi.MidiDeviceProvider.getDeviceInfo:()[Ljavax/sound/midi/MidiDevice$Info;
            astore 5 /* infos */
        start local 5 // javax.sound.midi.MidiDevice$Info[] infos
         1: .line 1220
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         2: goto 11
         3: .line 1221
      StackMap locals: javax.sound.midi.MidiDevice$Info[] int
      StackMap stack:
            aload 5 /* infos */
            iload 6 /* i */
            aaload
            invokevirtual javax.sound.midi.MidiDevice$Info.getName:()Ljava/lang/String;
            aload 0 /* deviceName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 10
         4: .line 1222
            aload 1 /* provider */
            aload 5 /* infos */
            iload 6 /* i */
            aaload
            invokevirtual javax.sound.midi.spi.MidiDeviceProvider.getDevice:(Ljavax/sound/midi/MidiDevice$Info;)Ljavax/sound/midi/MidiDevice;
            astore 7 /* device */
        start local 7 // javax.sound.midi.MidiDevice device
         5: .line 1223
            aload 7 /* device */
            aload 2 /* deviceClass */
         6: .line 1224
            iload 3 /* allowSynthesizer */
            iload 4 /* allowSequencer */
         7: .line 1223
            invokestatic javax.sound.midi.MidiSystem.isAppropriateDevice:(Ljavax/sound/midi/MidiDevice;Ljava/lang/Class;ZZ)Z
         8: .line 1224
            ifeq 10
         9: .line 1225
            aload 7 /* device */
            areturn
        end local 7 // javax.sound.midi.MidiDevice device
        10: .line 1220
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 6 /* i */
            aload 5 /* infos */
            arraylength
            if_icmplt 3
        end local 6 // int i
        12: .line 1229
            aconst_null
            areturn
        end local 5 // javax.sound.midi.MidiDevice$Info[] infos
        end local 4 // boolean allowSequencer
        end local 3 // boolean allowSynthesizer
        end local 2 // java.lang.Class deviceClass
        end local 1 // javax.sound.midi.spi.MidiDeviceProvider provider
        end local 0 // java.lang.String deviceName
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   13     0        deviceName  Ljava/lang/String;
            0   13     1          provider  Ljavax/sound/midi/spi/MidiDeviceProvider;
            0   13     2       deviceClass  Ljava/lang/Class<*>;
            0   13     3  allowSynthesizer  Z
            0   13     4    allowSequencer  Z
            1   13     5             infos  [Ljavax/sound/midi/MidiDevice$Info;
            2   12     6                 i  I
            5   10     7            device  Ljavax/sound/midi/MidiDevice;
    Signature: (Ljava/lang/String;Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class<*>;ZZ)Ljavax/sound/midi/MidiDevice;
    MethodParameters:
                  Name  Flags
      deviceName        
      provider          
      deviceClass       
      allowSynthesizer  
      allowSequencer    

  private static javax.sound.midi.MidiDevice getNamedDevice(java.lang.String, java.util.List<javax.sound.midi.spi.MidiDeviceProvider>, java.lang.Class<?>);
    descriptor: (Ljava/lang/String;Ljava/util/List;Ljava/lang/Class;)Ljavax/sound/midi/MidiDevice;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // java.lang.String deviceName
        start local 1 // java.util.List providers
        start local 2 // java.lang.Class deviceClass
         0: .line 1247
            aload 0 /* deviceName */
            aload 1 /* providers */
            aload 2 /* deviceClass */
         1: .line 1248
            iconst_0
            iconst_0
         2: .line 1247
            invokestatic javax.sound.midi.MidiSystem.getNamedDevice:(Ljava/lang/String;Ljava/util/List;Ljava/lang/Class;ZZ)Ljavax/sound/midi/MidiDevice;
            astore 3 /* device */
        start local 3 // javax.sound.midi.MidiDevice device
         3: .line 1249
            aload 3 /* device */
            ifnull 5
         4: .line 1250
            aload 3 /* device */
            areturn
         5: .line 1253
      StackMap locals: javax.sound.midi.MidiDevice
      StackMap stack:
            aload 2 /* deviceClass */
            ldc Ljavax/sound/midi/Receiver;
            if_acmpne 11
         6: .line 1255
            aload 0 /* deviceName */
            aload 1 /* providers */
            aload 2 /* deviceClass */
         7: .line 1256
            iconst_1
            iconst_0
         8: .line 1255
            invokestatic javax.sound.midi.MidiSystem.getNamedDevice:(Ljava/lang/String;Ljava/util/List;Ljava/lang/Class;ZZ)Ljavax/sound/midi/MidiDevice;
            astore 3 /* device */
         9: .line 1257
            aload 3 /* device */
            ifnull 11
        10: .line 1258
            aload 3 /* device */
            areturn
        11: .line 1262
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 3 // javax.sound.midi.MidiDevice device
        end local 2 // java.lang.Class deviceClass
        end local 1 // java.util.List providers
        end local 0 // java.lang.String deviceName
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0   deviceName  Ljava/lang/String;
            0   12     1    providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiDeviceProvider;>;
            0   12     2  deviceClass  Ljava/lang/Class<*>;
            3   12     3       device  Ljavax/sound/midi/MidiDevice;
    Signature: (Ljava/lang/String;Ljava/util/List<Ljavax/sound/midi/spi/MidiDeviceProvider;>;Ljava/lang/Class<*>;)Ljavax/sound/midi/MidiDevice;
    MethodParameters:
             Name  Flags
      deviceName   
      providers    
      deviceClass  

  private static javax.sound.midi.MidiDevice getNamedDevice(java.lang.String, java.util.List<javax.sound.midi.spi.MidiDeviceProvider>, java.lang.Class<?>, boolean, boolean);
    descriptor: (Ljava/lang/String;Ljava/util/List;Ljava/lang/Class;ZZ)Ljavax/sound/midi/MidiDevice;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // java.lang.String deviceName
        start local 1 // java.util.List providers
        start local 2 // java.lang.Class deviceClass
        start local 3 // boolean allowSynthesizer
        start local 4 // boolean allowSequencer
         0: .line 1291
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         1: goto 11
         2: .line 1292
      StackMap locals: int
      StackMap stack:
            aload 1 /* providers */
            iload 5 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiDeviceProvider
            astore 6 /* provider */
        start local 6 // javax.sound.midi.spi.MidiDeviceProvider provider
         3: .line 1293
            aload 0 /* deviceName */
            aload 6 /* provider */
         4: .line 1294
            aload 2 /* deviceClass */
         5: .line 1295
            iload 3 /* allowSynthesizer */
         6: .line 1296
            iload 4 /* allowSequencer */
         7: .line 1293
            invokestatic javax.sound.midi.MidiSystem.getNamedDevice:(Ljava/lang/String;Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class;ZZ)Ljavax/sound/midi/MidiDevice;
            astore 7 /* device */
        start local 7 // javax.sound.midi.MidiDevice device
         8: .line 1297
            aload 7 /* device */
            ifnull 10
         9: .line 1298
            aload 7 /* device */
            areturn
        end local 7 // javax.sound.midi.MidiDevice device
        end local 6 // javax.sound.midi.spi.MidiDeviceProvider provider
        10: .line 1291
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 5 /* i */
            aload 1 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 2
        end local 5 // int i
        12: .line 1301
            aconst_null
            areturn
        end local 4 // boolean allowSequencer
        end local 3 // boolean allowSynthesizer
        end local 2 // java.lang.Class deviceClass
        end local 1 // java.util.List providers
        end local 0 // java.lang.String deviceName
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   13     0        deviceName  Ljava/lang/String;
            0   13     1         providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiDeviceProvider;>;
            0   13     2       deviceClass  Ljava/lang/Class<*>;
            0   13     3  allowSynthesizer  Z
            0   13     4    allowSequencer  Z
            1   12     5                 i  I
            3   10     6          provider  Ljavax/sound/midi/spi/MidiDeviceProvider;
            8   10     7            device  Ljavax/sound/midi/MidiDevice;
    Signature: (Ljava/lang/String;Ljava/util/List<Ljavax/sound/midi/spi/MidiDeviceProvider;>;Ljava/lang/Class<*>;ZZ)Ljavax/sound/midi/MidiDevice;
    MethodParameters:
                  Name  Flags
      deviceName        
      providers         
      deviceClass       
      allowSynthesizer  
      allowSequencer    

  private static javax.sound.midi.MidiDevice getFirstDevice(javax.sound.midi.spi.MidiDeviceProvider, java.lang.Class<?>);
    descriptor: (Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class;)Ljavax/sound/midi/MidiDevice;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // javax.sound.midi.spi.MidiDeviceProvider provider
        start local 1 // java.lang.Class deviceClass
         0: .line 1317
            aload 0 /* provider */
            aload 1 /* deviceClass */
         1: .line 1318
            iconst_0
            iconst_0
         2: .line 1317
            invokestatic javax.sound.midi.MidiSystem.getFirstDevice:(Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class;ZZ)Ljavax/sound/midi/MidiDevice;
            astore 2 /* device */
        start local 2 // javax.sound.midi.MidiDevice device
         3: .line 1319
            aload 2 /* device */
            ifnull 5
         4: .line 1320
            aload 2 /* device */
            areturn
         5: .line 1323
      StackMap locals: javax.sound.midi.MidiDevice
      StackMap stack:
            aload 1 /* deviceClass */
            ldc Ljavax/sound/midi/Receiver;
            if_acmpne 11
         6: .line 1325
            aload 0 /* provider */
            aload 1 /* deviceClass */
         7: .line 1326
            iconst_1
            iconst_0
         8: .line 1325
            invokestatic javax.sound.midi.MidiSystem.getFirstDevice:(Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class;ZZ)Ljavax/sound/midi/MidiDevice;
            astore 2 /* device */
         9: .line 1327
            aload 2 /* device */
            ifnull 11
        10: .line 1328
            aload 2 /* device */
            areturn
        11: .line 1332
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // javax.sound.midi.MidiDevice device
        end local 1 // java.lang.Class deviceClass
        end local 0 // javax.sound.midi.spi.MidiDeviceProvider provider
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0     provider  Ljavax/sound/midi/spi/MidiDeviceProvider;
            0   12     1  deviceClass  Ljava/lang/Class<*>;
            3   12     2       device  Ljavax/sound/midi/MidiDevice;
    Signature: (Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class<*>;)Ljavax/sound/midi/MidiDevice;
    MethodParameters:
             Name  Flags
      provider     
      deviceClass  

  private static javax.sound.midi.MidiDevice getFirstDevice(javax.sound.midi.spi.MidiDeviceProvider, java.lang.Class<?>, boolean, boolean);
    descriptor: (Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class;ZZ)Ljavax/sound/midi/MidiDevice;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // javax.sound.midi.spi.MidiDeviceProvider provider
        start local 1 // java.lang.Class deviceClass
        start local 2 // boolean allowSynthesizer
        start local 3 // boolean allowSequencer
         0: .line 1359
            aload 0 /* provider */
            invokevirtual javax.sound.midi.spi.MidiDeviceProvider.getDeviceInfo:()[Ljavax/sound/midi/MidiDevice$Info;
            astore 4 /* infos */
        start local 4 // javax.sound.midi.MidiDevice$Info[] infos
         1: .line 1360
            iconst_0
            istore 5 /* j */
        start local 5 // int j
         2: goto 10
         3: .line 1361
      StackMap locals: javax.sound.midi.MidiDevice$Info[] int
      StackMap stack:
            aload 0 /* provider */
            aload 4 /* infos */
            iload 5 /* j */
            aaload
            invokevirtual javax.sound.midi.spi.MidiDeviceProvider.getDevice:(Ljavax/sound/midi/MidiDevice$Info;)Ljavax/sound/midi/MidiDevice;
            astore 6 /* device */
        start local 6 // javax.sound.midi.MidiDevice device
         4: .line 1362
            aload 6 /* device */
            aload 1 /* deviceClass */
         5: .line 1363
            iload 2 /* allowSynthesizer */
            iload 3 /* allowSequencer */
         6: .line 1362
            invokestatic javax.sound.midi.MidiSystem.isAppropriateDevice:(Ljavax/sound/midi/MidiDevice;Ljava/lang/Class;ZZ)Z
         7: .line 1363
            ifeq 9
         8: .line 1364
            aload 6 /* device */
            areturn
        end local 6 // javax.sound.midi.MidiDevice device
         9: .line 1360
      StackMap locals:
      StackMap stack:
            iinc 5 /* j */ 1
      StackMap locals:
      StackMap stack:
        10: iload 5 /* j */
            aload 4 /* infos */
            arraylength
            if_icmplt 3
        end local 5 // int j
        11: .line 1367
            aconst_null
            areturn
        end local 4 // javax.sound.midi.MidiDevice$Info[] infos
        end local 3 // boolean allowSequencer
        end local 2 // boolean allowSynthesizer
        end local 1 // java.lang.Class deviceClass
        end local 0 // javax.sound.midi.spi.MidiDeviceProvider provider
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   12     0          provider  Ljavax/sound/midi/spi/MidiDeviceProvider;
            0   12     1       deviceClass  Ljava/lang/Class<*>;
            0   12     2  allowSynthesizer  Z
            0   12     3    allowSequencer  Z
            1   12     4             infos  [Ljavax/sound/midi/MidiDevice$Info;
            2   11     5                 j  I
            4    9     6            device  Ljavax/sound/midi/MidiDevice;
    Signature: (Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class<*>;ZZ)Ljavax/sound/midi/MidiDevice;
    MethodParameters:
                  Name  Flags
      provider          
      deviceClass       
      allowSynthesizer  
      allowSequencer    

  private static javax.sound.midi.MidiDevice getFirstDevice(java.util.List<javax.sound.midi.spi.MidiDeviceProvider>, java.lang.Class<?>);
    descriptor: (Ljava/util/List;Ljava/lang/Class;)Ljavax/sound/midi/MidiDevice;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // java.util.List providers
        start local 1 // java.lang.Class deviceClass
         0: .line 1384
            aload 0 /* providers */
            aload 1 /* deviceClass */
         1: .line 1385
            iconst_0
            iconst_0
         2: .line 1384
            invokestatic javax.sound.midi.MidiSystem.getFirstDevice:(Ljava/util/List;Ljava/lang/Class;ZZ)Ljavax/sound/midi/MidiDevice;
            astore 2 /* device */
        start local 2 // javax.sound.midi.MidiDevice device
         3: .line 1386
            aload 2 /* device */
            ifnull 5
         4: .line 1387
            aload 2 /* device */
            areturn
         5: .line 1390
      StackMap locals: javax.sound.midi.MidiDevice
      StackMap stack:
            aload 1 /* deviceClass */
            ldc Ljavax/sound/midi/Receiver;
            if_acmpne 11
         6: .line 1392
            aload 0 /* providers */
            aload 1 /* deviceClass */
         7: .line 1393
            iconst_1
            iconst_0
         8: .line 1392
            invokestatic javax.sound.midi.MidiSystem.getFirstDevice:(Ljava/util/List;Ljava/lang/Class;ZZ)Ljavax/sound/midi/MidiDevice;
            astore 2 /* device */
         9: .line 1394
            aload 2 /* device */
            ifnull 11
        10: .line 1395
            aload 2 /* device */
            areturn
        11: .line 1399
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // javax.sound.midi.MidiDevice device
        end local 1 // java.lang.Class deviceClass
        end local 0 // java.util.List providers
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0    providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiDeviceProvider;>;
            0   12     1  deviceClass  Ljava/lang/Class<*>;
            3   12     2       device  Ljavax/sound/midi/MidiDevice;
    Signature: (Ljava/util/List<Ljavax/sound/midi/spi/MidiDeviceProvider;>;Ljava/lang/Class<*>;)Ljavax/sound/midi/MidiDevice;
    MethodParameters:
             Name  Flags
      providers    
      deviceClass  

  private static javax.sound.midi.MidiDevice getFirstDevice(java.util.List<javax.sound.midi.spi.MidiDeviceProvider>, java.lang.Class<?>, boolean, boolean);
    descriptor: (Ljava/util/List;Ljava/lang/Class;ZZ)Ljavax/sound/midi/MidiDevice;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // java.util.List providers
        start local 1 // java.lang.Class deviceClass
        start local 2 // boolean allowSynthesizer
        start local 3 // boolean allowSequencer
         0: .line 1427
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         1: goto 10
         2: .line 1428
      StackMap locals: int
      StackMap stack:
            aload 0 /* providers */
            iload 4 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast javax.sound.midi.spi.MidiDeviceProvider
            astore 5 /* provider */
        start local 5 // javax.sound.midi.spi.MidiDeviceProvider provider
         3: .line 1429
            aload 5 /* provider */
            aload 1 /* deviceClass */
         4: .line 1430
            iload 2 /* allowSynthesizer */
         5: .line 1431
            iload 3 /* allowSequencer */
         6: .line 1429
            invokestatic javax.sound.midi.MidiSystem.getFirstDevice:(Ljavax/sound/midi/spi/MidiDeviceProvider;Ljava/lang/Class;ZZ)Ljavax/sound/midi/MidiDevice;
            astore 6 /* device */
        start local 6 // javax.sound.midi.MidiDevice device
         7: .line 1432
            aload 6 /* device */
            ifnull 9
         8: .line 1433
            aload 6 /* device */
            areturn
        end local 6 // javax.sound.midi.MidiDevice device
        end local 5 // javax.sound.midi.spi.MidiDeviceProvider provider
         9: .line 1427
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 4 /* i */
            aload 0 /* providers */
            invokeinterface java.util.List.size:()I
            if_icmplt 2
        end local 4 // int i
        11: .line 1436
            aconst_null
            areturn
        end local 3 // boolean allowSequencer
        end local 2 // boolean allowSynthesizer
        end local 1 // java.lang.Class deviceClass
        end local 0 // java.util.List providers
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   12     0         providers  Ljava/util/List<Ljavax/sound/midi/spi/MidiDeviceProvider;>;
            0   12     1       deviceClass  Ljava/lang/Class<*>;
            0   12     2  allowSynthesizer  Z
            0   12     3    allowSequencer  Z
            1   11     4                 i  I
            3    9     5          provider  Ljavax/sound/midi/spi/MidiDeviceProvider;
            7    9     6            device  Ljavax/sound/midi/MidiDevice;
    Signature: (Ljava/util/List<Ljavax/sound/midi/spi/MidiDeviceProvider;>;Ljava/lang/Class<*>;ZZ)Ljavax/sound/midi/MidiDevice;
    MethodParameters:
                  Name  Flags
      providers         
      deviceClass       
      allowSynthesizer  
      allowSequencer    

  private static boolean isAppropriateDevice(javax.sound.midi.MidiDevice, java.lang.Class<?>, boolean, );
    descriptor: (Ljavax/sound/midi/MidiDevice;Ljava/lang/Class;ZZ)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // javax.sound.midi.MidiDevice device
        start local 1 // java.lang.Class deviceClass
        start local 2 // boolean allowSynthesizer
        start local 3 // boolean allowSequencer
         0: .line 1468
            aload 1 /* deviceClass */
            aload 0 /* device */
            invokevirtual java.lang.Class.isInstance:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 1471
            iconst_1
            ireturn
         2: .line 1479
      StackMap locals:
      StackMap stack:
            aload 0 /* device */
            instanceof javax.sound.midi.Sequencer
            ifne 4
         3: .line 1480
            aload 0 /* device */
            instanceof javax.sound.midi.Synthesizer
            ifeq 6
         4: .line 1481
      StackMap locals:
      StackMap stack:
            aload 0 /* device */
            instanceof javax.sound.midi.Sequencer
            ifeq 5
            iload 3 /* allowSequencer */
            ifne 6
         5: .line 1482
      StackMap locals:
      StackMap stack:
            aload 0 /* device */
            instanceof javax.sound.midi.Synthesizer
            ifeq 11
            iload 2 /* allowSynthesizer */
            ifeq 11
         6: .line 1485
      StackMap locals:
      StackMap stack:
            aload 1 /* deviceClass */
            ldc Ljavax/sound/midi/Receiver;
            if_acmpne 8
         7: .line 1486
            aload 0 /* device */
            invokeinterface javax.sound.midi.MidiDevice.getMaxReceivers:()I
            ifne 10
         8: .line 1487
      StackMap locals:
      StackMap stack:
            aload 1 /* deviceClass */
            ldc Ljavax/sound/midi/Transmitter;
            if_acmpne 11
         9: .line 1488
            aload 0 /* device */
            invokeinterface javax.sound.midi.MidiDevice.getMaxTransmitters:()I
            ifeq 11
        10: .line 1489
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        11: .line 1493
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 3 // boolean allowSequencer
        end local 2 // boolean allowSynthesizer
        end local 1 // java.lang.Class deviceClass
        end local 0 // javax.sound.midi.MidiDevice device
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   12     0            device  Ljavax/sound/midi/MidiDevice;
            0   12     1       deviceClass  Ljava/lang/Class<*>;
            0   12     2  allowSynthesizer  Z
            0   12     3    allowSequencer  Z
    Signature: (Ljavax/sound/midi/MidiDevice;Ljava/lang/Class<*>;ZZ)Z
    MethodParameters:
                  Name  Flags
      device            
      deviceClass       
      allowSynthesizer  
      allowSequencer    

  private static java.util.List<?> getProviders(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Class providerClass
         0: .line 1509
            aload 0 /* providerClass */
            invokestatic com.sun.media.sound.JDK13Services.getProviders:(Ljava/lang/Class;)Ljava/util/List;
            areturn
        end local 0 // java.lang.Class providerClass
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0  providerClass  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Ljava/util/List<*>;
    MethodParameters:
               Name  Flags
      providerClass  
}
SourceFile: "MidiSystem.java"
InnerClasses:
  public Info = javax.sound.midi.MidiDevice$Info of javax.sound.midi.MidiDevice