final class com.sun.media.sound.DirectAudioDevice$DirectClip extends com.sun.media.sound.DirectAudioDevice$DirectDL implements javax.sound.sampled.Clip, java.lang.Runnable, com.sun.media.sound.AutoClosingClip
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.sun.media.sound.DirectAudioDevice$DirectClip
  super_class: com.sun.media.sound.DirectAudioDevice$DirectDL
{
  private java.lang.Thread thread;
    descriptor: Ljava/lang/Thread;
    flags: (0x0002) ACC_PRIVATE

  private byte[] audioData;
    descriptor: [B
    flags: (0x0002) ACC_PRIVATE

  private int frameSize;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int m_lengthInFrames;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int loopCount;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int clipBytePosition;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int newFramePosition;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int loopStartFrame;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int loopEndFrame;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private boolean autoclosing;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private void <init>(javax.sound.sampled.DataLine$Info, javax.sound.sampled.AudioFormat, int, com.sun.media.sound.DirectAudioDevice);
    descriptor: (Ljavax/sound/sampled/DataLine$Info;Ljavax/sound/sampled/AudioFormat;ILcom/sun/media/sound/DirectAudioDevice;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=5, args_size=5
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
        start local 1 // javax.sound.sampled.DataLine$Info info
        start local 2 // javax.sound.sampled.AudioFormat format
        start local 3 // int bufferSize
        start local 4 // com.sun.media.sound.DirectAudioDevice mixer
         0: .line 1038
            aload 0 /* this */
            aload 1 /* info */
            aload 4 /* mixer */
            aload 2 /* format */
            iload 3 /* bufferSize */
            aload 4 /* mixer */
            invokevirtual com.sun.media.sound.DirectAudioDevice.getMixerIndex:()I
            aload 4 /* mixer */
            invokevirtual com.sun.media.sound.DirectAudioDevice.getDeviceID:()I
            iconst_1
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.<init>:(Ljavax/sound/sampled/DataLine$Info;Lcom/sun/media/sound/DirectAudioDevice;Ljavax/sound/sampled/AudioFormat;IIIZ)V
         1: .line 1021
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
         2: .line 1031
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.autoclosing:Z
         3: .line 1040
            return
        end local 4 // com.sun.media.sound.DirectAudioDevice mixer
        end local 3 // int bufferSize
        end local 2 // javax.sound.sampled.AudioFormat format
        end local 1 // javax.sound.sampled.DataLine$Info info
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
            0    4     1        info  Ljavax/sound/sampled/DataLine$Info;
            0    4     2      format  Ljavax/sound/sampled/AudioFormat;
            0    4     3  bufferSize  I
            0    4     4       mixer  Lcom/sun/media/sound/DirectAudioDevice;
    MethodParameters:
            Name  Flags
      info        
      format      
      bufferSize  
      mixer       

  public void open(javax.sound.sampled.AudioFormat, byte[], int, int);
    descriptor: (Ljavax/sound/sampled/AudioFormat;[BII)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=5
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
        start local 1 // javax.sound.sampled.AudioFormat format
        start local 2 // byte[] data
        start local 3 // int offset
        start local 4 // int bufferSize
         0: .line 1048
            aload 1 /* format */
            invokestatic com.sun.media.sound.Toolkit.isFullySpecifiedAudioFormat:(Ljavax/sound/sampled/AudioFormat;)V
         1: .line 1050
            iload 4 /* bufferSize */
            newarray 8
            astore 5 /* newData */
        start local 5 // byte[] newData
         2: .line 1051
            aload 2 /* data */
            iload 3 /* offset */
            aload 5 /* newData */
            iconst_0
            iload 4 /* bufferSize */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         3: .line 1052
            aload 0 /* this */
            aload 1 /* format */
            aload 5 /* newData */
            iload 4 /* bufferSize */
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            idiv
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.open:(Ljavax/sound/sampled/AudioFormat;[BI)V
         4: .line 1053
            return
        end local 5 // byte[] newData
        end local 4 // int bufferSize
        end local 3 // int offset
        end local 2 // byte[] data
        end local 1 // javax.sound.sampled.AudioFormat format
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
            0    5     1      format  Ljavax/sound/sampled/AudioFormat;
            0    5     2        data  [B
            0    5     3      offset  I
            0    5     4  bufferSize  I
            2    5     5     newData  [B
    Exceptions:
      throws javax.sound.sampled.LineUnavailableException
    MethodParameters:
            Name  Flags
      format      
      data        
      offset      
      bufferSize  

  private void open(javax.sound.sampled.AudioFormat, byte[], int);
    descriptor: (Ljavax/sound/sampled/AudioFormat;[BI)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
        start local 1 // javax.sound.sampled.AudioFormat format
        start local 2 // byte[] data
        start local 3 // int frameLength
         0: .line 1060
            aload 1 /* format */
            invokestatic com.sun.media.sound.Toolkit.isFullySpecifiedAudioFormat:(Ljavax/sound/sampled/AudioFormat;)V
         1: .line 1062
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.mixer:Lcom/sun/media/sound/AbstractMixer;
            dup
            astore 4
            monitorenter
         2: .line 1067
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isOpen:()Z
            ifeq 6
         3: .line 1068
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Clip is already open with format "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         4: .line 1069
            ldc " and frame lengh of "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 1068
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 1072
      StackMap locals: com.sun.media.sound.AbstractMixer
      StackMap stack:
            aload 0 /* this */
            aload 2 /* data */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
         7: .line 1073
            aload 0 /* this */
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
         8: .line 1074
            aload 0 /* this */
            iload 3 /* frameLength */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.m_lengthInFrames:I
         9: .line 1076
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.bytePosition:J
        10: .line 1077
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
        11: .line 1078
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        12: .line 1079
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopStartFrame:I
        13: .line 1080
            aload 0 /* this */
            iload 3 /* frameLength */
            iconst_1
            isub
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopEndFrame:I
        14: .line 1081
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
        15: .line 1085
            aload 0 /* this */
            aload 1 /* format */
            aload 1 /* format */
            ldc 1000
            invokestatic com.sun.media.sound.Toolkit.millis2bytes:(Ljavax/sound/sampled/AudioFormat;J)J
            l2i
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.open:(Ljavax/sound/sampled/AudioFormat;I)V
        16: .line 1086
            goto 23
      StackMap locals:
      StackMap stack: javax.sound.sampled.LineUnavailableException
        17: astore 5 /* lue */
        start local 5 // javax.sound.sampled.LineUnavailableException lue
        18: .line 1087
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
        19: .line 1088
            aload 5 /* lue */
            athrow
        end local 5 // javax.sound.sampled.LineUnavailableException lue
        20: .line 1089
      StackMap locals:
      StackMap stack: java.lang.IllegalArgumentException
            astore 5 /* iae */
        start local 5 // java.lang.IllegalArgumentException iae
        21: .line 1090
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
        22: .line 1091
            aload 5 /* iae */
            athrow
        end local 5 // java.lang.IllegalArgumentException iae
        23: .line 1095
      StackMap locals:
      StackMap stack:
            bipush 6
            istore 5 /* priority */
        start local 5 // int priority
        24: .line 1097
            aload 0 /* this */
            aload 0 /* this */
        25: .line 1098
            ldc "Direct Clip"
        26: .line 1099
            iconst_1
        27: .line 1100
            iload 5 /* priority */
        28: .line 1101
            iconst_0
        29: .line 1097
            invokestatic com.sun.media.sound.JSSecurityManager.createThread:(Ljava/lang/Runnable;Ljava/lang/String;ZIZ)Ljava/lang/Thread;
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
        30: .line 1105
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
            invokevirtual java.lang.Thread.start:()V
        end local 5 // int priority
        31: .line 1062
            aload 4
            monitorexit
        32: goto 35
      StackMap locals:
      StackMap stack: java.lang.Throwable
        33: aload 4
            monitorexit
        34: athrow
        35: .line 1108
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isAutoClosing:()Z
            ifeq 37
        36: .line 1109
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getEventDispatcher:()Lcom/sun/media/sound/EventDispatcher;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.EventDispatcher.autoClosingClipOpened:(Lcom/sun/media/sound/AutoClosingClip;)V
        37: .line 1112
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int frameLength
        end local 2 // byte[] data
        end local 1 // javax.sound.sampled.AudioFormat format
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   38     0         this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
            0   38     1       format  Ljavax/sound/sampled/AudioFormat;
            0   38     2         data  [B
            0   38     3  frameLength  I
           18   20     5          lue  Ljavax/sound/sampled/LineUnavailableException;
           21   23     5          iae  Ljava/lang/IllegalArgumentException;
           24   31     5     priority  I
      Exception table:
        from    to  target  type
          15    16      17  Class javax.sound.sampled.LineUnavailableException
          15    16      20  Class java.lang.IllegalArgumentException
           2    32      33  any
          33    34      33  any
    Exceptions:
      throws javax.sound.sampled.LineUnavailableException
    MethodParameters:
             Name  Flags
      format       
      data         
      frameLength  

  public void open(javax.sound.sampled.AudioInputStream);
    descriptor: (Ljavax/sound/sampled/AudioInputStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=11, args_size=2
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
        start local 1 // javax.sound.sampled.AudioInputStream stream
         0: .line 1118
            aload 1 /* stream */
            invokevirtual javax.sound.sampled.AudioInputStream.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokestatic com.sun.media.sound.Toolkit.isFullySpecifiedAudioFormat:(Ljavax/sound/sampled/AudioFormat;)V
         1: .line 1120
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.mixer:Lcom/sun/media/sound/AbstractMixer;
            dup
            astore 2
            monitorenter
         2: .line 1122
            aconst_null
            astore 3 /* streamData */
        start local 3 // byte[] streamData
         3: .line 1124
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isOpen:()Z
            ifeq 7
         4: .line 1125
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Clip is already open with format "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         5: .line 1126
            ldc " and frame lengh of "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 1125
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 1128
      StackMap locals: com.sun.media.sound.AbstractMixer byte[]
      StackMap stack:
            aload 1 /* stream */
            invokevirtual javax.sound.sampled.AudioInputStream.getFrameLength:()J
            l2i
            istore 4 /* lengthInFrames */
        start local 4 // int lengthInFrames
         8: .line 1131
            iconst_0
            istore 5 /* bytesRead */
        start local 5 // int bytesRead
         9: .line 1132
            aload 1 /* stream */
            invokevirtual javax.sound.sampled.AudioInputStream.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            istore 6 /* frameSize */
        start local 6 // int frameSize
        10: .line 1133
            iload 4 /* lengthInFrames */
            iconst_m1
            if_icmpeq 30
        11: .line 1135
            iload 4 /* lengthInFrames */
            iload 6 /* frameSize */
            imul
            istore 7 /* arraysize */
        start local 7 // int arraysize
        12: .line 1136
            iload 7 /* arraysize */
            ifge 14
        13: .line 1137
            new java.lang.IllegalArgumentException
            dup
            ldc "Audio data < 0"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 1140
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip javax.sound.sampled.AudioInputStream com.sun.media.sound.AbstractMixer byte[] int int int int
      StackMap stack:
            iload 7 /* arraysize */
            newarray 8
            astore 3 /* streamData */
        15: .line 1141
            goto 18
      StackMap locals:
      StackMap stack: java.lang.OutOfMemoryError
        16: pop
        17: .line 1142
            new java.io.IOException
            dup
            ldc "Audio data is too big"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 1144
      StackMap locals:
      StackMap stack:
            iload 7 /* arraysize */
            istore 8 /* bytesRemaining */
        start local 8 // int bytesRemaining
        19: .line 1145
            iconst_0
            istore 9 /* thisRead */
        start local 9 // int thisRead
        20: .line 1146
            goto 28
        21: .line 1147
      StackMap locals: int int
      StackMap stack:
            aload 1 /* stream */
            aload 3 /* streamData */
            iload 5 /* bytesRead */
            iload 8 /* bytesRemaining */
            invokevirtual javax.sound.sampled.AudioInputStream.read:([BII)I
            istore 9 /* thisRead */
        22: .line 1148
            iload 9 /* thisRead */
            ifle 26
        23: .line 1149
            iload 5 /* bytesRead */
            iload 9 /* thisRead */
            iadd
            istore 5 /* bytesRead */
        24: .line 1150
            iload 8 /* bytesRemaining */
            iload 9 /* thisRead */
            isub
            istore 8 /* bytesRemaining */
        25: .line 1151
            goto 28
        26: .line 1152
      StackMap locals:
      StackMap stack:
            iload 9 /* thisRead */
            ifne 28
        27: .line 1153
            invokestatic java.lang.Thread.yield:()V
        28: .line 1146
      StackMap locals:
      StackMap stack:
            iload 8 /* bytesRemaining */
            ifle 47
            iload 9 /* thisRead */
            ifge 21
        end local 9 // int thisRead
        end local 8 // int bytesRemaining
        end local 7 // int arraysize
        29: .line 1156
            goto 47
        30: .line 1161
      StackMap locals:
      StackMap stack:
            sipush 16384
            iload 6 /* frameSize */
            invokestatic java.lang.Math.max:(II)I
            istore 7 /* maxReadLimit */
        start local 7 // int maxReadLimit
        31: .line 1162
            new com.sun.media.sound.DirectAudioDevice$DirectBAOS
            dup
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectBAOS.<init>:()V
            astore 8 /* dbaos */
        start local 8 // com.sun.media.sound.DirectAudioDevice$DirectBAOS dbaos
        32: .line 1165
            iload 7 /* maxReadLimit */
            newarray 8
            astore 9 /* tmp */
        start local 9 // byte[] tmp
        33: .line 1166
            goto 36
        end local 9 // byte[] tmp
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip javax.sound.sampled.AudioInputStream com.sun.media.sound.AbstractMixer byte[] int int int int com.sun.media.sound.DirectAudioDevice$DirectBAOS
      StackMap stack: java.lang.OutOfMemoryError
        34: pop
        35: .line 1167
            new java.io.IOException
            dup
            ldc "Audio data is too big"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        start local 9 // byte[] tmp
        36: .line 1169
      StackMap locals: byte[]
      StackMap stack:
            iconst_0
            istore 10 /* thisRead */
        start local 10 // int thisRead
        37: .line 1170
            goto 45
        38: .line 1171
      StackMap locals: int
      StackMap stack:
            aload 1 /* stream */
            aload 9 /* tmp */
            iconst_0
            aload 9 /* tmp */
            arraylength
            invokevirtual javax.sound.sampled.AudioInputStream.read:([BII)I
            istore 10 /* thisRead */
        39: .line 1172
            iload 10 /* thisRead */
            ifle 43
        40: .line 1173
            aload 8 /* dbaos */
            aload 9 /* tmp */
            iconst_0
            iload 10 /* thisRead */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectBAOS.write:([BII)V
        41: .line 1174
            iload 5 /* bytesRead */
            iload 10 /* thisRead */
            iadd
            istore 5 /* bytesRead */
        42: .line 1175
            goto 45
        43: .line 1176
      StackMap locals:
      StackMap stack:
            iload 10 /* thisRead */
            ifne 45
        44: .line 1177
            invokestatic java.lang.Thread.yield:()V
        45: .line 1170
      StackMap locals:
      StackMap stack:
            iload 10 /* thisRead */
            ifge 38
        46: .line 1180
            aload 8 /* dbaos */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectBAOS.getInternalBuffer:()[B
            astore 3 /* streamData */
        end local 10 // int thisRead
        end local 9 // byte[] tmp
        end local 8 // com.sun.media.sound.DirectAudioDevice$DirectBAOS dbaos
        end local 7 // int maxReadLimit
        47: .line 1182
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip javax.sound.sampled.AudioInputStream com.sun.media.sound.AbstractMixer byte[] int int int
      StackMap stack:
            iload 5 /* bytesRead */
            iload 6 /* frameSize */
            idiv
            istore 4 /* lengthInFrames */
        48: .line 1187
            aload 0 /* this */
            aload 1 /* stream */
            invokevirtual javax.sound.sampled.AudioInputStream.getFormat:()Ljavax/sound/sampled/AudioFormat;
            aload 3 /* streamData */
            iload 4 /* lengthInFrames */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.open:(Ljavax/sound/sampled/AudioFormat;[BI)V
        end local 6 // int frameSize
        end local 5 // int bytesRead
        end local 4 // int lengthInFrames
        end local 3 // byte[] streamData
        49: .line 1120
            aload 2
            monitorexit
        50: goto 53
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip javax.sound.sampled.AudioInputStream com.sun.media.sound.AbstractMixer
      StackMap stack: java.lang.Throwable
        51: aload 2
            monitorexit
        52: athrow
        53: .line 1191
      StackMap locals:
      StackMap stack:
            return
        end local 1 // javax.sound.sampled.AudioInputStream stream
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   54     0            this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
            0   54     1          stream  Ljavax/sound/sampled/AudioInputStream;
            3   49     3      streamData  [B
            8   49     4  lengthInFrames  I
            9   49     5       bytesRead  I
           10   49     6       frameSize  I
           12   29     7       arraysize  I
           19   29     8  bytesRemaining  I
           20   29     9        thisRead  I
           31   47     7    maxReadLimit  I
           32   47     8           dbaos  Lcom/sun/media/sound/DirectAudioDevice$DirectBAOS;
           33   34     9             tmp  [B
           36   47     9             tmp  [B
           37   47    10        thisRead  I
      Exception table:
        from    to  target  type
          14    15      16  Class java.lang.OutOfMemoryError
          32    33      34  Class java.lang.OutOfMemoryError
           2    50      51  any
          51    52      51  any
    Exceptions:
      throws javax.sound.sampled.LineUnavailableException, java.io.IOException
    MethodParameters:
        Name  Flags
      stream  

  public int getFrameLength();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
         0: .line 1195
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.m_lengthInFrames:I
            ireturn
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;

  public long getMicrosecondLength();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
         0: .line 1200
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFormat:()Ljavax/sound/sampled/AudioFormat;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            i2l
            invokestatic com.sun.media.sound.Toolkit.frames2micros:(Ljavax/sound/sampled/AudioFormat;J)J
            lreturn
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;

  public void setFramePosition(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
        start local 1 // int frames
         0: .line 1207
            iload 1 /* frames */
            ifge 3
         1: .line 1208
            iconst_0
            istore 1 /* frames */
         2: .line 1209
            goto 5
         3: .line 1210
      StackMap locals:
      StackMap stack:
            iload 1 /* frames */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            if_icmplt 5
         4: .line 1211
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            istore 1 /* frames */
         5: .line 1213
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
            ifeq 8
         6: .line 1214
            aload 0 /* this */
            iload 1 /* frames */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
         7: .line 1215
            goto 10
         8: .line 1216
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* frames */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
            imul
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
         9: .line 1217
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        10: .line 1223
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* frames */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
            imul
            i2l
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.bytePosition:J
        11: .line 1226
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.flush:()V
        12: .line 1230
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lockNative:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
        13: .line 1231
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.id:J
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.isSource:Z
            iload 1 /* frames */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
            imul
            i2l
            invokestatic com.sun.media.sound.DirectAudioDevice.nSetBytePosition:(JZJ)V
        14: .line 1230
            aload 2
            monitorexit
        15: goto 18
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip int java.lang.Object
      StackMap stack: java.lang.Throwable
        16: aload 2
            monitorexit
        17: athrow
        18: .line 1241
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int frames
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   19     0    this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
            0   19     1  frames  I
      Exception table:
        from    to  target  type
          13    15      16  any
          16    17      16  any
    MethodParameters:
        Name  Flags
      frames  

  public long getLongFramePosition();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
         0: .line 1255
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.getLongFramePosition:()J
            lreturn
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;

  public synchronized void setMicrosecondPosition(long);
    descriptor: (J)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
        start local 1 // long microseconds
         0: .line 1262
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFormat:()Ljavax/sound/sampled/AudioFormat;
            lload 1 /* microseconds */
            invokestatic com.sun.media.sound.Toolkit.micros2frames:(Ljavax/sound/sampled/AudioFormat;J)J
            lstore 3 /* frames */
        start local 3 // long frames
         1: .line 1263
            aload 0 /* this */
            lload 3 /* frames */
            l2i
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.setFramePosition:(I)V
         2: .line 1266
            return
        end local 3 // long frames
        end local 1 // long microseconds
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
            0    3     1  microseconds  J
            1    3     3        frames  J
    MethodParameters:
              Name  Flags
      microseconds  

  public void setLoopPoints(int, int);
    descriptor: (II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
        start local 1 // int start
        start local 2 // int end
         0: .line 1271
            iload 1 /* start */
            iflt 1
            iload 1 /* start */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            if_icmplt 2
         1: .line 1272
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "illegal value for start: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* start */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 1274
      StackMap locals:
      StackMap stack:
            iload 2 /* end */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            if_icmplt 4
         3: .line 1275
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "illegal value for end: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* end */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 1278
      StackMap locals:
      StackMap stack:
            iload 2 /* end */
            iconst_m1
            if_icmpne 8
         5: .line 1279
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            iconst_1
            isub
            istore 2 /* end */
         6: .line 1280
            iload 2 /* end */
            ifge 8
         7: .line 1281
            iconst_0
            istore 2 /* end */
         8: .line 1286
      StackMap locals:
      StackMap stack:
            iload 2 /* end */
            iload 1 /* start */
            if_icmpge 10
         9: .line 1287
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "End position "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* end */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "  preceeds start position "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 1 /* start */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 1291
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* start */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopStartFrame:I
        11: .line 1292
            aload 0 /* this */
            iload 2 /* end */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopEndFrame:I
        12: .line 1296
            return
        end local 2 // int end
        end local 1 // int start
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   13     0   this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
            0   13     1  start  I
            0   13     2    end  I
    MethodParameters:
       Name  Flags
      start  
      end    

  public void loop(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
        start local 1 // int count
         0: .line 1302
            aload 0 /* this */
            iload 1 /* count */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
         1: .line 1303
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.start:()V
         2: .line 1304
            return
        end local 1 // int count
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
            0    3     1  count  I
    MethodParameters:
       Name  Flags
      count  

  void implOpen(javax.sound.sampled.AudioFormat, int);
    descriptor: (Ljavax/sound/sampled/AudioFormat;I)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
        start local 1 // javax.sound.sampled.AudioFormat format
        start local 2 // int bufferSize
         0: .line 1313
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
            ifnonnull 2
         1: .line 1314
            new java.lang.IllegalArgumentException
            dup
            ldc "illegal call to open() in interface Clip"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 1316
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* format */
            iload 2 /* bufferSize */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen:(Ljavax/sound/sampled/AudioFormat;I)V
         3: .line 1317
            return
        end local 2 // int bufferSize
        end local 1 // javax.sound.sampled.AudioFormat format
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
            0    4     1      format  Ljavax/sound/sampled/AudioFormat;
            0    4     2  bufferSize  I
    Exceptions:
      throws javax.sound.sampled.LineUnavailableException
    MethodParameters:
            Name  Flags
      format      
      bufferSize  

  void implClose();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
         0: .line 1323
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
            astore 1 /* oldThread */
        start local 1 // java.lang.Thread oldThread
         1: .line 1324
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
         2: .line 1325
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
         3: .line 1326
            aload 1 /* oldThread */
            ifnull 13
         4: .line 1328
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         5: .line 1329
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
         6: .line 1328
            aload 2
            monitorexit
         7: goto 10
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip java.lang.Thread java.lang.Object
      StackMap stack: java.lang.Throwable
         8: aload 2
            monitorexit
         9: athrow
        10: .line 1334
      StackMap locals:
      StackMap stack:
            aload 1 /* oldThread */
            ldc 2000
            invokevirtual java.lang.Thread.join:(J)V
        11: .line 1335
            goto 13
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        12: pop
        13: .line 1337
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implClose:()V
        14: .line 1339
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
        15: .line 1340
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        16: .line 1343
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getEventDispatcher:()Lcom/sun/media/sound/EventDispatcher;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.EventDispatcher.autoClosingClipClosed:(Lcom/sun/media/sound/AutoClosingClip;)V
        17: .line 1346
            return
        end local 1 // java.lang.Thread oldThread
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   18     0       this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
            1   18     1  oldThread  Ljava/lang/Thread;
      Exception table:
        from    to  target  type
           5     7       8  any
           8     9       8  any
          10    11      12  Class java.lang.InterruptedException

  void implStart();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
         0: .line 1351
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implStart:()V
         1: .line 1353
            return
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;

  void implStop();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
         0: .line 1358
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implStop:()V
         1: .line 1361
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
         2: .line 1364
            return
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
         0: .line 1370
            goto 34
         1: .line 1374
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         2: .line 1375
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
            ifne 6
         3: .line 1377
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.wait:()V
         4: .line 1378
            goto 6
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip java.lang.Object
      StackMap stack: java.lang.InterruptedException
         5: pop
         6: .line 1374
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
         7: goto 33
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 1
            monitorexit
         9: athrow
        10: .line 1382
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
            iflt 13
        11: .line 1383
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
            imul
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
        12: .line 1384
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        13: .line 1386
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            iconst_1
            isub
            istore 1 /* endFrame */
        start local 1 // int endFrame
        14: .line 1387
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
            ifgt 15
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
            iconst_m1
            if_icmpne 16
        15: .line 1388
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopEndFrame:I
            istore 1 /* endFrame */
        16: .line 1390
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
            idiv
            i2l
            lstore 2 /* framePos */
        start local 2 // long framePos
        17: .line 1391
            iload 1 /* endFrame */
            i2l
            lload 2 /* framePos */
            lsub
            lconst_1
            ladd
            l2i
            istore 4 /* toWriteFrames */
        start local 4 // int toWriteFrames
        18: .line 1392
            iload 4 /* toWriteFrames */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
            imul
            istore 5 /* toWriteBytes */
        start local 5 // int toWriteBytes
        19: .line 1393
            iload 5 /* toWriteBytes */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getBufferSize:()I
            if_icmple 21
        20: .line 1394
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getBufferSize:()I
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
            invokestatic com.sun.media.sound.Toolkit.align:(II)I
            istore 5 /* toWriteBytes */
        21: .line 1396
      StackMap locals: long int int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
            iload 5 /* toWriteBytes */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.write:([BII)I
            istore 6 /* written */
        start local 6 // int written
        22: .line 1397
            aload 0 /* this */
            dup
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
            iload 6 /* written */
            iadd
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
        23: .line 1399
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
            ifeq 33
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
            ifge 33
            iload 6 /* written */
            iflt 33
        24: .line 1400
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
            idiv
            i2l
            lstore 2 /* framePos */
        25: .line 1404
            lload 2 /* framePos */
            iload 1 /* endFrame */
            i2l
            lcmp
            ifle 33
        26: .line 1406
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
            ifgt 27
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
            iconst_m1
            if_icmpne 31
        27: .line 1407
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
            iconst_m1
            if_icmpeq 29
        28: .line 1408
            aload 0 /* this */
            dup
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
            iconst_1
            isub
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
        29: .line 1410
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopStartFrame:I
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        30: .line 1411
            goto 33
        31: .line 1416
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.drain:()V
        32: .line 1417
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.stop:()V
        end local 6 // int written
        end local 5 // int toWriteBytes
        end local 4 // int toWriteFrames
        end local 2 // long framePos
        end local 1 // int endFrame
        33: .line 1381
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
            ifne 10
        34: .line 1370
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
            ifnonnull 1
        35: .line 1424
            return
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   36     0           this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
           14   33     1       endFrame  I
           17   33     2       framePos  J
           18   33     4  toWriteFrames  I
           19   33     5   toWriteBytes  I
           22   33     6        written  I
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.InterruptedException
           2     7       8  any
           8     9       8  any

  public boolean isAutoClosing();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
         0: .line 1434
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.autoclosing:Z
            ireturn
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;

  public void setAutoClosing(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
        start local 1 // boolean value
         0: .line 1438
            iload 1 /* value */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.autoclosing:Z
            if_icmpeq 7
         1: .line 1439
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isOpen:()Z
            ifeq 6
         2: .line 1440
            iload 1 /* value */
            ifeq 5
         3: .line 1441
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getEventDispatcher:()Lcom/sun/media/sound/EventDispatcher;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.EventDispatcher.autoClosingClipOpened:(Lcom/sun/media/sound/AutoClosingClip;)V
         4: .line 1442
            goto 6
         5: .line 1443
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getEventDispatcher:()Lcom/sun/media/sound/EventDispatcher;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.EventDispatcher.autoClosingClipClosed:(Lcom/sun/media/sound/AutoClosingClip;)V
         6: .line 1446
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* value */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.autoclosing:Z
         7: .line 1448
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean value
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
            0    8     1  value  Z
    MethodParameters:
       Name  Flags
      value  

  protected boolean requiresServicing();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
         0: .line 1452
            iconst_0
            ireturn
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
}
SourceFile: "DirectAudioDevice.java"
NestHost: com.sun.media.sound.DirectAudioDevice
InnerClasses:
  private DirectBAOS = com.sun.media.sound.DirectAudioDevice$DirectBAOS of com.sun.media.sound.DirectAudioDevice
  private final DirectClip = com.sun.media.sound.DirectAudioDevice$DirectClip of com.sun.media.sound.DirectAudioDevice
  private DirectDL = com.sun.media.sound.DirectAudioDevice$DirectDL of com.sun.media.sound.DirectAudioDevice
  public Info = javax.sound.sampled.DataLine$Info of javax.sound.sampled.DataLine