public final class com.sun.media.sound.MidiOutDeviceProvider extends com.sun.media.sound.AbstractMidiDeviceProvider
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.sun.media.sound.MidiOutDeviceProvider
  super_class: com.sun.media.sound.AbstractMidiDeviceProvider
{
  private static com.sun.media.sound.AbstractMidiDeviceProvider$Info[] infos;
    descriptor: [Lcom/sun/media/sound/AbstractMidiDeviceProvider$Info;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static javax.sound.midi.MidiDevice[] devices;
    descriptor: [Ljavax/sound/midi/MidiDevice;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static final boolean enabled;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 39
            aconst_null
            putstatic com.sun.media.sound.MidiOutDeviceProvider.infos:[Lcom/sun/media/sound/AbstractMidiDeviceProvider$Info;
         1: .line 42
            aconst_null
            putstatic com.sun.media.sound.MidiOutDeviceProvider.devices:[Ljavax/sound/midi/MidiDevice;
         2: .line 48
            invokestatic com.sun.media.sound.Platform.initialize:()V
         3: .line 49
            invokestatic com.sun.media.sound.Platform.isMidiIOEnabled:()Z
            putstatic com.sun.media.sound.MidiOutDeviceProvider.enabled:Z
         4: .line 50
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.MidiOutDeviceProvider this
         0: .line 55
            aload 0 /* this */
            invokespecial com.sun.media.sound.AbstractMidiDeviceProvider.<init>:()V
         1: .line 56
            return
        end local 0 // com.sun.media.sound.MidiOutDeviceProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/media/sound/MidiOutDeviceProvider;

  com.sun.media.sound.AbstractMidiDeviceProvider$Info createInfo(int);
    descriptor: (I)Lcom/sun/media/sound/AbstractMidiDeviceProvider$Info;
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.sun.media.sound.MidiOutDeviceProvider this
        start local 1 // int index
         0: .line 60
            getstatic com.sun.media.sound.MidiOutDeviceProvider.enabled:Z
            ifne 2
         1: .line 61
            aconst_null
            areturn
         2: .line 63
      StackMap locals:
      StackMap stack:
            new com.sun.media.sound.MidiOutDeviceProvider$MidiOutDeviceInfo
            dup
            iload 1 /* index */
            ldc Lcom/sun/media/sound/MidiOutDeviceProvider;
            invokespecial com.sun.media.sound.MidiOutDeviceProvider$MidiOutDeviceInfo.<init>:(ILjava/lang/Class;)V
            areturn
        end local 1 // int index
        end local 0 // com.sun.media.sound.MidiOutDeviceProvider this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/sun/media/sound/MidiOutDeviceProvider;
            0    3     1  index  I
    MethodParameters:
       Name  Flags
      index  

  javax.sound.midi.MidiDevice createDevice(com.sun.media.sound.AbstractMidiDeviceProvider$Info);
    descriptor: (Lcom/sun/media/sound/AbstractMidiDeviceProvider$Info;)Ljavax/sound/midi/MidiDevice;
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.media.sound.MidiOutDeviceProvider this
        start local 1 // com.sun.media.sound.AbstractMidiDeviceProvider$Info info
         0: .line 68
            getstatic com.sun.media.sound.MidiOutDeviceProvider.enabled:Z
            ifeq 2
            aload 1 /* info */
            instanceof com.sun.media.sound.MidiOutDeviceProvider$MidiOutDeviceInfo
            ifeq 2
         1: .line 69
            new com.sun.media.sound.MidiOutDevice
            dup
            aload 1 /* info */
            invokespecial com.sun.media.sound.MidiOutDevice.<init>:(Lcom/sun/media/sound/AbstractMidiDeviceProvider$Info;)V
            areturn
         2: .line 71
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // com.sun.media.sound.AbstractMidiDeviceProvider$Info info
        end local 0 // com.sun.media.sound.MidiOutDeviceProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/media/sound/MidiOutDeviceProvider;
            0    3     1  info  Lcom/sun/media/sound/AbstractMidiDeviceProvider$Info;
    MethodParameters:
      Name  Flags
      info  

  int getNumDevices();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.MidiOutDeviceProvider this
         0: .line 76
            getstatic com.sun.media.sound.MidiOutDeviceProvider.enabled:Z
            ifne 2
         1: .line 77
            iconst_0
            ireturn
         2: .line 79
      StackMap locals:
      StackMap stack:
            invokestatic com.sun.media.sound.MidiOutDeviceProvider.nGetNumDevices:()I
            ireturn
        end local 0 // com.sun.media.sound.MidiOutDeviceProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/media/sound/MidiOutDeviceProvider;

  javax.sound.midi.MidiDevice[] getDeviceCache();
    descriptor: ()[Ljavax/sound/midi/MidiDevice;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.MidiOutDeviceProvider this
         0: .line 83
            getstatic com.sun.media.sound.MidiOutDeviceProvider.devices:[Ljavax/sound/midi/MidiDevice;
            areturn
        end local 0 // com.sun.media.sound.MidiOutDeviceProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/MidiOutDeviceProvider;

  void setDeviceCache(javax.sound.midi.MidiDevice[]);
    descriptor: ([Ljavax/sound/midi/MidiDevice;)V
    flags: (0x0000) 
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.sun.media.sound.MidiOutDeviceProvider this
        start local 1 // javax.sound.midi.MidiDevice[] devices
         0: .line 85
            aload 1 /* devices */
            putstatic com.sun.media.sound.MidiOutDeviceProvider.devices:[Ljavax/sound/midi/MidiDevice;
            return
        end local 1 // javax.sound.midi.MidiDevice[] devices
        end local 0 // com.sun.media.sound.MidiOutDeviceProvider this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/sun/media/sound/MidiOutDeviceProvider;
            0    1     1  devices  [Ljavax/sound/midi/MidiDevice;
    MethodParameters:
         Name  Flags
      devices  

  com.sun.media.sound.AbstractMidiDeviceProvider$Info[] getInfoCache();
    descriptor: ()[Lcom/sun/media/sound/AbstractMidiDeviceProvider$Info;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.MidiOutDeviceProvider this
         0: .line 87
            getstatic com.sun.media.sound.MidiOutDeviceProvider.infos:[Lcom/sun/media/sound/AbstractMidiDeviceProvider$Info;
            areturn
        end local 0 // com.sun.media.sound.MidiOutDeviceProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/MidiOutDeviceProvider;

  void setInfoCache(com.sun.media.sound.AbstractMidiDeviceProvider$Info[]);
    descriptor: ([Lcom/sun/media/sound/AbstractMidiDeviceProvider$Info;)V
    flags: (0x0000) 
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.sun.media.sound.MidiOutDeviceProvider this
        start local 1 // com.sun.media.sound.AbstractMidiDeviceProvider$Info[] infos
         0: .line 89
            aload 1 /* infos */
            putstatic com.sun.media.sound.MidiOutDeviceProvider.infos:[Lcom/sun/media/sound/AbstractMidiDeviceProvider$Info;
            return
        end local 1 // com.sun.media.sound.AbstractMidiDeviceProvider$Info[] infos
        end local 0 // com.sun.media.sound.MidiOutDeviceProvider this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/sun/media/sound/MidiOutDeviceProvider;
            0    1     1  infos  [Lcom/sun/media/sound/AbstractMidiDeviceProvider$Info;
    MethodParameters:
       Name  Flags
      infos  

  private static native int nGetNumDevices();
    descriptor: ()I
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE

  private static native java.lang.String nGetName(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    MethodParameters:
       Name  Flags
      index  

  private static native java.lang.String nGetVendor(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    MethodParameters:
       Name  Flags
      index  

  private static native java.lang.String nGetDescription(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    MethodParameters:
       Name  Flags
      index  

  private static native java.lang.String nGetVersion(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    MethodParameters:
       Name  Flags
      index  
}
SourceFile: "MidiOutDeviceProvider.java"
NestMembers:
  com.sun.media.sound.MidiOutDeviceProvider$MidiOutDeviceInfo
InnerClasses:
  Info = com.sun.media.sound.AbstractMidiDeviceProvider$Info of com.sun.media.sound.AbstractMidiDeviceProvider
  final MidiOutDeviceInfo = com.sun.media.sound.MidiOutDeviceProvider$MidiOutDeviceInfo of com.sun.media.sound.MidiOutDeviceProvider