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 982
            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 984
            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 989
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectTDL.flushing:Z
         1: .line 990
            iload 3 /* len */
            ifne 3
         2: .line 991
            iconst_0
            ireturn
         3: .line 993
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            ifge 5
         4: .line 994
            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 996
      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 997
            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 999
            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 1000
            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 997
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 1002
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            ifge 12
        11: .line 1003
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            iload 2 /* off */
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        12: .line 1005
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            i2l
            iload 3 /* len */
            i2l
            ladd
            aload 1 /* b */
            arraylength
            i2l
            lcmp
            ifle 14
        13: .line 1006
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            aload 1 /* b */
            arraylength
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        14: .line 1008
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.isActive:()Z
            ifne 17
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.doIO:Z
            ifeq 17
        15: .line 1011
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.setActive:(Z)V
        16: .line 1012
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.setStarted:(Z)V
        17: .line 1014
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* read */
        start local 4 // int read
        18: .line 1015
            goto 45
        19: .line 1016
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 5 /* thisRead */
        start local 5 // int thisRead
        20: .line 1017
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lockNative:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        21: .line 1018
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.doIO:Z
            ifeq 23
        22: .line 1019
            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 */
        23: .line 1020
      StackMap locals: int java.lang.Object
      StackMap stack:
            iload 5 /* thisRead */
            ifge 26
        24: .line 1022
            aload 6
            monitorexit
        25: goto 46
        26: .line 1024
      StackMap locals:
      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
        27: .line 1025
            iload 5 /* thisRead */
            ifle 29
        28: .line 1026
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectTDL.drained:Z
        29: .line 1017
      StackMap locals:
      StackMap stack:
            aload 6
            monitorexit
        30: goto 33
      StackMap locals:
      StackMap stack: java.lang.Throwable
        31: aload 6
            monitorexit
        32: athrow
        33: .line 1029
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            iload 5 /* thisRead */
            isub
            istore 3 /* len */
        34: .line 1030
            iload 4 /* read */
            iload 5 /* thisRead */
            iadd
            istore 4 /* read */
        35: .line 1031
            iload 3 /* len */
            ifle 46
        36: .line 1032
            iload 2 /* off */
            iload 5 /* thisRead */
            iadd
            istore 2 /* off */
        37: .line 1033
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lock:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        38: .line 1035
            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
        39: .line 1036
            goto 41
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectTDL byte[] int int int int java.lang.Object
      StackMap stack: java.lang.InterruptedException
        40: pop
        41: .line 1033
      StackMap locals:
      StackMap stack:
            aload 6
            monitorexit
        42: goto 45
      StackMap locals:
      StackMap stack: java.lang.Throwable
        43: aload 6
            monitorexit
        44: athrow
        end local 5 // int thisRead
        45: .line 1015
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.doIO:Z
            ifeq 46
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.flushing:Z
            ifeq 19
        46: .line 1042
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.flushing:Z
            ifeq 48
        47: .line 1043
            iconst_0
            istore 4 /* read */
        48: .line 1045
      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   49     0      this  Lcom/sun/media/sound/DirectAudioDevice$DirectTDL;
            0   49     1         b  [B
            0   49     2       off  I
            0   49     3       len  I
           18   49     4      read  I
           20   45     5  thisRead  I
      Exception table:
        from    to  target  type
          21    25      31  any
          26    30      31  any
          31    32      31  any
          38    39      40  Class java.lang.InterruptedException
          38    42      43  any
          43    44      43  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