final class com.sun.media.sound.MidiOutDevice extends com.sun.media.sound.AbstractMidiDevice
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.sun.media.sound.MidiOutDevice
  super_class: com.sun.media.sound.AbstractMidiDevice
{
  void <init>(com.sun.media.sound.AbstractMidiDeviceProvider$Info);
    descriptor: (Lcom/sun/media/sound/AbstractMidiDeviceProvider$Info;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.media.sound.MidiOutDevice this
        start local 1 // com.sun.media.sound.AbstractMidiDeviceProvider$Info info
         0: .line 44
            aload 0 /* this */
            aload 1 /* info */
            invokespecial com.sun.media.sound.AbstractMidiDevice.<init>:(Ljavax/sound/midi/MidiDevice$Info;)V
         1: .line 46
            return
        end local 1 // com.sun.media.sound.AbstractMidiDeviceProvider$Info info
        end local 0 // com.sun.media.sound.MidiOutDevice this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/media/sound/MidiOutDevice;
            0    2     1  info  Lcom/sun/media/sound/AbstractMidiDeviceProvider$Info;
    MethodParameters:
      Name  Flags
      info  

  protected synchronized void implOpen();
    descriptor: ()V
    flags: (0x0024) ACC_PROTECTED, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.sun.media.sound.MidiOutDevice this
         0: .line 53
            aload 0 /* this */
            invokevirtual com.sun.media.sound.MidiOutDevice.getDeviceInfo:()Ljavax/sound/midi/MidiDevice$Info;
            checkcast com.sun.media.sound.AbstractMidiDeviceProvider$Info
            invokevirtual com.sun.media.sound.AbstractMidiDeviceProvider$Info.getIndex:()I
            istore 1 /* index */
        start local 1 // int index
         1: .line 54
            aload 0 /* this */
            aload 0 /* this */
            iload 1 /* index */
            invokevirtual com.sun.media.sound.MidiOutDevice.nOpen:(I)J
            putfield com.sun.media.sound.MidiOutDevice.id:J
         2: .line 55
            aload 0 /* this */
            getfield com.sun.media.sound.MidiOutDevice.id:J
            lconst_0
            lcmp
            ifne 4
         3: .line 56
            new javax.sound.midi.MidiUnavailableException
            dup
            ldc "Unable to open native device"
            invokespecial javax.sound.midi.MidiUnavailableException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 59
      StackMap locals: int
      StackMap stack:
            return
        end local 1 // int index
        end local 0 // com.sun.media.sound.MidiOutDevice this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lcom/sun/media/sound/MidiOutDevice;
            1    5     1  index  I
    Exceptions:
      throws javax.sound.midi.MidiUnavailableException

  protected synchronized void implClose();
    descriptor: ()V
    flags: (0x0024) ACC_PROTECTED, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // com.sun.media.sound.MidiOutDevice this
         0: .line 65
            aload 0 /* this */
            getfield com.sun.media.sound.MidiOutDevice.id:J
            lstore 1 /* oldId */
        start local 1 // long oldId
         1: .line 66
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.MidiOutDevice.id:J
         2: .line 68
            aload 0 /* this */
            invokespecial com.sun.media.sound.AbstractMidiDevice.implClose:()V
         3: .line 71
            aload 0 /* this */
            lload 1 /* oldId */
            invokevirtual com.sun.media.sound.MidiOutDevice.nClose:(J)V
         4: .line 73
            return
        end local 1 // long oldId
        end local 0 // com.sun.media.sound.MidiOutDevice this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lcom/sun/media/sound/MidiOutDevice;
            1    5     1  oldId  J

  public long getMicrosecondPosition();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // com.sun.media.sound.MidiOutDevice this
         0: .line 77
            ldc -1
            lstore 1 /* timestamp */
        start local 1 // long timestamp
         1: .line 78
            aload 0 /* this */
            invokevirtual com.sun.media.sound.MidiOutDevice.isOpen:()Z
            ifeq 3
         2: .line 79
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.media.sound.MidiOutDevice.id:J
            invokevirtual com.sun.media.sound.MidiOutDevice.nGetTimeStamp:(J)J
            lstore 1 /* timestamp */
         3: .line 81
      StackMap locals: long
      StackMap stack:
            lload 1 /* timestamp */
            lreturn
        end local 1 // long timestamp
        end local 0 // com.sun.media.sound.MidiOutDevice this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lcom/sun/media/sound/MidiOutDevice;
            1    4     1  timestamp  J

  protected boolean hasReceivers();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.MidiOutDevice this
         0: .line 93
            iconst_1
            ireturn
        end local 0 // com.sun.media.sound.MidiOutDevice this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/MidiOutDevice;

  protected javax.sound.midi.Receiver createReceiver();
    descriptor: ()Ljavax/sound/midi/Receiver;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.sun.media.sound.MidiOutDevice this
         0: .line 98
            new com.sun.media.sound.MidiOutDevice$MidiOutReceiver
            dup
            aload 0 /* this */
            invokespecial com.sun.media.sound.MidiOutDevice$MidiOutReceiver.<init>:(Lcom/sun/media/sound/MidiOutDevice;)V
            areturn
        end local 0 // com.sun.media.sound.MidiOutDevice this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/MidiOutDevice;

  private native long nOpen(int);
    descriptor: (I)J
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    Exceptions:
      throws javax.sound.midi.MidiUnavailableException
    MethodParameters:
       Name  Flags
      index  

  private native void nClose(long);
    descriptor: (J)V
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    MethodParameters:
      Name  Flags
      id    

  private native void nSendShortMessage(long, int, long);
    descriptor: (JIJ)V
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    MethodParameters:
           Name  Flags
      id         
      packedMsg  
      timeStamp  

  private native void nSendLongMessage(long, byte[], int, long);
    descriptor: (J[BIJ)V
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    MethodParameters:
           Name  Flags
      id         
      data       
      size       
      timeStamp  

  private native long nGetTimeStamp(long);
    descriptor: (J)J
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    MethodParameters:
      Name  Flags
      id    
}
SourceFile: "MidiOutDevice.java"
NestMembers:
  com.sun.media.sound.MidiOutDevice$MidiOutReceiver
InnerClasses:
  Info = com.sun.media.sound.AbstractMidiDeviceProvider$Info of com.sun.media.sound.AbstractMidiDeviceProvider
  final MidiOutReceiver = com.sun.media.sound.MidiOutDevice$MidiOutReceiver of com.sun.media.sound.MidiOutDevice
  public Info = javax.sound.midi.MidiDevice$Info of javax.sound.midi.MidiDevice