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=10, 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 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.format: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
            iload 4 /* lengthInFrames */
            iconst_m1
            if_icmpeq 24
        10: .line 1129
            iload 4 /* lengthInFrames */
            aload 1 /* stream */
            invokevirtual javax.sound.sampled.AudioInputStream.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            imul
            istore 6 /* arraysize */
        start local 6 // int arraysize
        11: .line 1130
            iload 6 /* arraysize */
            newarray 8
            astore 3 /* streamData */
        12: .line 1132
            iload 6 /* arraysize */
            istore 7 /* bytesRemaining */
        start local 7 // int bytesRemaining
        13: .line 1133
            iconst_0
            istore 8 /* thisRead */
        start local 8 // int thisRead
        14: .line 1134
            goto 22
        15: .line 1135
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip javax.sound.sampled.AudioInputStream com.sun.media.sound.AbstractMixer byte[] int int int int int
      StackMap stack:
            aload 1 /* stream */
            aload 3 /* streamData */
            iload 5 /* bytesRead */
            iload 7 /* bytesRemaining */
            invokevirtual javax.sound.sampled.AudioInputStream.read:([BII)I
            istore 8 /* thisRead */
        16: .line 1136
            iload 8 /* thisRead */
            ifle 20
        17: .line 1137
            iload 5 /* bytesRead */
            iload 8 /* thisRead */
            iadd
            istore 5 /* bytesRead */
        18: .line 1138
            iload 7 /* bytesRemaining */
            iload 8 /* thisRead */
            isub
            istore 7 /* bytesRemaining */
        19: .line 1139
            goto 22
        20: .line 1140
      StackMap locals:
      StackMap stack:
            iload 8 /* thisRead */
            ifne 22
        21: .line 1141
            invokestatic java.lang.Thread.yield:()V
        22: .line 1134
      StackMap locals:
      StackMap stack:
            iload 7 /* bytesRemaining */
            ifle 38
            iload 8 /* thisRead */
            ifge 15
        end local 8 // int thisRead
        end local 7 // int bytesRemaining
        end local 6 // int arraysize
        23: .line 1144
            goto 38
        24: .line 1149
      StackMap locals:
      StackMap stack:
            sipush 16384
            istore 6 /* MAX_READ_LIMIT */
        start local 6 // int MAX_READ_LIMIT
        25: .line 1150
            new com.sun.media.sound.DirectAudioDevice$DirectBAOS
            dup
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectBAOS.<init>:()V
            astore 7 /* dbaos */
        start local 7 // com.sun.media.sound.DirectAudioDevice$DirectBAOS dbaos
        26: .line 1151
            iload 6 /* MAX_READ_LIMIT */
            newarray 8
            astore 8 /* tmp */
        start local 8 // byte[] tmp
        27: .line 1152
            iconst_0
            istore 9 /* thisRead */
        start local 9 // int thisRead
        28: .line 1153
            goto 36
        29: .line 1154
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip javax.sound.sampled.AudioInputStream com.sun.media.sound.AbstractMixer byte[] int int int com.sun.media.sound.DirectAudioDevice$DirectBAOS byte[] int
      StackMap stack:
            aload 1 /* stream */
            aload 8 /* tmp */
            iconst_0
            aload 8 /* tmp */
            arraylength
            invokevirtual javax.sound.sampled.AudioInputStream.read:([BII)I
            istore 9 /* thisRead */
        30: .line 1155
            iload 9 /* thisRead */
            ifle 34
        31: .line 1156
            aload 7 /* dbaos */
            aload 8 /* tmp */
            iconst_0
            iload 9 /* thisRead */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectBAOS.write:([BII)V
        32: .line 1157
            iload 5 /* bytesRead */
            iload 9 /* thisRead */
            iadd
            istore 5 /* bytesRead */
        33: .line 1158
            goto 36
        34: .line 1159
      StackMap locals:
      StackMap stack:
            iload 9 /* thisRead */
            ifne 36
        35: .line 1160
            invokestatic java.lang.Thread.yield:()V
        36: .line 1153
      StackMap locals:
      StackMap stack:
            iload 9 /* thisRead */
            ifge 29
        37: .line 1163
            aload 7 /* dbaos */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectBAOS.getInternalBuffer:()[B
            astore 3 /* streamData */
        end local 9 // int thisRead
        end local 8 // byte[] tmp
        end local 7 // com.sun.media.sound.DirectAudioDevice$DirectBAOS dbaos
        end local 6 // int MAX_READ_LIMIT
        38: .line 1165
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip javax.sound.sampled.AudioInputStream com.sun.media.sound.AbstractMixer byte[] int int
      StackMap stack:
            iload 5 /* bytesRead */
            aload 1 /* stream */
            invokevirtual javax.sound.sampled.AudioInputStream.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            idiv
            istore 4 /* lengthInFrames */
        39: .line 1170
            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 5 // int bytesRead
        end local 4 // int lengthInFrames
        end local 3 // byte[] streamData
        40: .line 1115
            aload 2
            monitorexit
        41: goto 44
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip javax.sound.sampled.AudioInputStream com.sun.media.sound.AbstractMixer
      StackMap stack: java.lang.Throwable
        42: aload 2
            monitorexit
        43: athrow
        44: .line 1174
      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   45     0            this  Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
            0   45     1          stream  Ljavax/sound/sampled/AudioInputStream;
            3   40     3      streamData  [B
            8   40     4  lengthInFrames  I
            9   40     5       bytesRead  I
           11   23     6       arraysize  I
           13   23     7  bytesRemaining  I
           14   23     8        thisRead  I
           25   38     6  MAX_READ_LIMIT  I
           26   38     7           dbaos  Lcom/sun/media/sound/DirectAudioDevice$DirectBAOS;
           27   38     8             tmp  [B
           28   38     9        thisRead  I
      Exception table:
        from    to  target  type
           2    41      42  any
          42    43      42  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 1178
            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 1183
            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 1190
            iload 1 /* frames */
            ifge 3
         1: .line 1191
            iconst_0
            istore 1 /* frames */
         2: .line 1192
            goto 5
         3: .line 1193
      StackMap locals:
      StackMap stack:
            iload 1 /* frames */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            if_icmplt 5
         4: .line 1194
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            istore 1 /* frames */
         5: .line 1196
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
            ifeq 8
         6: .line 1197
            aload 0 /* this */
            iload 1 /* frames */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
         7: .line 1198
            goto 10
         8: .line 1199
      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 1200
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        10: .line 1206
      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 1209
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.flush:()V
        12: .line 1213
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lockNative:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
        13: .line 1214
            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 1213
            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 1224
      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 1239
            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 1246
            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 1247
            aload 0 /* this */
            lload 3 /* frames */
            l2i
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.setFramePosition:(I)V
         2: .line 1250
            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 1256
            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 1257
      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 1259
      StackMap locals:
      StackMap stack:
            iload 2 /* end */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            if_icmplt 4
         3: .line 1260
            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 1263
      StackMap locals:
      StackMap stack:
            iload 2 /* end */
            iconst_m1
            if_icmpne 8
         5: .line 1264
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            iconst_1
            isub
            istore 2 /* end */
         6: .line 1265
            iload 2 /* end */
            ifge 8
         7: .line 1266
            iconst_0
            istore 2 /* end */
         8: .line 1271
      StackMap locals:
      StackMap stack:
            iload 2 /* end */
            iload 1 /* start */
            if_icmpge 10
         9: .line 1272
            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 1276
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* start */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopStartFrame:I
        11: .line 1277
            aload 0 /* this */
            iload 2 /* end */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopEndFrame:I
        12: .line 1281
            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 1287
            aload 0 /* this */
            iload 1 /* count */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
         1: .line 1288
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.start:()V
         2: .line 1289
            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 1295
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
            ifnonnull 2
         1: .line 1296
            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 1298
      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 1299
            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 1306
            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 1307
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
         2: .line 1308
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
         3: .line 1309
            aload 1 /* oldThread */
            ifnull 13
         4: .line 1311
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         5: .line 1312
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
         6: .line 1311
            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 1317
      StackMap locals:
      StackMap stack:
            aload 1 /* oldThread */
            ldc 2000
            invokevirtual java.lang.Thread.join:(J)V
        11: .line 1318
            goto 13
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        12: pop
        13: .line 1320
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implClose:()V
        14: .line 1322
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
        15: .line 1323
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        16: .line 1326
            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 1329
            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 1334
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implStart:()V
         1: .line 1336
            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 1342
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implStop:()V
         1: .line 1345
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
         2: .line 1348
            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 1354
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            astore 1 /* curThread */
        start local 1 // java.lang.Thread curThread
         1: .line 1355
            goto 36
         2: .line 1359
      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 1360
            goto 7
         4: .line 1362
      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 1363
            goto 7
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         6: pop
         7: .line 1360
      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 1359
      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 1368
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
            iflt 15
        13: .line 1369
            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 1370
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        15: .line 1372
      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 1373
            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 1374
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopEndFrame:I
            istore 2 /* endFrame */
        18: .line 1376
      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 1377
            iload 2 /* endFrame */
            i2l
            lload 3 /* framePos */
            lsub
            lconst_1
            ladd
            l2i
            istore 5 /* toWriteFrames */
        start local 5 // int toWriteFrames
        20: .line 1378
            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 1379
            iload 6 /* toWriteBytes */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getBufferSize:()I
            if_icmple 23
        22: .line 1380
            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 1382
      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 1383
            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 1385
            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 1386
            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 1390
            lload 3 /* framePos */
            iload 2 /* endFrame */
            i2l
            lcmp
            ifle 35
        28: .line 1392
            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 1393
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
            iconst_m1
            if_icmpeq 31
        30: .line 1394
            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 1396
      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 1397
            goto 35
        33: .line 1402
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.drain:()V
        34: .line 1403
            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 1367
      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 1355
      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 1410
            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 1421
            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 1426
            iload 1 /* value */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.autoclosing:Z
            if_icmpeq 7
         1: .line 1427
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isOpen:()Z
            ifeq 6
         2: .line 1428
            iload 1 /* value */
            ifeq 5
         3: .line 1429
            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 1430
            goto 6
         5: .line 1431
      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 1434
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* value */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.autoclosing:Z
         7: .line 1436
      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 1441
            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