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 935
            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 937
            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 941
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectTDL.flushing:Z
         1: .line 942
            iload 3 /* len */
            ifne 3
         2: .line 943
            iconst_0
            ireturn
         3: .line 945
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            ifge 5
         4: .line 946
            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 948
      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 949
            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 951
            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 952
            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 949
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 954
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            ifge 12
        11: .line 955
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            iload 2 /* off */
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        12: .line 957
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            i2l
            iload 3 /* len */
            i2l
            ladd
            aload 1 /* b */
            arraylength
            i2l
            lcmp
            ifle 14
        13: .line 958
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            aload 1 /* b */
            arraylength
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        14: .line 960
      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 963
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.setActive:(Z)V
        16: .line 964
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.setStarted:(Z)V
        17: .line 966
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* read */
        start local 4 // int read
        18: .line 967
            goto 43
        19: .line 969
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lockNative:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        20: .line 970
            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
        21: .line 971
            iload 5 /* thisRead */
            ifge 24
        22: .line 973
            aload 6
            monitorexit
        23: goto 44
        24: .line 975
      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
        25: .line 976
            iload 5 /* thisRead */
            ifle 27
        26: .line 977
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectTDL.drained:Z
        27: .line 969
      StackMap locals:
      StackMap stack:
            aload 6
            monitorexit
        28: goto 31
        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
        29: aload 6
            monitorexit
        30: athrow
        start local 5 // int thisRead
        31: .line 980
      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 */
        32: .line 981
            iload 4 /* read */
            iload 5 /* thisRead */
            iadd
            istore 4 /* read */
        33: .line 982
            iload 3 /* len */
            ifle 44
        34: .line 983
            iload 2 /* off */
            iload 5 /* thisRead */
            iadd
            istore 2 /* off */
        35: .line 984
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lock:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        36: .line 986
            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
        37: .line 987
            goto 39
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectTDL byte[] int int int int java.lang.Object
      StackMap stack: java.lang.InterruptedException
        38: pop
        39: .line 984
      StackMap locals:
      StackMap stack:
            aload 6
            monitorexit
        40: goto 43
      StackMap locals:
      StackMap stack: java.lang.Throwable
        41: aload 6
            monitorexit
        42: athrow
        end local 5 // int thisRead
        43: .line 967
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.doIO:Z
            ifeq 44
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.flushing:Z
            ifeq 19
        44: .line 993
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.flushing:Z
            ifeq 46
        45: .line 994
            iconst_0
            istore 4 /* read */
        46: .line 996
      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   47     0      this  Lcom/sun/media/sound/DirectAudioDevice$DirectTDL;
            0   47     1         b  [B
            0   47     2       off  I
            0   47     3       len  I
           18   47     4      read  I
           21   29     5  thisRead  I
           31   43     5  thisRead  I
      Exception table:
        from    to  target  type
          20    23      29  any
          24    28      29  any
          29    30      29  any
          36    37      38  Class java.lang.InterruptedException
          36    40      41  any
          41    42      41  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