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 volatile java.lang.Thread thread;
    descriptor: Ljava/lang/Thread;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile byte[] audioData;
    descriptor: [B
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int frameSize;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int m_lengthInFrames;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int loopCount;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int clipBytePosition;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int newFramePosition;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int loopStartFrame;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile int loopEndFrame;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  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 1031
            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 1015
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
         2: .line 1025
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.autoclosing:Z
         3: .line 1033
            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 1042
            aload 1 /* format */
            invokestatic com.sun.media.sound.Toolkit.isFullySpecifiedAudioFormat:(Ljavax/sound/sampled/AudioFormat;)V
         1: .line 1043
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            iload 4 /* bufferSize */
            invokestatic com.sun.media.sound.Toolkit.validateBuffer:(II)V
         2: .line 1045
            iload 4 /* bufferSize */
            newarray 8
            astore 5 /* newData */
        start local 5 // byte[] newData
         3: .line 1046
            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
         4: .line 1047
            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
         5: .line 1048
            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    6     0        this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
            0    6     1      format  Ljavax/sound/sampled/AudioFormat;
            0    6     2        data  [B
            0    6     3      offset  I
            0    6     4  bufferSize  I
            3    6     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 1055
            aload 1 /* format */
            invokestatic com.sun.media.sound.Toolkit.isFullySpecifiedAudioFormat:(Ljavax/sound/sampled/AudioFormat;)V
         1: .line 1057
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.mixer:Lcom/sun/media/sound/AbstractMixer;
            dup
            astore 4
            monitorenter
         2: .line 1062
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isOpen:()Z
            ifeq 6
         3: .line 1063
            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 1064
            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 1063
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 1067
      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 1068
            aload 0 /* this */
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
         8: .line 1069
            aload 0 /* this */
            iload 3 /* frameLength */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.m_lengthInFrames:I
         9: .line 1071
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.bytePosition:J
        10: .line 1072
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
        11: .line 1073
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        12: .line 1074
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopStartFrame:I
        13: .line 1075
            aload 0 /* this */
            iload 3 /* frameLength */
            iconst_1
            isub
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopEndFrame:I
        14: .line 1076
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
        15: .line 1080
            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 1081
            goto 23
      StackMap locals:
      StackMap stack: javax.sound.sampled.LineUnavailableException
        17: astore 5 /* lue */
        start local 5 // javax.sound.sampled.LineUnavailableException lue
        18: .line 1082
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
        19: .line 1083
            aload 5 /* lue */
            athrow
        end local 5 // javax.sound.sampled.LineUnavailableException lue
        20: .line 1084
      StackMap locals:
      StackMap stack: java.lang.IllegalArgumentException
            astore 5 /* iae */
        start local 5 // java.lang.IllegalArgumentException iae
        21: .line 1085
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
        22: .line 1086
            aload 5 /* iae */
            athrow
        end local 5 // java.lang.IllegalArgumentException iae
        23: .line 1090
      StackMap locals:
      StackMap stack:
            bipush 6
            istore 5 /* priority */
        start local 5 // int priority
        24: .line 1092
            aload 0 /* this */
            aload 0 /* this */
        25: .line 1093
            ldc "Direct Clip"
        26: .line 1094
            iconst_1
        27: .line 1095
            iload 5 /* priority */
        28: .line 1096
            iconst_0
        29: .line 1092
            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 1100
            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 1057
            aload 4
            monitorexit
        32: goto 35
      StackMap locals:
      StackMap stack: java.lang.Throwable
        33: aload 4
            monitorexit
        34: athrow
        35: .line 1103
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isAutoClosing:()Z
            ifeq 37
        36: .line 1104
            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 1107
      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 1113
            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 1115
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.mixer:Lcom/sun/media/sound/AbstractMixer;
            dup
            astore 2
            monitorenter
         2: .line 1117
            aconst_null
            astore 3 /* streamData */
        start local 3 // byte[] streamData
         3: .line 1119
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isOpen:()Z
            ifeq 7
         4: .line 1120
            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 1121
            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 1120
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 1123
      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 1126
            iconst_0
            istore 5 /* bytesRead */
        start local 5 // int bytesRead
         9: .line 1127
            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 1128
            iload 4 /* lengthInFrames */
            iconst_m1
            if_icmpeq 30
        11: .line 1130
            iload 4 /* lengthInFrames */
            iload 6 /* frameSize */
            imul
            istore 7 /* arraysize */
        start local 7 // int arraysize
        12: .line 1131
            iload 7 /* arraysize */
            ifge 14
        13: .line 1132
            new java.lang.IllegalArgumentException
            dup
            ldc "Audio data < 0"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 1135
      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 1136
            goto 18
      StackMap locals:
      StackMap stack: java.lang.OutOfMemoryError
        16: pop
        17: .line 1137
            new java.io.IOException
            dup
            ldc "Audio data is too big"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 1139
      StackMap locals:
      StackMap stack:
            iload 7 /* arraysize */
            istore 8 /* bytesRemaining */
        start local 8 // int bytesRemaining
        19: .line 1140
            iconst_0
            istore 9 /* thisRead */
        start local 9 // int thisRead
        20: .line 1141
            goto 28
        21: .line 1142
      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 1143
            iload 9 /* thisRead */
            ifle 26
        23: .line 1144
            iload 5 /* bytesRead */
            iload 9 /* thisRead */
            iadd
            istore 5 /* bytesRead */
        24: .line 1145
            iload 8 /* bytesRemaining */
            iload 9 /* thisRead */
            isub
            istore 8 /* bytesRemaining */
        25: .line 1146
            goto 28
        26: .line 1147
      StackMap locals:
      StackMap stack:
            iload 9 /* thisRead */
            ifne 28
        27: .line 1148
            invokestatic java.lang.Thread.yield:()V
        28: .line 1141
      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 1151
            goto 47
        30: .line 1156
      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 1157
            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 1160
            iload 7 /* maxReadLimit */
            newarray 8
            astore 9 /* tmp */
        start local 9 // byte[] tmp
        33: .line 1161
            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 1162
            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 1164
      StackMap locals: byte[]
      StackMap stack:
            iconst_0
            istore 10 /* thisRead */
        start local 10 // int thisRead
        37: .line 1165
            goto 45
        38: .line 1166
      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 1167
            iload 10 /* thisRead */
            ifle 43
        40: .line 1168
            aload 8 /* dbaos */
            aload 9 /* tmp */
            iconst_0
            iload 10 /* thisRead */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectBAOS.write:([BII)V
        41: .line 1169
            iload 5 /* bytesRead */
            iload 10 /* thisRead */
            iadd
            istore 5 /* bytesRead */
        42: .line 1170
            goto 45
        43: .line 1171
      StackMap locals:
      StackMap stack:
            iload 10 /* thisRead */
            ifne 45
        44: .line 1172
            invokestatic java.lang.Thread.yield:()V
        45: .line 1165
      StackMap locals:
      StackMap stack:
            iload 10 /* thisRead */
            ifge 38
        46: .line 1175
            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 1177
      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 1182
            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 1115
            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 1186
      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 1190
            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 1195
            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 1202
            iload 1 /* frames */
            ifge 3
         1: .line 1203
            iconst_0
            istore 1 /* frames */
         2: .line 1204
            goto 5
         3: .line 1205
      StackMap locals:
      StackMap stack:
            iload 1 /* frames */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            if_icmplt 5
         4: .line 1206
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            istore 1 /* frames */
         5: .line 1208
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
            ifeq 8
         6: .line 1209
            aload 0 /* this */
            iload 1 /* frames */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
         7: .line 1210
            goto 10
         8: .line 1211
      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 1212
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        10: .line 1218
      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 1221
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.flush:()V
        12: .line 1225
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lockNative:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
        13: .line 1226
            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 1225
            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 1236
      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 1251
            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 1258
            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 1259
            aload 0 /* this */
            lload 3 /* frames */
            l2i
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.setFramePosition:(I)V
         2: .line 1262
            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 1268
            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 1269
      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 1271
      StackMap locals:
      StackMap stack:
            iload 2 /* end */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            if_icmplt 4
         3: .line 1272
            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 1275
      StackMap locals:
      StackMap stack:
            iload 2 /* end */
            iconst_m1
            if_icmpne 8
         5: .line 1276
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            iconst_1
            isub
            istore 2 /* end */
         6: .line 1277
            iload 2 /* end */
            ifge 8
         7: .line 1278
            iconst_0
            istore 2 /* end */
         8: .line 1283
      StackMap locals:
      StackMap stack:
            iload 2 /* end */
            iload 1 /* start */
            if_icmpge 10
         9: .line 1284
            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 1288
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* start */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopStartFrame:I
        11: .line 1289
            aload 0 /* this */
            iload 2 /* end */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopEndFrame:I
        12: .line 1293
            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 1299
            aload 0 /* this */
            iload 1 /* count */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
         1: .line 1300
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.start:()V
         2: .line 1301
            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 1307
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
            ifnonnull 2
         1: .line 1308
            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 1310
      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 1311
            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 1318
            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 1319
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
         2: .line 1320
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
         3: .line 1321
            aload 1 /* oldThread */
            ifnull 13
         4: .line 1323
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         5: .line 1324
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
         6: .line 1323
            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 1329
      StackMap locals:
      StackMap stack:
            aload 1 /* oldThread */
            ldc 2000
            invokevirtual java.lang.Thread.join:(J)V
        11: .line 1330
            goto 13
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        12: pop
        13: .line 1332
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implClose:()V
        14: .line 1334
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
        15: .line 1335
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        16: .line 1338
            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 1341
            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 1346
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implStart:()V
         1: .line 1348
            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 1354
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implStop:()V
         1: .line 1357
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
         2: .line 1360
            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=8, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectClip this
         0: .line 1366
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            astore 1 /* curThread */
        start local 1 // java.lang.Thread curThread
         1: .line 1367
            goto 36
         2: .line 1371
      StackMap locals: java.lang.Thread
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 1372
            goto 7
         4: .line 1374
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.wait:()V
         5: .line 1375
            goto 7
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         6: pop
         7: .line 1372
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
            ifne 8
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
            aload 1 /* curThread */
            if_acmpeq 4
         8: .line 1371
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
         9: goto 35
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 2
            monitorexit
        11: athrow
        12: .line 1380
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
            iflt 15
        13: .line 1381
            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
        14: .line 1382
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        15: .line 1384
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            iconst_1
            isub
            istore 2 /* endFrame */
        start local 2 // int endFrame
        16: .line 1385
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
            ifgt 17
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
            iconst_m1
            if_icmpne 18
        17: .line 1386
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopEndFrame:I
            istore 2 /* endFrame */
        18: .line 1388
      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 3 /* framePos */
        start local 3 // long framePos
        19: .line 1389
            iload 2 /* endFrame */
            i2l
            lload 3 /* framePos */
            lsub
            lconst_1
            ladd
            l2i
            istore 5 /* toWriteFrames */
        start local 5 // int toWriteFrames
        20: .line 1390
            iload 5 /* toWriteFrames */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
            imul
            istore 6 /* toWriteBytes */
        start local 6 // int toWriteBytes
        21: .line 1391
            iload 6 /* toWriteBytes */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getBufferSize:()I
            if_icmple 23
        22: .line 1392
            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 6 /* toWriteBytes */
        23: .line 1394
      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 6 /* toWriteBytes */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.write:([BII)I
            istore 7 /* written */
        start local 7 // int written
        24: .line 1395
            aload 0 /* this */
            dup
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
            iload 7 /* written */
            iadd
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
        25: .line 1397
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
            ifeq 35
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
            ifge 35
            iload 7 /* written */
            iflt 35
        26: .line 1398
            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 3 /* framePos */
        27: .line 1402
            lload 3 /* framePos */
            iload 2 /* endFrame */
            i2l
            lcmp
            ifle 35
        28: .line 1404
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
            ifgt 29
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
            iconst_m1
            if_icmpne 33
        29: .line 1405
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
            iconst_m1
            if_icmpeq 31
        30: .line 1406
            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
        31: .line 1408
      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
        32: .line 1409
            goto 35
        33: .line 1414
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.drain:()V
        34: .line 1415
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.stop:()V
        end local 7 // int written
        end local 6 // int toWriteBytes
        end local 5 // int toWriteFrames
        end local 3 // long framePos
        end local 2 // int endFrame
        35: .line 1379
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip java.lang.Thread
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
            ifeq 36
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
            aload 1 /* curThread */
            if_acmpeq 12
        36: .line 1367
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
            aload 1 /* curThread */
            if_acmpeq 2
        37: .line 1422
            return
        end local 1 // java.lang.Thread curThread
        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;
            1   38     1      curThread  Ljava/lang/Thread;
           16   35     2       endFrame  I
           19   35     3       framePos  J
           20   35     5  toWriteFrames  I
           21   35     6   toWriteBytes  I
           24   35     7        written  I
      Exception table:
        from    to  target  type
           4     5       6  Class java.lang.InterruptedException
           3     9      10  any
          10    11      10  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 1433
            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 1453
            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