final class com.sun.media.sound.DirectAudioDevice$DirectTDL extends com.sun.media.sound.DirectAudioDevice$DirectDL implements javax.sound.sampled.TargetDataLine
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.sun.media.sound.DirectAudioDevice$DirectTDL
  super_class: com.sun.media.sound.DirectAudioDevice$DirectDL
{
  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$DirectTDL 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 938
            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_0
            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 940
            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$DirectTDL this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/sun/media/sound/DirectAudioDevice$DirectTDL;
            0    2     1        info  Ljavax/sound/sampled/DataLine$Info;
            0    2     2      format  Ljavax/sound/sampled/AudioFormat;
            0    2     3  bufferSize  I
            0    2     4       mixer  Lcom/sun/media/sound/DirectAudioDevice;
    MethodParameters:
            Name  Flags
      info        
      format      
      bufferSize  
      mixer       

  public int read(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=4
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectTDL this
        start local 1 // byte[] b
        start local 2 // int off
        start local 3 // int len
         0: .line 944
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectTDL.flushing:Z
         1: .line 945
            iload 3 /* len */
            ifne 3
         2: .line 946
            iconst_0
            ireturn
         3: .line 948
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            ifge 5
         4: .line 949
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "illegal len: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* len */
            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
         5: .line 951
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            irem
            ifeq 10
         6: .line 952
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "illegal request to read non-integral number of frames ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         7: .line 954
            iload 3 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " bytes, "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         8: .line 955
            ldc "frameSize = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " bytes)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 952
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 957
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            ifge 12
        11: .line 958
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            iload 2 /* off */
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        12: .line 960
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            i2l
            iload 3 /* len */
            i2l
            ladd
            aload 1 /* b */
            arraylength
            i2l
            lcmp
            ifle 14
        13: .line 961
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            aload 1 /* b */
            arraylength
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        14: .line 963
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        15: .line 964
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.isActive:()Z
            ifne 18
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.doIO:Z
            ifeq 18
        16: .line 968
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.setActive:(Z)V
        17: .line 969
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.setStarted:(Z)V
        18: .line 963
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 4
            monitorexit
        19: goto 22
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: aload 4
            monitorexit
        21: athrow
        22: .line 972
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* read */
        start local 4 // int read
        23: .line 973
            goto 48
        24: .line 975
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lockNative:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        25: .line 976
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.id:J
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.softwareConversionSize:I
            invokestatic com.sun.media.sound.DirectAudioDevice.nRead:(J[BIII)I
            istore 5 /* thisRead */
        start local 5 // int thisRead
        26: .line 977
            iload 5 /* thisRead */
            ifge 29
        27: .line 979
            aload 6
            monitorexit
        28: goto 49
        29: .line 981
      StackMap locals: int java.lang.Object
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.bytePosition:J
            iload 5 /* thisRead */
            i2l
            ladd
            putfield com.sun.media.sound.DirectAudioDevice$DirectTDL.bytePosition:J
        30: .line 982
            iload 5 /* thisRead */
            ifle 32
        31: .line 983
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectTDL.drained:Z
        32: .line 975
      StackMap locals:
      StackMap stack:
            aload 6
            monitorexit
        33: goto 36
        end local 5 // int thisRead
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectTDL byte[] int int int top java.lang.Object
      StackMap stack: java.lang.Throwable
        34: aload 6
            monitorexit
        35: athrow
        start local 5 // int thisRead
        36: .line 986
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectTDL byte[] int int int int
      StackMap stack:
            iload 3 /* len */
            iload 5 /* thisRead */
            isub
            istore 3 /* len */
        37: .line 987
            iload 4 /* read */
            iload 5 /* thisRead */
            iadd
            istore 4 /* read */
        38: .line 988
            iload 3 /* len */
            ifle 49
        39: .line 989
            iload 2 /* off */
            iload 5 /* thisRead */
            iadd
            istore 2 /* off */
        40: .line 990
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lock:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        41: .line 992
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lock:Ljava/lang/Object;
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.waitTime:I
            i2l
            invokevirtual java.lang.Object.wait:(J)V
        42: .line 993
            goto 44
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectTDL byte[] int int int int java.lang.Object
      StackMap stack: java.lang.InterruptedException
        43: pop
        44: .line 990
      StackMap locals:
      StackMap stack:
            aload 6
            monitorexit
        45: goto 48
      StackMap locals:
      StackMap stack: java.lang.Throwable
        46: aload 6
            monitorexit
        47: athrow
        end local 5 // int thisRead
        48: .line 973
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.doIO:Z
            ifeq 49
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.flushing:Z
            ifeq 24
        49: .line 999
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.flushing:Z
            ifeq 51
        50: .line 1000
            iconst_0
            istore 4 /* read */
        51: .line 1002
      StackMap locals:
      StackMap stack:
            iload 4 /* read */
            ireturn
        end local 4 // int read
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] b
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectTDL this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   52     0      this  Lcom/sun/media/sound/DirectAudioDevice$DirectTDL;
            0   52     1         b  [B
            0   52     2       off  I
            0   52     3       len  I
           23   52     4      read  I
           26   34     5  thisRead  I
           36   48     5  thisRead  I
      Exception table:
        from    to  target  type
          15    19      20  any
          20    21      20  any
          25    28      34  any
          29    33      34  any
          34    35      34  any
          41    42      43  Class java.lang.InterruptedException
          41    45      46  any
          46    47      46  any
    MethodParameters:
      Name  Flags
      b     
      off   
      len   
}
SourceFile: "DirectAudioDevice.java"
NestHost: com.sun.media.sound.DirectAudioDevice
InnerClasses:
  private DirectDL = com.sun.media.sound.DirectAudioDevice$DirectDL of com.sun.media.sound.DirectAudioDevice
  private final DirectTDL = com.sun.media.sound.DirectAudioDevice$DirectTDL of com.sun.media.sound.DirectAudioDevice
  public Info = javax.sound.sampled.DataLine$Info of javax.sound.sampled.DataLine