public final class com.sun.media.sound.SoftMixingSourceDataLine extends com.sun.media.sound.SoftMixingDataLine implements javax.sound.sampled.SourceDataLine
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.sun.media.sound.SoftMixingSourceDataLine
  super_class: com.sun.media.sound.SoftMixingDataLine
{
  private boolean open;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private javax.sound.sampled.AudioFormat format;
    descriptor: Ljavax/sound/sampled/AudioFormat;
    flags: (0x0002) ACC_PRIVATE

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

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

  private float[] readbuffer;
    descriptor: [F
    flags: (0x0002) ACC_PRIVATE

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

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

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

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

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

  private long cycling_framepos;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private com.sun.media.sound.AudioFloatInputStream afis;
    descriptor: Lcom/sun/media/sound/AudioFloatInputStream;
    flags: (0x0002) ACC_PRIVATE

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

  private javax.sound.sampled.AudioFormat outputformat;
    descriptor: Ljavax/sound/sampled/AudioFormat;
    flags: (0x0002) ACC_PRIVATE

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

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

  private float _rightgain;
    descriptor: F
    flags: (0x0002) ACC_PRIVATE

  private float _leftgain;
    descriptor: F
    flags: (0x0002) ACC_PRIVATE

  private float _eff1gain;
    descriptor: F
    flags: (0x0002) ACC_PRIVATE

  private float _eff2gain;
    descriptor: F
    flags: (0x0002) ACC_PRIVATE

  void <init>(com.sun.media.sound.SoftMixingMixer, javax.sound.sampled.DataLine$Info);
    descriptor: (Lcom/sun/media/sound/SoftMixingMixer;Ljavax/sound/sampled/DataLine$Info;)V
    flags: (0x0000) 
    Code:
      stack=8, locals=3, args_size=3
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
        start local 1 // com.sun.media.sound.SoftMixingMixer mixer
        start local 2 // javax.sound.sampled.DataLine$Info info
         0: .line 134
            aload 0 /* this */
            aload 1 /* mixer */
            aload 2 /* info */
            invokespecial com.sun.media.sound.SoftMixingDataLine.<init>:(Lcom/sun/media/sound/SoftMixingMixer;Ljavax/sound/sampled/DataLine$Info;)V
         1: .line 48
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine.open:Z
         2: .line 50
            aload 0 /* this */
            new javax.sound.sampled.AudioFormat
            dup
            ldc 44100.0
            bipush 16
            iconst_2
            iconst_1
            iconst_0
            invokespecial javax.sound.sampled.AudioFormat.<init>:(FIIZZ)V
            putfield com.sun.media.sound.SoftMixingSourceDataLine.format:Ljavax/sound/sampled/AudioFormat;
         3: .line 54
            aload 0 /* this */
            iconst_m1
            putfield com.sun.media.sound.SoftMixingSourceDataLine.bufferSize:I
         4: .line 58
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine.active:Z
         5: .line 62
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_read_pos:I
         6: .line 64
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_write_pos:I
         7: .line 66
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_avail:I
         8: .line 68
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_framepos:J
         9: .line 200
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine._active:Z
        10: .line 135
            return
        end local 2 // javax.sound.sampled.DataLine$Info info
        end local 1 // com.sun.media.sound.SoftMixingMixer mixer
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
            0   11     1  mixer  Lcom/sun/media/sound/SoftMixingMixer;
            0   11     2   info  Ljavax/sound/sampled/DataLine$Info;
    MethodParameters:
       Name  Flags
      mixer  
      info   

  public int write(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=10, args_size=4
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
        start local 1 // byte[] b
        start local 2 // int off
        start local 3 // int len
         0: .line 139
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.isOpen:()Z
            ifne 2
         1: .line 140
            iconst_0
            ireturn
         2: .line 141
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.framesize:I
            irem
            ifeq 6
         3: .line 142
            new java.lang.IllegalArgumentException
            dup
         4: .line 143
            ldc "Number of bytes does not represent an integral number of sample frames."
         5: .line 142
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 144
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            ifge 8
         7: .line 145
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            iload 2 /* off */
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
         8: .line 147
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            i2l
            iload 3 /* len */
            i2l
            ladd
            aload 1 /* b */
            arraylength
            i2l
            lcmp
            ifle 10
         9: .line 148
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            aload 1 /* b */
            arraylength
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        10: .line 151
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_buffer:[B
            astore 4 /* buff */
        start local 4 // byte[] buff
        11: .line 152
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_buffer:[B
            arraylength
            istore 5 /* buff_len */
        start local 5 // int buff_len
        12: .line 154
            iconst_0
            istore 6 /* l */
        start local 6 // int l
        13: .line 155
            goto 42
        14: .line 157
      StackMap locals: byte[] int int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_buffer:[B
            dup
            astore 8
            monitorenter
        15: .line 158
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_write_pos:I
            istore 9 /* pos */
        start local 9 // int pos
        16: .line 159
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_avail:I
            istore 7 /* avail */
        start local 7 // int avail
        17: .line 160
            goto 25
        18: .line 161
      StackMap locals: int byte[] int
      StackMap stack:
            iload 7 /* avail */
            iload 5 /* buff_len */
            if_icmpne 20
        19: .line 162
            goto 26
        20: .line 163
      StackMap locals:
      StackMap stack:
            aload 4 /* buff */
            iload 9 /* pos */
            iinc 9 /* pos */ 1
            aload 1 /* b */
            iload 2 /* off */
            iinc 2 /* off */ 1
            baload
            bastore
        21: .line 164
            iinc 6 /* l */ 1
        22: .line 165
            iinc 7 /* avail */ 1
        23: .line 166
            iload 9 /* pos */
            iload 5 /* buff_len */
            if_icmpne 25
        24: .line 167
            iconst_0
            istore 9 /* pos */
        25: .line 160
      StackMap locals:
      StackMap stack:
            iload 6 /* l */
            iload 3 /* len */
            if_icmpne 18
        26: .line 169
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 7 /* avail */
            putfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_avail:I
        27: .line 170
            aload 0 /* this */
            iload 9 /* pos */
            putfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_write_pos:I
        28: .line 171
            iload 6 /* l */
            iload 3 /* len */
            if_icmpne 31
        29: .line 172
            iload 6 /* l */
            aload 8
            monitorexit
        30: ireturn
        end local 9 // int pos
        31: .line 157
      StackMap locals:
      StackMap stack:
            aload 8
            monitorexit
        32: goto 35
        end local 7 // int avail
      StackMap locals: com.sun.media.sound.SoftMixingSourceDataLine byte[] int int byte[] int int top byte[]
      StackMap stack: java.lang.Throwable
        33: aload 8
            monitorexit
        34: athrow
        start local 7 // int avail
        35: .line 174
      StackMap locals: com.sun.media.sound.SoftMixingSourceDataLine byte[] int int byte[] int int int
      StackMap stack:
            iload 7 /* avail */
            iload 5 /* buff_len */
            if_icmpne 42
        36: .line 176
            lconst_1
            invokestatic java.lang.Thread.sleep:(J)V
        37: .line 177
            goto 40
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        38: pop
        39: .line 178
            iload 6 /* l */
            ireturn
        40: .line 180
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.isRunning:()Z
            ifne 42
        41: .line 181
            iload 6 /* l */
            ireturn
        end local 7 // int avail
        42: .line 155
      StackMap locals:
      StackMap stack:
            iload 6 /* l */
            iload 3 /* len */
            if_icmpne 14
        43: .line 185
            iload 6 /* l */
            ireturn
        end local 6 // int l
        end local 5 // int buff_len
        end local 4 // byte[] buff
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] b
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   44     0      this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
            0   44     1         b  [B
            0   44     2       off  I
            0   44     3       len  I
           11   44     4      buff  [B
           12   44     5  buff_len  I
           13   44     6         l  I
           17   33     7     avail  I
           35   42     7     avail  I
           16   31     9       pos  I
      Exception table:
        from    to  target  type
          15    30      33  any
          31    32      33  any
          33    34      33  any
          36    37      38  Class java.lang.InterruptedException
    MethodParameters:
      Name  Flags
      b     
      off   
      len   

  protected void processControlLogic();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 218
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.active:Z
            putfield com.sun.media.sound.SoftMixingSourceDataLine._active:Z
         1: .line 219
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.rightgain:F
            putfield com.sun.media.sound.SoftMixingSourceDataLine._rightgain:F
         2: .line 220
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.leftgain:F
            putfield com.sun.media.sound.SoftMixingSourceDataLine._leftgain:F
         3: .line 221
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.eff1gain:F
            putfield com.sun.media.sound.SoftMixingSourceDataLine._eff1gain:F
         4: .line 222
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.eff2gain:F
            putfield com.sun.media.sound.SoftMixingSourceDataLine._eff2gain:F
         5: .line 223
            return
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/sun/media/sound/SoftMixingSourceDataLine;

  protected void processAudioLogic(com.sun.media.sound.SoftAudioBuffer[]);
    descriptor: ([Lcom/sun/media/sound/SoftAudioBuffer;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=11, args_size=2
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
        start local 1 // com.sun.media.sound.SoftAudioBuffer[] buffers
         0: .line 227
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine._active:Z
            ifeq 69
         1: .line 228
            aload 1 /* buffers */
            iconst_0
            aaload
            invokevirtual com.sun.media.sound.SoftAudioBuffer.array:()[F
            astore 2 /* left */
        start local 2 // float[] left
         2: .line 229
            aload 1 /* buffers */
            iconst_1
            aaload
            invokevirtual com.sun.media.sound.SoftAudioBuffer.array:()[F
            astore 3 /* right */
        start local 3 // float[] right
         3: .line 230
            aload 1 /* buffers */
            iconst_0
            aaload
            invokevirtual com.sun.media.sound.SoftAudioBuffer.getSize:()I
            istore 4 /* bufferlen */
        start local 4 // int bufferlen
         4: .line 232
            iload 4 /* bufferlen */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.in_nrofchannels:I
            imul
            istore 5 /* readlen */
        start local 5 // int readlen
         5: .line 233
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.readbuffer:[F
            ifnull 6
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.readbuffer:[F
            arraylength
            iload 5 /* readlen */
            if_icmpge 7
         6: .line 234
      StackMap locals: com.sun.media.sound.SoftMixingSourceDataLine com.sun.media.sound.SoftAudioBuffer[] float[] float[] int int
      StackMap stack:
            aload 0 /* this */
            iload 5 /* readlen */
            newarray 6
            putfield com.sun.media.sound.SoftMixingSourceDataLine.readbuffer:[F
         7: .line 236
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* ret */
        start local 6 // int ret
         8: .line 238
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.afis:Lcom/sun/media/sound/AudioFloatInputStream;
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.readbuffer:[F
            invokevirtual com.sun.media.sound.AudioFloatInputStream.read:([F)I
            istore 6 /* ret */
         9: .line 239
            iload 6 /* ret */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.in_nrofchannels:I
            if_icmpeq 13
        10: .line 240
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.readbuffer:[F
            iload 6 /* ret */
            iload 5 /* readlen */
            fconst_0
            invokestatic java.util.Arrays.fill:([FIIF)V
        11: .line 241
            goto 13
      StackMap locals: com.sun.media.sound.SoftMixingSourceDataLine com.sun.media.sound.SoftAudioBuffer[] float[] float[] int int int
      StackMap stack: java.io.IOException
        12: pop
        13: .line 244
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.in_nrofchannels:I
            istore 7 /* in_c */
        start local 7 // int in_c
        14: .line 245
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        15: iconst_0
            istore 9 /* ix */
        start local 9 // int ix
        16: goto 19
        17: .line 246
      StackMap locals: int int int
      StackMap stack:
            aload 2 /* left */
            iload 8 /* i */
            dup2
            faload
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.readbuffer:[F
            iload 9 /* ix */
            faload
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine._leftgain:F
            fmul
            fadd
            fastore
        18: .line 245
            iinc 8 /* i */ 1
            iload 9 /* ix */
            iload 7 /* in_c */
            iadd
            istore 9 /* ix */
      StackMap locals:
      StackMap stack:
        19: iload 8 /* i */
            iload 4 /* bufferlen */
            if_icmplt 17
        end local 9 // int ix
        end local 8 // int i
        20: .line 248
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.out_nrofchannels:I
            iconst_1
            if_icmpeq 35
        21: .line 249
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.in_nrofchannels:I
            iconst_1
            if_icmpne 29
        22: .line 250
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        23: iconst_0
            istore 9 /* ix */
        start local 9 // int ix
        24: goto 27
        25: .line 251
      StackMap locals:
      StackMap stack:
            aload 3 /* right */
            iload 8 /* i */
            dup2
            faload
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.readbuffer:[F
            iload 9 /* ix */
            faload
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine._rightgain:F
            fmul
            fadd
            fastore
        26: .line 250
            iinc 8 /* i */ 1
            iload 9 /* ix */
            iload 7 /* in_c */
            iadd
            istore 9 /* ix */
      StackMap locals:
      StackMap stack:
        27: iload 8 /* i */
            iload 4 /* bufferlen */
            if_icmplt 25
        end local 9 // int ix
        end local 8 // int i
        28: .line 253
            goto 35
        29: .line 254
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        30: iconst_1
            istore 9 /* ix */
        start local 9 // int ix
        31: goto 34
        32: .line 255
      StackMap locals: int int
      StackMap stack:
            aload 3 /* right */
            iload 8 /* i */
            dup2
            faload
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.readbuffer:[F
            iload 9 /* ix */
            faload
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine._rightgain:F
            fmul
            fadd
            fastore
        33: .line 254
            iinc 8 /* i */ 1
            iload 9 /* ix */
            iload 7 /* in_c */
            iadd
            istore 9 /* ix */
      StackMap locals:
      StackMap stack:
        34: iload 8 /* i */
            iload 4 /* bufferlen */
            if_icmplt 32
        end local 9 // int ix
        end local 8 // int i
        35: .line 261
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine._eff1gain:F
            f2d
            ldc 1.0E-4
            dcmpl
            ifle 52
        36: .line 262
            aload 1 /* buffers */
            iconst_2
            aaload
        37: .line 263
            invokevirtual com.sun.media.sound.SoftAudioBuffer.array:()[F
        38: .line 262
            astore 8 /* eff1 */
        start local 8 // float[] eff1
        39: .line 264
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        40: iconst_0
            istore 10 /* ix */
        start local 10 // int ix
        41: goto 44
        42: .line 265
      StackMap locals: float[] int int
      StackMap stack:
            aload 8 /* eff1 */
            iload 9 /* i */
            dup2
            faload
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.readbuffer:[F
            iload 10 /* ix */
            faload
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine._eff1gain:F
            fmul
            fadd
            fastore
        43: .line 264
            iinc 9 /* i */ 1
            iload 10 /* ix */
            iload 7 /* in_c */
            iadd
            istore 10 /* ix */
      StackMap locals:
      StackMap stack:
        44: iload 9 /* i */
            iload 4 /* bufferlen */
            if_icmplt 42
        end local 10 // int ix
        end local 9 // int i
        45: .line 267
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.in_nrofchannels:I
            iconst_2
            if_icmpne 52
        46: .line 268
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        47: iconst_1
            istore 10 /* ix */
        start local 10 // int ix
        48: goto 51
        49: .line 269
      StackMap locals:
      StackMap stack:
            aload 8 /* eff1 */
            iload 9 /* i */
            dup2
            faload
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.readbuffer:[F
            iload 10 /* ix */
            faload
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine._eff1gain:F
            fmul
            fadd
            fastore
        50: .line 268
            iinc 9 /* i */ 1
            iload 10 /* ix */
            iload 7 /* in_c */
            iadd
            istore 10 /* ix */
      StackMap locals:
      StackMap stack:
        51: iload 9 /* i */
            iload 4 /* bufferlen */
            if_icmplt 49
        end local 10 // int ix
        end local 9 // int i
        end local 8 // float[] eff1
        52: .line 274
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine._eff2gain:F
            f2d
            ldc 1.0E-4
            dcmpl
            ifle 69
        53: .line 275
            aload 1 /* buffers */
            iconst_3
            aaload
        54: .line 276
            invokevirtual com.sun.media.sound.SoftAudioBuffer.array:()[F
        55: .line 275
            astore 8 /* eff2 */
        start local 8 // float[] eff2
        56: .line 277
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        57: iconst_0
            istore 10 /* ix */
        start local 10 // int ix
        58: goto 61
        59: .line 278
      StackMap locals: float[] int int
      StackMap stack:
            aload 8 /* eff2 */
            iload 9 /* i */
            dup2
            faload
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.readbuffer:[F
            iload 10 /* ix */
            faload
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine._eff2gain:F
            fmul
            fadd
            fastore
        60: .line 277
            iinc 9 /* i */ 1
            iload 10 /* ix */
            iload 7 /* in_c */
            iadd
            istore 10 /* ix */
      StackMap locals:
      StackMap stack:
        61: iload 9 /* i */
            iload 4 /* bufferlen */
            if_icmplt 59
        end local 10 // int ix
        end local 9 // int i
        62: .line 280
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.in_nrofchannels:I
            iconst_2
            if_icmpne 69
        63: .line 281
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        64: iconst_1
            istore 10 /* ix */
        start local 10 // int ix
        65: goto 68
        66: .line 282
      StackMap locals:
      StackMap stack:
            aload 8 /* eff2 */
            iload 9 /* i */
            dup2
            faload
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.readbuffer:[F
            iload 10 /* ix */
            faload
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine._eff2gain:F
            fmul
            fadd
            fastore
        67: .line 281
            iinc 9 /* i */ 1
            iload 10 /* ix */
            iload 7 /* in_c */
            iadd
            istore 10 /* ix */
      StackMap locals:
      StackMap stack:
        68: iload 9 /* i */
            iload 4 /* bufferlen */
            if_icmplt 66
        end local 10 // int ix
        end local 9 // int i
        end local 8 // float[] eff2
        end local 7 // int in_c
        end local 6 // int ret
        end local 5 // int readlen
        end local 4 // int bufferlen
        end local 3 // float[] right
        end local 2 // float[] left
        69: .line 288
      StackMap locals: com.sun.media.sound.SoftMixingSourceDataLine com.sun.media.sound.SoftAudioBuffer[]
      StackMap stack:
            return
        end local 1 // com.sun.media.sound.SoftAudioBuffer[] buffers
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   70     0       this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
            0   70     1    buffers  [Lcom/sun/media/sound/SoftAudioBuffer;
            2   69     2       left  [F
            3   69     3      right  [F
            4   69     4  bufferlen  I
            5   69     5    readlen  I
            8   69     6        ret  I
           14   69     7       in_c  I
           15   20     8          i  I
           16   20     9         ix  I
           23   28     8          i  I
           24   28     9         ix  I
           30   35     8          i  I
           31   35     9         ix  I
           39   52     8       eff1  [F
           40   45     9          i  I
           41   45    10         ix  I
           47   52     9          i  I
           48   52    10         ix  I
           56   69     8       eff2  [F
           57   62     9          i  I
           58   62    10         ix  I
           64   69     9          i  I
           65   69    10         ix  I
      Exception table:
        from    to  target  type
           8    11      12  Class java.io.IOException
    MethodParameters:
         Name  Flags
      buffers  

  public void open();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 292
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.format:Ljavax/sound/sampled/AudioFormat;
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.open:(Ljavax/sound/sampled/AudioFormat;)V
         1: .line 293
            return
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
    Exceptions:
      throws javax.sound.sampled.LineUnavailableException

  public void open(javax.sound.sampled.AudioFormat);
    descriptor: (Ljavax/sound/sampled/AudioFormat;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
        start local 1 // javax.sound.sampled.AudioFormat format
         0: .line 297
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.bufferSize:I
            iconst_m1
            if_icmpne 4
         1: .line 298
            aload 0 /* this */
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getFrameRate:()F
            fconst_2
            fdiv
            f2i
         2: .line 299
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            imul
         3: .line 298
            putfield com.sun.media.sound.SoftMixingSourceDataLine.bufferSize:I
         4: .line 300
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* format */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.bufferSize:I
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.open:(Ljavax/sound/sampled/AudioFormat;I)V
         5: .line 301
            return
        end local 1 // javax.sound.sampled.AudioFormat format
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
            0    6     1  format  Ljavax/sound/sampled/AudioFormat;
    Exceptions:
      throws javax.sound.sampled.LineUnavailableException
    MethodParameters:
        Name  Flags
      format  

  public void open(javax.sound.sampled.AudioFormat, int);
    descriptor: (Ljavax/sound/sampled/AudioFormat;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=3
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
        start local 1 // javax.sound.sampled.AudioFormat format
        start local 2 // int bufferSize
         0: .line 307
            aconst_null
            astore 3 /* event */
        start local 3 // javax.sound.sampled.LineEvent event
         1: .line 309
            iload 2 /* bufferSize */
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            bipush 32
            imul
            if_icmpge 3
         2: .line 310
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            bipush 32
            imul
            istore 2 /* bufferSize */
         3: .line 312
      StackMap locals: javax.sound.sampled.LineEvent
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.control_mutex:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         4: .line 314
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.isOpen:()Z
            ifne 40
         5: .line 315
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.mixer:Lcom/sun/media/sound/SoftMixingMixer;
            invokevirtual com.sun.media.sound.SoftMixingMixer.isOpen:()Z
            ifne 8
         6: .line 316
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.mixer:Lcom/sun/media/sound/SoftMixingMixer;
            invokevirtual com.sun.media.sound.SoftMixingMixer.open:()V
         7: .line 317
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.mixer:Lcom/sun/media/sound/SoftMixingMixer;
            iconst_1
            putfield com.sun.media.sound.SoftMixingMixer.implicitOpen:Z
         8: .line 320
      StackMap locals: java.lang.Object
      StackMap stack:
            new javax.sound.sampled.LineEvent
            dup
            aload 0 /* this */
            getstatic javax.sound.sampled.LineEvent$Type.OPEN:Ljavax/sound/sampled/LineEvent$Type;
            lconst_0
            invokespecial javax.sound.sampled.LineEvent.<init>:(Ljavax/sound/sampled/Line;Ljavax/sound/sampled/LineEvent$Type;J)V
            astore 3 /* event */
         9: .line 322
            aload 0 /* this */
            iload 2 /* bufferSize */
            iload 2 /* bufferSize */
        10: .line 323
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            irem
            isub
        11: .line 322
            putfield com.sun.media.sound.SoftMixingSourceDataLine.bufferSize:I
        12: .line 324
            aload 0 /* this */
            aload 1 /* format */
            putfield com.sun.media.sound.SoftMixingSourceDataLine.format:Ljavax/sound/sampled/AudioFormat;
        13: .line 325
            aload 0 /* this */
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            putfield com.sun.media.sound.SoftMixingSourceDataLine.framesize:I
        14: .line 326
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.mixer:Lcom/sun/media/sound/SoftMixingMixer;
            invokevirtual com.sun.media.sound.SoftMixingMixer.getFormat:()Ljavax/sound/sampled/AudioFormat;
            putfield com.sun.media.sound.SoftMixingSourceDataLine.outputformat:Ljavax/sound/sampled/AudioFormat;
        15: .line 327
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.outputformat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
            putfield com.sun.media.sound.SoftMixingSourceDataLine.out_nrofchannels:I
        16: .line 328
            aload 0 /* this */
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
            putfield com.sun.media.sound.SoftMixingSourceDataLine.in_nrofchannels:I
        17: .line 330
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.SoftMixingSourceDataLine.open:Z
        18: .line 332
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.mixer:Lcom/sun/media/sound/SoftMixingMixer;
            invokevirtual com.sun.media.sound.SoftMixingMixer.getMainMixer:()Lcom/sun/media/sound/SoftMixingMainMixer;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingMainMixer.openLine:(Lcom/sun/media/sound/SoftMixingDataLine;)V
        19: .line 334
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.framesize:I
            iload 2 /* bufferSize */
            imul
            newarray 8
            putfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_buffer:[B
        20: .line 335
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_read_pos:I
        21: .line 336
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_write_pos:I
        22: .line 337
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_avail:I
        23: .line 338
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_framepos:J
        24: .line 340
            new com.sun.media.sound.SoftMixingSourceDataLine$1
            dup
            aload 0 /* this */
            invokespecial com.sun.media.sound.SoftMixingSourceDataLine$1.<init>:(Lcom/sun/media/sound/SoftMixingSourceDataLine;)V
            astore 5 /* cycling_inputstream */
        start local 5 // java.io.InputStream cycling_inputstream
        25: .line 383
            aload 0 /* this */
        26: .line 384
            new javax.sound.sampled.AudioInputStream
            dup
        27: .line 385
            aload 5 /* cycling_inputstream */
            aload 1 /* format */
        28: .line 386
            ldc -1
        29: .line 384
            invokespecial javax.sound.sampled.AudioInputStream.<init>:(Ljava/io/InputStream;Ljavax/sound/sampled/AudioFormat;J)V
            invokestatic com.sun.media.sound.AudioFloatInputStream.getInputStream:(Ljavax/sound/sampled/AudioInputStream;)Lcom/sun/media/sound/AudioFloatInputStream;
        30: .line 383
            putfield com.sun.media.sound.SoftMixingSourceDataLine.afis:Lcom/sun/media/sound/AudioFloatInputStream;
        31: .line 387
            aload 0 /* this */
            new com.sun.media.sound.SoftMixingSourceDataLine$NonBlockingFloatInputStream
            dup
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.afis:Lcom/sun/media/sound/AudioFloatInputStream;
            invokespecial com.sun.media.sound.SoftMixingSourceDataLine$NonBlockingFloatInputStream.<init>:(Lcom/sun/media/sound/AudioFloatInputStream;)V
            putfield com.sun.media.sound.SoftMixingSourceDataLine.afis:Lcom/sun/media/sound/AudioFloatInputStream;
        32: .line 389
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getSampleRate:()F
        33: .line 390
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.outputformat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getSampleRate:()F
        34: .line 389
            fsub
            invokestatic java.lang.Math.abs:(F)F
            f2d
        35: .line 390
            ldc 1.0E-6
            dcmpl
            ifle 46
        36: .line 391
            aload 0 /* this */
            new com.sun.media.sound.SoftMixingDataLine$AudioFloatInputStreamResampler
            dup
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.afis:Lcom/sun/media/sound/AudioFloatInputStream;
        37: .line 392
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.outputformat:Ljavax/sound/sampled/AudioFormat;
            invokespecial com.sun.media.sound.SoftMixingDataLine$AudioFloatInputStreamResampler.<init>:(Lcom/sun/media/sound/AudioFloatInputStream;Ljavax/sound/sampled/AudioFormat;)V
        38: .line 391
            putfield com.sun.media.sound.SoftMixingSourceDataLine.afis:Lcom/sun/media/sound/AudioFloatInputStream;
        end local 5 // java.io.InputStream cycling_inputstream
        39: .line 394
            goto 46
        40: .line 395
      StackMap locals:
      StackMap stack:
            aload 1 /* format */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.matches:(Ljavax/sound/sampled/AudioFormat;)Z
            ifne 46
        41: .line 396
            new java.lang.IllegalStateException
            dup
        42: .line 397
            new java.lang.StringBuilder
            dup
            ldc "Line is already open with format "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        43: .line 398
            ldc " and bufferSize "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.getBufferSize:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
        44: .line 397
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        45: .line 396
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        46: .line 312
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        47: goto 50
      StackMap locals:
      StackMap stack: java.lang.Throwable
        48: aload 4
            monitorexit
        49: athrow
        50: .line 404
      StackMap locals:
      StackMap stack:
            aload 3 /* event */
            ifnull 52
        51: .line 405
            aload 0 /* this */
            aload 3 /* event */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.sendEvent:(Ljavax/sound/sampled/LineEvent;)V
        52: .line 407
      StackMap locals:
      StackMap stack:
            return
        end local 3 // javax.sound.sampled.LineEvent event
        end local 2 // int bufferSize
        end local 1 // javax.sound.sampled.AudioFormat format
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   53     0                 this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
            0   53     1               format  Ljavax/sound/sampled/AudioFormat;
            0   53     2           bufferSize  I
            1   53     3                event  Ljavax/sound/sampled/LineEvent;
           25   39     5  cycling_inputstream  Ljava/io/InputStream;
      Exception table:
        from    to  target  type
           4    47      48  any
          48    49      48  any
    Exceptions:
      throws javax.sound.sampled.LineUnavailableException
    MethodParameters:
            Name  Flags
      format      
      bufferSize  

  public int available();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 411
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_buffer:[B
            dup
            astore 1
            monitorenter
         1: .line 412
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_buffer:[B
            arraylength
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_avail:I
            isub
            aload 1
            monitorexit
         2: ireturn
         3: .line 411
      StackMap locals: com.sun.media.sound.SoftMixingSourceDataLine byte[]
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public void drain();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 420
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_buffer:[B
            dup
            astore 2
            monitorenter
         1: .line 421
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_avail:I
            istore 1 /* avail */
        start local 1 // int avail
         2: .line 420
            aload 2
            monitorexit
         3: goto 6
        end local 1 // int avail
      StackMap locals: com.sun.media.sound.SoftMixingSourceDataLine top byte[]
      StackMap stack: java.lang.Throwable
         4: aload 2
            monitorexit
         5: athrow
        start local 1 // int avail
         6: .line 423
      StackMap locals: com.sun.media.sound.SoftMixingSourceDataLine int
      StackMap stack:
            iload 1 /* avail */
            ifeq 8
         7: .line 424
            return
         8: .line 426
      StackMap locals:
      StackMap stack:
            lconst_1
            invokestatic java.lang.Thread.sleep:(J)V
         9: .line 427
            goto 0
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        10: pop
        11: .line 428
            return
        end local 1 // int avail
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   12     0   this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
            2    4     1  avail  I
            6   12     1  avail  I
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any
           8     9      10  Class java.lang.InterruptedException

  public void flush();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 435
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_buffer:[B
            dup
            astore 1
            monitorenter
         1: .line 436
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_read_pos:I
         2: .line 437
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_write_pos:I
         3: .line 438
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_avail:I
         4: .line 435
            aload 1
            monitorexit
         5: goto 8
      StackMap locals: com.sun.media.sound.SoftMixingSourceDataLine byte[]
      StackMap stack: java.lang.Throwable
         6: aload 1
            monitorexit
         7: athrow
         8: .line 440
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any

  public int getBufferSize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 444
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.control_mutex:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 445
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.bufferSize:I
            aload 1
            monitorexit
         2: ireturn
         3: .line 444
      StackMap locals: com.sun.media.sound.SoftMixingSourceDataLine java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public javax.sound.sampled.AudioFormat getFormat();
    descriptor: ()Ljavax/sound/sampled/AudioFormat;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 451
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.control_mutex:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 452
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.format:Ljavax/sound/sampled/AudioFormat;
            aload 1
            monitorexit
         2: areturn
         3: .line 451
      StackMap locals: com.sun.media.sound.SoftMixingSourceDataLine java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public int getFramePosition();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 458
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.getLongFramePosition:()J
            l2i
            ireturn
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/SoftMixingSourceDataLine;

  public float getLevel();
    descriptor: ()F
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 463
            ldc -1.0
            freturn
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/SoftMixingSourceDataLine;

  public long getLongFramePosition();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 468
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_buffer:[B
            dup
            astore 1
            monitorenter
         1: .line 469
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.cycling_framepos:J
            aload 1
            monitorexit
         2: lreturn
         3: .line 468
      StackMap locals: com.sun.media.sound.SoftMixingSourceDataLine byte[]
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public long getMicrosecondPosition();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 475
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.getLongFramePosition:()J
            l2d
            ldc 1000000.0
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.getFormat:()Ljavax/sound/sampled/AudioFormat;
         1: .line 476
            invokevirtual javax.sound.sampled.AudioFormat.getSampleRate:()F
            f2d
            ddiv
         2: .line 475
            dmul
            d2l
            lreturn
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/media/sound/SoftMixingSourceDataLine;

  public boolean isActive();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 481
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.control_mutex:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 482
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.active:Z
            aload 1
            monitorexit
         2: ireturn
         3: .line 481
      StackMap locals: com.sun.media.sound.SoftMixingSourceDataLine java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public boolean isRunning();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 488
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.control_mutex:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 489
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.active:Z
            aload 1
            monitorexit
         2: ireturn
         3: .line 488
      StackMap locals: com.sun.media.sound.SoftMixingSourceDataLine java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public void start();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 496
            aconst_null
            astore 1 /* event */
        start local 1 // javax.sound.sampled.LineEvent event
         1: .line 498
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.control_mutex:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         2: .line 499
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.isOpen:()Z
            ifeq 10
         3: .line 500
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.active:Z
            ifeq 6
         4: .line 501
            aload 2
            monitorexit
         5: return
         6: .line 502
      StackMap locals: javax.sound.sampled.LineEvent java.lang.Object
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.SoftMixingSourceDataLine.active:Z
         7: .line 503
            new javax.sound.sampled.LineEvent
            dup
            aload 0 /* this */
            getstatic javax.sound.sampled.LineEvent$Type.START:Ljavax/sound/sampled/LineEvent$Type;
         8: .line 504
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.getLongFramePosition:()J
         9: .line 503
            invokespecial javax.sound.sampled.LineEvent.<init>:(Ljavax/sound/sampled/Line;Ljavax/sound/sampled/LineEvent$Type;J)V
            astore 1 /* event */
        10: .line 498
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        11: goto 14
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: aload 2
            monitorexit
        13: athrow
        14: .line 508
      StackMap locals:
      StackMap stack:
            aload 1 /* event */
            ifnull 16
        15: .line 509
            aload 0 /* this */
            aload 1 /* event */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.sendEvent:(Ljavax/sound/sampled/LineEvent;)V
        16: .line 510
      StackMap locals:
      StackMap stack:
            return
        end local 1 // javax.sound.sampled.LineEvent event
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   17     0   this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
            1   17     1  event  Ljavax/sound/sampled/LineEvent;
      Exception table:
        from    to  target  type
           2     5      12  any
           6    11      12  any
          12    13      12  any

  public void stop();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 514
            aconst_null
            astore 1 /* event */
        start local 1 // javax.sound.sampled.LineEvent event
         1: .line 516
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.control_mutex:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         2: .line 517
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.isOpen:()Z
            ifeq 10
         3: .line 518
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.active:Z
            ifne 6
         4: .line 519
            aload 2
            monitorexit
         5: return
         6: .line 520
      StackMap locals: javax.sound.sampled.LineEvent java.lang.Object
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine.active:Z
         7: .line 521
            new javax.sound.sampled.LineEvent
            dup
            aload 0 /* this */
            getstatic javax.sound.sampled.LineEvent$Type.STOP:Ljavax/sound/sampled/LineEvent$Type;
         8: .line 522
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.getLongFramePosition:()J
         9: .line 521
            invokespecial javax.sound.sampled.LineEvent.<init>:(Ljavax/sound/sampled/Line;Ljavax/sound/sampled/LineEvent$Type;J)V
            astore 1 /* event */
        10: .line 516
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        11: goto 14
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: aload 2
            monitorexit
        13: athrow
        14: .line 526
      StackMap locals:
      StackMap stack:
            aload 1 /* event */
            ifnull 16
        15: .line 527
            aload 0 /* this */
            aload 1 /* event */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.sendEvent:(Ljavax/sound/sampled/LineEvent;)V
        16: .line 528
      StackMap locals:
      StackMap stack:
            return
        end local 1 // javax.sound.sampled.LineEvent event
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   17     0   this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
            1   17     1  event  Ljavax/sound/sampled/LineEvent;
      Exception table:
        from    to  target  type
           2     5      12  any
           6    11      12  any
          12    13      12  any

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 533
            aconst_null
            astore 1 /* event */
        start local 1 // javax.sound.sampled.LineEvent event
         1: .line 535
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.control_mutex:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         2: .line 536
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.isOpen:()Z
            ifne 5
         3: .line 537
            aload 2
            monitorexit
         4: return
         5: .line 538
      StackMap locals: javax.sound.sampled.LineEvent java.lang.Object
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.stop:()V
         6: .line 540
            new javax.sound.sampled.LineEvent
            dup
            aload 0 /* this */
            getstatic javax.sound.sampled.LineEvent$Type.CLOSE:Ljavax/sound/sampled/LineEvent$Type;
         7: .line 541
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.getLongFramePosition:()J
         8: .line 540
            invokespecial javax.sound.sampled.LineEvent.<init>:(Ljavax/sound/sampled/Line;Ljavax/sound/sampled/LineEvent$Type;J)V
            astore 1 /* event */
         9: .line 543
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingSourceDataLine.open:Z
        10: .line 544
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.mixer:Lcom/sun/media/sound/SoftMixingMixer;
            invokevirtual com.sun.media.sound.SoftMixingMixer.getMainMixer:()Lcom/sun/media/sound/SoftMixingMainMixer;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingMainMixer.closeLine:(Lcom/sun/media/sound/SoftMixingDataLine;)V
        11: .line 535
            aload 2
            monitorexit
        12: goto 15
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: aload 2
            monitorexit
        14: athrow
        15: .line 547
      StackMap locals:
      StackMap stack:
            aload 1 /* event */
            ifnull 17
        16: .line 548
            aload 0 /* this */
            aload 1 /* event */
            invokevirtual com.sun.media.sound.SoftMixingSourceDataLine.sendEvent:(Ljavax/sound/sampled/LineEvent;)V
        17: .line 550
      StackMap locals:
      StackMap stack:
            return
        end local 1 // javax.sound.sampled.LineEvent event
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   18     0   this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
            1   18     1  event  Ljavax/sound/sampled/LineEvent;
      Exception table:
        from    to  target  type
           2     4      13  any
           5    12      13  any
          13    14      13  any

  public boolean isOpen();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
         0: .line 554
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.control_mutex:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 555
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingSourceDataLine.open:Z
            aload 1
            monitorexit
         2: ireturn
         3: .line 554
      StackMap locals: com.sun.media.sound.SoftMixingSourceDataLine java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // com.sun.media.sound.SoftMixingSourceDataLine this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/media/sound/SoftMixingSourceDataLine;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any
}
SourceFile: "SoftMixingSourceDataLine.java"
NestMembers:
  com.sun.media.sound.SoftMixingSourceDataLine$1  com.sun.media.sound.SoftMixingSourceDataLine$NonBlockingFloatInputStream
InnerClasses:
  protected final AudioFloatInputStreamResampler = com.sun.media.sound.SoftMixingDataLine$AudioFloatInputStreamResampler of com.sun.media.sound.SoftMixingDataLine
  com.sun.media.sound.SoftMixingSourceDataLine$1
  private NonBlockingFloatInputStream = com.sun.media.sound.SoftMixingSourceDataLine$NonBlockingFloatInputStream of com.sun.media.sound.SoftMixingSourceDataLine
  public Info = javax.sound.sampled.DataLine$Info of javax.sound.sampled.DataLine
  public Type = javax.sound.sampled.LineEvent$Type of javax.sound.sampled.LineEvent