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 994
            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 978
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
         2: .line 988
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.autoclosing:Z
         3: .line 995
            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 1004
            aload 1 /* format */
            invokestatic com.sun.media.sound.Toolkit.isFullySpecifiedAudioFormat:(Ljavax/sound/sampled/AudioFormat;)V
         1: .line 1005
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            iload 4 /* bufferSize */
            invokestatic com.sun.media.sound.Toolkit.validateBuffer:(II)V
         2: .line 1007
            iload 4 /* bufferSize */
            newarray 8
            astore 5 /* newData */
        start local 5 // byte[] newData
         3: .line 1008
            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 1009
            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 1010
            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 1017
            aload 1 /* format */
            invokestatic com.sun.media.sound.Toolkit.isFullySpecifiedAudioFormat:(Ljavax/sound/sampled/AudioFormat;)V
         1: .line 1019
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.mixer:Lcom/sun/media/sound/AbstractMixer;
            dup
            astore 4
            monitorenter
         2: .line 1020
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isOpen:()Z
            ifeq 6
         3: .line 1021
            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 1022
            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 1021
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 1025
      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 1026
            aload 0 /* this */
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
         8: .line 1027
            aload 0 /* this */
            iload 3 /* frameLength */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.m_lengthInFrames:I
         9: .line 1029
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.bytePosition:J
        10: .line 1030
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
        11: .line 1031
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        12: .line 1032
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopStartFrame:I
        13: .line 1033
            aload 0 /* this */
            iload 3 /* frameLength */
            iconst_1
            isub
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopEndFrame:I
        14: .line 1034
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
        15: .line 1038
            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 1039
            goto 23
      StackMap locals:
      StackMap stack: javax.sound.sampled.LineUnavailableException
        17: astore 5 /* lue */
        start local 5 // javax.sound.sampled.LineUnavailableException lue
        18: .line 1040
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
        19: .line 1041
            aload 5 /* lue */
            athrow
        end local 5 // javax.sound.sampled.LineUnavailableException lue
        20: .line 1042
      StackMap locals:
      StackMap stack: java.lang.IllegalArgumentException
            astore 5 /* iae */
        start local 5 // java.lang.IllegalArgumentException iae
        21: .line 1043
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
        22: .line 1044
            aload 5 /* iae */
            athrow
        end local 5 // java.lang.IllegalArgumentException iae
        23: .line 1048
      StackMap locals:
      StackMap stack:
            bipush 6
            istore 5 /* priority */
        start local 5 // int priority
        24: .line 1050
            aload 0 /* this */
            aload 0 /* this */
        25: .line 1051
            ldc "Direct Clip"
        26: .line 1052
            iconst_1
        27: .line 1053
            iload 5 /* priority */
        28: .line 1054
            iconst_0
        29: .line 1050
            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 1058
            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 1019
            aload 4
            monitorexit
        32: goto 35
      StackMap locals:
      StackMap stack: java.lang.Throwable
        33: aload 4
            monitorexit
        34: athrow
        35: .line 1061
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isAutoClosing:()Z
            ifeq 37
        36: .line 1062
            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 1064
      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 1070
            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 1072
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.mixer:Lcom/sun/media/sound/AbstractMixer;
            dup
            astore 2
            monitorenter
         2: .line 1073
            aconst_null
            astore 3 /* streamData */
        start local 3 // byte[] streamData
         3: .line 1075
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isOpen:()Z
            ifeq 7
         4: .line 1076
            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 1077
            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 1076
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 1079
      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 1080
            iconst_0
            istore 5 /* bytesRead */
        start local 5 // int bytesRead
         9: .line 1081
            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 1082
            iload 4 /* lengthInFrames */
            iconst_m1
            if_icmpeq 30
        11: .line 1084
            iload 4 /* lengthInFrames */
            iload 6 /* frameSize */
            imul
            istore 7 /* arraysize */
        start local 7 // int arraysize
        12: .line 1085
            iload 7 /* arraysize */
            ifge 14
        13: .line 1086
            new java.lang.IllegalArgumentException
            dup
            ldc "Audio data < 0"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 1089
      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 1090
            goto 18
      StackMap locals:
      StackMap stack: java.lang.OutOfMemoryError
        16: pop
        17: .line 1091
            new java.io.IOException
            dup
            ldc "Audio data is too big"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 1093
      StackMap locals:
      StackMap stack:
            iload 7 /* arraysize */
            istore 8 /* bytesRemaining */
        start local 8 // int bytesRemaining
        19: .line 1094
            iconst_0
            istore 9 /* thisRead */
        start local 9 // int thisRead
        20: .line 1095
            goto 28
        21: .line 1096
      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 1097
            iload 9 /* thisRead */
            ifle 26
        23: .line 1098
            iload 5 /* bytesRead */
            iload 9 /* thisRead */
            iadd
            istore 5 /* bytesRead */
        24: .line 1099
            iload 8 /* bytesRemaining */
            iload 9 /* thisRead */
            isub
            istore 8 /* bytesRemaining */
        25: .line 1100
            goto 28
        26: .line 1101
      StackMap locals:
      StackMap stack:
            iload 9 /* thisRead */
            ifne 28
        27: .line 1102
            invokestatic java.lang.Thread.yield:()V
        28: .line 1095
      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 1105
            goto 47
        30: .line 1110
      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 1111
            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 1114
            iload 7 /* maxReadLimit */
            newarray 8
            astore 9 /* tmp */
        start local 9 // byte[] tmp
        33: .line 1115
            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 1116
            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 1118
      StackMap locals: byte[]
      StackMap stack:
            iconst_0
            istore 10 /* thisRead */
        start local 10 // int thisRead
        37: .line 1119
            goto 45
        38: .line 1120
      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 1121
            iload 10 /* thisRead */
            ifle 43
        40: .line 1122
            aload 8 /* dbaos */
            aload 9 /* tmp */
            iconst_0
            iload 10 /* thisRead */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectBAOS.write:([BII)V
        41: .line 1123
            iload 5 /* bytesRead */
            iload 10 /* thisRead */
            iadd
            istore 5 /* bytesRead */
        42: .line 1124
            goto 45
        43: .line 1125
      StackMap locals:
      StackMap stack:
            iload 10 /* thisRead */
            ifne 45
        44: .line 1126
            invokestatic java.lang.Thread.yield:()V
        45: .line 1119
      StackMap locals:
      StackMap stack:
            iload 10 /* thisRead */
            ifge 38
        46: .line 1129
            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 1131
      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 1134
            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 1072
            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 1136
      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 1140
            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 1145
            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 1150
            iload 1 /* frames */
            ifge 3
         1: .line 1151
            iconst_0
            istore 1 /* frames */
         2: .line 1152
            goto 5
         3: .line 1153
      StackMap locals:
      StackMap stack:
            iload 1 /* frames */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            if_icmplt 5
         4: .line 1154
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            istore 1 /* frames */
         5: .line 1156
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
            ifeq 8
         6: .line 1157
            aload 0 /* this */
            iload 1 /* frames */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
         7: .line 1158
            goto 10
         8: .line 1159
      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 1160
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        10: .line 1166
      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 1169
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.flush:()V
        12: .line 1173
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lockNative:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
        13: .line 1174
            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 1173
            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 1176
      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 1191
            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 1196
            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 1197
            aload 0 /* this */
            lload 3 /* frames */
            l2i
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.setFramePosition:(I)V
         2: .line 1198
            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 1202
            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 1203
      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 1205
      StackMap locals:
      StackMap stack:
            iload 2 /* end */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            if_icmplt 4
         3: .line 1206
            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 1209
      StackMap locals:
      StackMap stack:
            iload 2 /* end */
            iconst_m1
            if_icmpne 8
         5: .line 1210
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
            iconst_1
            isub
            istore 2 /* end */
         6: .line 1211
            iload 2 /* end */
            ifge 8
         7: .line 1212
            iconst_0
            istore 2 /* end */
         8: .line 1217
      StackMap locals:
      StackMap stack:
            iload 2 /* end */
            iload 1 /* start */
            if_icmpge 10
         9: .line 1218
            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 1222
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* start */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopStartFrame:I
        11: .line 1223
            aload 0 /* this */
            iload 2 /* end */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopEndFrame:I
        12: .line 1224
            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 1230
            aload 0 /* this */
            iload 1 /* count */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
         1: .line 1231
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.start:()V
         2: .line 1232
            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 1238
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
            ifnonnull 2
         1: .line 1239
            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 1241
      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 1242
            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 1247
            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 1248
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
         2: .line 1249
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
         3: .line 1250
            aload 1 /* oldThread */
            ifnull 13
         4: .line 1252
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         5: .line 1253
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
         6: .line 1252
            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 1258
      StackMap locals:
      StackMap stack:
            aload 1 /* oldThread */
            ldc 2000
            invokevirtual java.lang.Thread.join:(J)V
        11: .line 1259
            goto 13
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        12: pop
        13: .line 1261
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implClose:()V
        14: .line 1263
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
        15: .line 1264
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        16: .line 1267
            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 1268
            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 1272
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implStart:()V
         1: .line 1273
            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 1277
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implStop:()V
         1: .line 1280
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
         2: .line 1281
            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 1286
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            astore 1 /* curThread */
        start local 1 // java.lang.Thread curThread
         1: .line 1287
            goto 36
         2: .line 1291
      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 1292
            goto 7
         4: .line 1294
      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 1295
            goto 7
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         6: pop
         7: .line 1292
      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 1291
      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 1300
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
            iflt 15
        13: .line 1301
            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 1302
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
        15: .line 1304
      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 1305
            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 1306
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopEndFrame:I
            istore 2 /* endFrame */
        18: .line 1308
      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 1309
            iload 2 /* endFrame */
            i2l
            lload 3 /* framePos */
            lsub
            lconst_1
            ladd
            l2i
            istore 5 /* toWriteFrames */
        start local 5 // int toWriteFrames
        20: .line 1310
            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 1311
            iload 6 /* toWriteBytes */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getBufferSize:()I
            if_icmple 23
        22: .line 1312
            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 1314
      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 1315
            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 1317
            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 1318
            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 1322
            lload 3 /* framePos */
            iload 2 /* endFrame */
            i2l
            lcmp
            ifle 35
        28: .line 1324
            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 1325
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
            iconst_m1
            if_icmpeq 31
        30: .line 1326
            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 1328
      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 1329
            goto 35
        33: .line 1331
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.drain:()V
        34: .line 1332
            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 1299
      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 1287
      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 1338
            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 1349
            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 1354
            iload 1 /* value */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectClip.autoclosing:Z
            if_icmpeq 7
         1: .line 1355
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isOpen:()Z
            ifeq 6
         2: .line 1356
            iload 1 /* value */
            ifeq 5
         3: .line 1357
            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 1358
            goto 6
         5: .line 1359
      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 1362
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* value */
            putfield com.sun.media.sound.DirectAudioDevice$DirectClip.autoclosing:Z
         7: .line 1364
      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 1369
            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