class com.sun.media.sound.DirectAudioDevice$DirectDL extends com.sun.media.sound.AbstractDataLine implements com.sun.media.sound.EventDispatcher$LineMonitor
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.sun.media.sound.DirectAudioDevice$DirectDL
  super_class: com.sun.media.sound.AbstractDataLine
{
  protected final int mixerIndex;
    descriptor: I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final int deviceID;
    descriptor: I
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected long id;
    descriptor: J
    flags: (0x0004) ACC_PROTECTED

  protected int waitTime;
    descriptor: I
    flags: (0x0004) ACC_PROTECTED

  protected volatile boolean flushing;
    descriptor: Z
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE

  protected final boolean isSource;
    descriptor: Z
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected volatile long bytePosition;
    descriptor: J
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE

  protected volatile boolean doIO;
    descriptor: Z
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE

  protected volatile boolean stoppedWritten;
    descriptor: Z
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE

  protected volatile boolean drained;
    descriptor: Z
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE

  protected boolean monitoring;
    descriptor: Z
    flags: (0x0004) ACC_PROTECTED

  protected int softwareConversionSize;
    descriptor: I
    flags: (0x0004) ACC_PROTECTED

  protected javax.sound.sampled.AudioFormat hardwareFormat;
    descriptor: Ljavax/sound/sampled/AudioFormat;
    flags: (0x0004) ACC_PROTECTED

  private final com.sun.media.sound.DirectAudioDevice$DirectDL$Gain gainControl;
    descriptor: Lcom/sun/media/sound/DirectAudioDevice$DirectDL$Gain;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.sun.media.sound.DirectAudioDevice$DirectDL$Mute muteControl;
    descriptor: Lcom/sun/media/sound/DirectAudioDevice$DirectDL$Mute;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.sun.media.sound.DirectAudioDevice$DirectDL$Balance balanceControl;
    descriptor: Lcom/sun/media/sound/DirectAudioDevice$DirectDL$Balance;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.sun.media.sound.DirectAudioDevice$DirectDL$Pan panControl;
    descriptor: Lcom/sun/media/sound/DirectAudioDevice$DirectDL$Pan;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  protected volatile boolean noService;
    descriptor: Z
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE

  protected final java.lang.Object lockNative;
    descriptor: Ljava/lang/Object;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected void <init>(javax.sound.sampled.DataLine$Info, com.sun.media.sound.DirectAudioDevice, javax.sound.sampled.AudioFormat, int, int, int, boolean);
    descriptor: (Ljavax/sound/sampled/DataLine$Info;Lcom/sun/media/sound/DirectAudioDevice;Ljavax/sound/sampled/AudioFormat;IIIZ)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=8, args_size=8
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
        start local 1 // javax.sound.sampled.DataLine$Info info
        start local 2 // com.sun.media.sound.DirectAudioDevice mixer
        start local 3 // javax.sound.sampled.AudioFormat format
        start local 4 // int bufferSize
        start local 5 // int mixerIndex
        start local 6 // int deviceID
        start local 7 // boolean isSource
         0: .line 394
            aload 0 /* this */
            aload 1 /* info */
            aload 2 /* mixer */
            aconst_null
            aload 3 /* format */
            iload 4 /* bufferSize */
            invokespecial com.sun.media.sound.AbstractDataLine.<init>:(Ljavax/sound/sampled/DataLine$Info;Lcom/sun/media/sound/AbstractMixer;[Ljavax/sound/sampled/Control;Ljavax/sound/sampled/AudioFormat;I)V
         1: .line 364
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
         2: .line 367
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
         3: .line 368
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
         4: .line 369
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
         5: .line 370
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
         6: .line 374
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.softwareConversionSize:I
         7: .line 377
            aload 0 /* this */
            new com.sun.media.sound.DirectAudioDevice$DirectDL$Gain
            dup
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL$Gain.<init>:(Lcom/sun/media/sound/DirectAudioDevice$DirectDL;)V
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.gainControl:Lcom/sun/media/sound/DirectAudioDevice$DirectDL$Gain;
         8: .line 378
            aload 0 /* this */
            new com.sun.media.sound.DirectAudioDevice$DirectDL$Mute
            dup
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL$Mute.<init>:(Lcom/sun/media/sound/DirectAudioDevice$DirectDL;)V
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.muteControl:Lcom/sun/media/sound/DirectAudioDevice$DirectDL$Mute;
         9: .line 379
            aload 0 /* this */
            new com.sun.media.sound.DirectAudioDevice$DirectDL$Balance
            dup
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL$Balance.<init>:(Lcom/sun/media/sound/DirectAudioDevice$DirectDL;)V
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.balanceControl:Lcom/sun/media/sound/DirectAudioDevice$DirectDL$Balance;
        10: .line 380
            aload 0 /* this */
            new com.sun.media.sound.DirectAudioDevice$DirectDL$Pan
            dup
            aload 0 /* this */
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL$Pan.<init>:(Lcom/sun/media/sound/DirectAudioDevice$DirectDL;)V
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.panControl:Lcom/sun/media/sound/DirectAudioDevice$DirectDL$Pan;
        11: .line 382
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.noService:Z
        12: .line 385
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
        13: .line 395
            aload 0 /* this */
            iload 5 /* mixerIndex */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.mixerIndex:I
        14: .line 396
            aload 0 /* this */
            iload 6 /* deviceID */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.deviceID:I
        15: .line 397
            aload 0 /* this */
            bipush 10
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
        16: .line 398
            aload 0 /* this */
            iload 7 /* isSource */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
        17: .line 400
            return
        end local 7 // boolean isSource
        end local 6 // int deviceID
        end local 5 // int mixerIndex
        end local 4 // int bufferSize
        end local 3 // javax.sound.sampled.AudioFormat format
        end local 2 // com.sun.media.sound.DirectAudioDevice mixer
        end local 1 // javax.sound.sampled.DataLine$Info info
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   18     0        this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;
            0   18     1        info  Ljavax/sound/sampled/DataLine$Info;
            0   18     2       mixer  Lcom/sun/media/sound/DirectAudioDevice;
            0   18     3      format  Ljavax/sound/sampled/AudioFormat;
            0   18     4  bufferSize  I
            0   18     5  mixerIndex  I
            0   18     6    deviceID  I
            0   18     7    isSource  Z
    MethodParameters:
            Name  Flags
      info        
      mixer       
      format      
      bufferSize  
      mixerIndex  
      deviceID    
      isSource    

  void implOpen(javax.sound.sampled.AudioFormat, int);
    descriptor: (Ljavax/sound/sampled/AudioFormat;I)V
    flags: (0x0000) 
    Code:
      stack=12, locals=6, args_size=3
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
        start local 1 // javax.sound.sampled.AudioFormat format
        start local 2 // int bufferSize
         0: .line 405
            aload 1 /* format */
            invokestatic com.sun.media.sound.Toolkit.isFullySpecifiedAudioFormat:(Ljavax/sound/sampled/AudioFormat;)V
         1: .line 408
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifne 3
         2: .line 409
            invokestatic com.sun.media.sound.JSSecurityManager.checkRecordPermission:()V
         3: .line 411
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* encoding */
        start local 3 // int encoding
         4: .line 412
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getEncoding:()Ljavax/sound/sampled/AudioFormat$Encoding;
            getstatic javax.sound.sampled.AudioFormat$Encoding.ULAW:Ljavax/sound/sampled/AudioFormat$Encoding;
            invokevirtual javax.sound.sampled.AudioFormat$Encoding.equals:(Ljava/lang/Object;)Z
            ifeq 7
         5: .line 413
            iconst_1
            istore 3 /* encoding */
         6: .line 414
            goto 9
         7: .line 415
      StackMap locals: int
      StackMap stack:
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getEncoding:()Ljavax/sound/sampled/AudioFormat$Encoding;
            getstatic javax.sound.sampled.AudioFormat$Encoding.ALAW:Ljavax/sound/sampled/AudioFormat$Encoding;
            invokevirtual javax.sound.sampled.AudioFormat$Encoding.equals:(Ljava/lang/Object;)Z
            ifeq 9
         8: .line 416
            iconst_2
            istore 3 /* encoding */
         9: .line 419
      StackMap locals:
      StackMap stack:
            iload 2 /* bufferSize */
            iconst_m1
            if_icmpgt 11
        10: .line 420
            aload 1 /* format */
            ldc 500
            invokestatic com.sun.media.sound.Toolkit.millis2bytes:(Ljavax/sound/sampled/AudioFormat;J)J
            l2i
            istore 2 /* bufferSize */
        11: .line 423
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* ddli */
        start local 4 // com.sun.media.sound.DirectAudioDevice$DirectDLI ddli
        12: .line 424
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.info:Ljavax/sound/sampled/Line$Info;
            instanceof com.sun.media.sound.DirectAudioDevice$DirectDLI
            ifeq 14
        13: .line 425
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.info:Ljavax/sound/sampled/Line$Info;
            checkcast com.sun.media.sound.DirectAudioDevice$DirectDLI
            astore 4 /* ddli */
        14: .line 429
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDLI
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifeq 31
        15: .line 430
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getEncoding:()Ljavax/sound/sampled/AudioFormat$Encoding;
            getstatic javax.sound.sampled.AudioFormat$Encoding.PCM_SIGNED:Ljavax/sound/sampled/AudioFormat$Encoding;
            invokevirtual javax.sound.sampled.AudioFormat$Encoding.equals:(Ljava/lang/Object;)Z
            ifne 19
        16: .line 431
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getEncoding:()Ljavax/sound/sampled/AudioFormat$Encoding;
            getstatic javax.sound.sampled.AudioFormat$Encoding.PCM_UNSIGNED:Ljavax/sound/sampled/AudioFormat$Encoding;
            invokevirtual javax.sound.sampled.AudioFormat$Encoding.equals:(Ljava/lang/Object;)Z
            ifne 19
        17: .line 433
            aload 0 /* this */
            iconst_0
            anewarray javax.sound.sampled.Control
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.controls:[Ljavax/sound/sampled/Control;
        18: .line 434
            goto 31
        19: .line 435
      StackMap locals:
      StackMap stack:
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
            iconst_2
            if_icmpgt 21
        20: .line 436
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getSampleSizeInBits:()I
            bipush 16
            if_icmple 23
        21: .line 438
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            anewarray javax.sound.sampled.Control
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.controls:[Ljavax/sound/sampled/Control;
        22: .line 439
            goto 31
        23: .line 440
      StackMap locals:
      StackMap stack:
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
            iconst_1
            if_icmpne 26
        24: .line 441
            aload 0 /* this */
            iconst_2
            anewarray javax.sound.sampled.Control
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.controls:[Ljavax/sound/sampled/Control;
        25: .line 442
            goto 29
        26: .line 443
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_4
            anewarray javax.sound.sampled.Control
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.controls:[Ljavax/sound/sampled/Control;
        27: .line 444
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.controls:[Ljavax/sound/sampled/Control;
            iconst_2
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.balanceControl:Lcom/sun/media/sound/DirectAudioDevice$DirectDL$Balance;
            aastore
        28: .line 448
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.controls:[Ljavax/sound/sampled/Control;
            iconst_3
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.panControl:Lcom/sun/media/sound/DirectAudioDevice$DirectDL$Pan;
            aastore
        29: .line 450
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.controls:[Ljavax/sound/sampled/Control;
            iconst_0
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.gainControl:Lcom/sun/media/sound/DirectAudioDevice$DirectDL$Gain;
            aastore
        30: .line 451
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.controls:[Ljavax/sound/sampled/Control;
            iconst_1
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.muteControl:Lcom/sun/media/sound/DirectAudioDevice$DirectDL$Mute;
            aastore
        31: .line 454
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* format */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
        32: .line 457
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.softwareConversionSize:I
        33: .line 458
            aload 4 /* ddli */
            ifnull 38
            aload 4 /* ddli */
            aload 1 /* format */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDLI.isFormatSupportedInHardware:(Ljavax/sound/sampled/AudioFormat;)Z
            ifne 38
        34: .line 459
            aload 1 /* format */
            invokestatic com.sun.media.sound.DirectAudioDevice.getSignOrEndianChangedFormat:(Ljavax/sound/sampled/AudioFormat;)Ljavax/sound/sampled/AudioFormat;
            astore 5 /* newFormat */
        start local 5 // javax.sound.sampled.AudioFormat newFormat
        35: .line 460
            aload 4 /* ddli */
            aload 5 /* newFormat */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDLI.isFormatSupportedInHardware:(Ljavax/sound/sampled/AudioFormat;)Z
            ifeq 38
        36: .line 462
            aload 0 /* this */
            aload 5 /* newFormat */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
        37: .line 464
            aload 0 /* this */
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
            idiv
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.softwareConversionSize:I
        end local 5 // javax.sound.sampled.AudioFormat newFormat
        38: .line 469
      StackMap locals:
      StackMap stack:
            iload 2 /* bufferSize */
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            idiv
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            imul
            istore 2 /* bufferSize */
        39: .line 471
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.mixerIndex:I
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.deviceID:I
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
        40: .line 472
            iload 3 /* encoding */
        41: .line 473
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getSampleRate:()F
        42: .line 474
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getSampleSizeInBits:()I
        43: .line 475
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
        44: .line 476
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
        45: .line 477
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getEncoding:()Ljavax/sound/sampled/AudioFormat$Encoding;
        46: .line 478
            getstatic javax.sound.sampled.AudioFormat$Encoding.PCM_SIGNED:Ljavax/sound/sampled/AudioFormat$Encoding;
        47: .line 477
            invokevirtual javax.sound.sampled.AudioFormat$Encoding.equals:(Ljava/lang/Object;)Z
        48: .line 479
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.isBigEndian:()Z
        49: .line 480
            iload 2 /* bufferSize */
        50: .line 471
            invokestatic com.sun.media.sound.DirectAudioDevice.nOpen:(IIZIFIIIZZI)J
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
        51: .line 482
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifne 55
        52: .line 484
            new javax.sound.sampled.LineUnavailableException
            dup
        53: .line 485
            new java.lang.StringBuilder
            dup
            ldc "line with format "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* format */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " not supported."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        54: .line 484
            invokespecial javax.sound.sampled.LineUnavailableException.<init>:(Ljava/lang/String;)V
            athrow
        55: .line 488
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            invokestatic com.sun.media.sound.DirectAudioDevice.nGetBufferSize:(JZ)I
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.bufferSize:I
        56: .line 489
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.bufferSize:I
            iconst_1
            if_icmpge 58
        57: .line 491
            aload 0 /* this */
            iload 2 /* bufferSize */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.bufferSize:I
        58: .line 493
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* format */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.format:Ljavax/sound/sampled/AudioFormat;
        59: .line 495
            aload 0 /* this */
            aload 1 /* format */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.bufferSize:I
            i2l
            invokestatic com.sun.media.sound.Toolkit.bytes2millis:(Ljavax/sound/sampled/AudioFormat;J)J
            l2i
            iconst_4
            idiv
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
        60: .line 496
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
            bipush 10
            if_icmpge 63
        61: .line 497
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
        62: .line 498
            goto 65
        63: .line 499
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
            sipush 1000
            if_icmple 65
        64: .line 502
            aload 0 /* this */
            sipush 1000
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
        65: .line 504
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.bytePosition:J
        66: .line 505
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
        67: .line 506
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
        68: .line 507
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.calcVolume:()V
        69: .line 508
            return
        end local 4 // com.sun.media.sound.DirectAudioDevice$DirectDLI ddli
        end local 3 // int encoding
        end local 2 // int bufferSize
        end local 1 // javax.sound.sampled.AudioFormat format
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   70     0        this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;
            0   70     1      format  Ljavax/sound/sampled/AudioFormat;
            0   70     2  bufferSize  I
            4   70     3    encoding  I
           12   70     4        ddli  Lcom/sun/media/sound/DirectAudioDevice$DirectDLI;
           35   38     5   newFormat  Ljavax/sound/sampled/AudioFormat;
    Exceptions:
      throws javax.sound.sampled.LineUnavailableException
    MethodParameters:
            Name  Flags
      format      
      bufferSize  

  void implStart();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
         0: .line 513
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifne 2
         1: .line 514
            invokestatic com.sun.media.sound.JSSecurityManager.checkRecordPermission:()V
         2: .line 517
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         3: .line 519
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            invokestatic com.sun.media.sound.DirectAudioDevice.nStart:(JZ)V
         4: .line 517
            aload 1
            monitorexit
         5: goto 8
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL java.lang.Object
      StackMap stack: java.lang.Throwable
         6: aload 1
            monitorexit
         7: athrow
         8: .line 522
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.requiresServicing:()Z
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
         9: .line 523
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
            ifeq 11
        10: .line 524
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getEventDispatcher:()Lcom/sun/media/sound/EventDispatcher;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.EventDispatcher.addLineMonitor:(Lcom/sun/media/sound/EventDispatcher$LineMonitor;)V
        11: .line 527
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
        12: .line 528
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
        13: .line 532
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifeq 16
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
            ifeq 16
        14: .line 533
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setStarted:(Z)V
        15: .line 534
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setActive:(Z)V
        16: .line 527
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
        17: goto 20
      StackMap locals:
      StackMap stack: java.lang.Throwable
        18: aload 1
            monitorexit
        19: athrow
        20: .line 537
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   21     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;
      Exception table:
        from    to  target  type
           3     5       6  any
           6     7       6  any
          12    17      18  any
          18    19      18  any

  void implStop();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
         0: .line 542
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifne 2
         1: .line 543
            invokestatic com.sun.media.sound.JSSecurityManager.checkRecordPermission:()V
         2: .line 546
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
            ifeq 5
         3: .line 547
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getEventDispatcher:()Lcom/sun/media/sound/EventDispatcher;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.EventDispatcher.removeLineMonitor:(Lcom/sun/media/sound/EventDispatcher$LineMonitor;)V
         4: .line 548
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
         5: .line 550
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         6: .line 551
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            invokestatic com.sun.media.sound.DirectAudioDevice.nStop:(JZ)V
         7: .line 550
            aload 1
            monitorexit
         8: goto 11
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL java.lang.Object
      StackMap stack: java.lang.Throwable
         9: aload 1
            monitorexit
        10: athrow
        11: .line 554
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
        12: .line 558
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
        13: .line 559
            aload 0 /* this */
            iconst_0
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setActive:(Z)V
        14: .line 560
            aload 0 /* this */
            iconst_0
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setStarted:(Z)V
        15: .line 561
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
        16: .line 554
            aload 1
            monitorexit
        17: goto 20
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL java.lang.Object
      StackMap stack: java.lang.Throwable
        18: aload 1
            monitorexit
        19: athrow
        20: .line 563
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
        21: .line 564
            return
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   22     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;
      Exception table:
        from    to  target  type
           6     8       9  any
           9    10       9  any
          12    17      18  any
          18    19      18  any

  void implClose();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
         0: .line 569
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifne 2
         1: .line 570
            invokestatic com.sun.media.sound.JSSecurityManager.checkRecordPermission:()V
         2: .line 574
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
            ifeq 5
         3: .line 575
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getEventDispatcher:()Lcom/sun/media/sound/EventDispatcher;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.EventDispatcher.removeLineMonitor:(Lcom/sun/media/sound/EventDispatcher$LineMonitor;)V
         4: .line 576
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
         5: .line 579
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
         6: .line 580
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lstore 1 /* oldID */
        start local 1 // long oldID
         7: .line 581
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
         8: .line 582
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         9: .line 583
            lload 1 /* oldID */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            invokestatic com.sun.media.sound.DirectAudioDevice.nClose:(JZ)V
        10: .line 582
            aload 3
            monitorexit
        11: goto 14
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL long java.lang.Object
      StackMap stack: java.lang.Throwable
        12: aload 3
            monitorexit
        13: athrow
        14: .line 585
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.bytePosition:J
        15: .line 586
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.softwareConversionSize:I
        16: .line 587
            return
        end local 1 // long oldID
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   17     0   this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;
            7   17     1  oldID  J
      Exception table:
        from    to  target  type
           9    11      12  any
          12    13      12  any

  public int available();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
         0: .line 591
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifne 2
         1: .line 592
            iconst_0
            ireturn
         2: .line 595
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 596
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            invokestatic com.sun.media.sound.DirectAudioDevice.nAvailable:(JZ)I
            istore 1 /* a */
        start local 1 // int a
         4: .line 595
            aload 2
            monitorexit
         5: goto 8
        end local 1 // int a
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL top java.lang.Object
      StackMap stack: java.lang.Throwable
         6: aload 2
            monitorexit
         7: athrow
        start local 1 // int a
         8: .line 598
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL int
      StackMap stack:
            iload 1 /* a */
            ireturn
        end local 1 // int a
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;
            4    6     1     a  I
            8    9     1     a  I
      Exception table:
        from    to  target  type
           3     5       6  any
           6     7       6  any

  public void drain();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
         0: .line 603
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.noService:Z
         1: .line 607
            iconst_0
            istore 1 /* counter */
        start local 1 // int counter
         2: .line 608
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getLongFramePosition:()J
            lstore 2 /* startPos */
        start local 2 // long startPos
         3: .line 609
            iconst_0
            istore 4 /* posChanged */
        start local 4 // boolean posChanged
         4: .line 610
            goto 33
         5: .line 611
      StackMap locals: int long int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
         6: .line 612
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifeq 7
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
            ifeq 7
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            invokestatic com.sun.media.sound.DirectAudioDevice.nIsStillDraining:(JZ)Z
            ifne 9
         7: .line 613
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 5
            monitorexit
         8: goto 34
         9: .line 611
      StackMap locals:
      StackMap stack:
            aload 5
            monitorexit
        10: goto 13
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: aload 5
            monitorexit
        12: athrow
        13: .line 616
      StackMap locals:
      StackMap stack:
            iload 1 /* counter */
            iconst_5
            irem
            iconst_4
            if_icmpne 24
        14: .line 617
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getLongFramePosition:()J
            lstore 5 /* thisFramePos */
        start local 5 // long thisFramePos
        15: .line 618
            iload 4 /* posChanged */
            lload 5 /* thisFramePos */
            lload 2 /* startPos */
            lcmp
            ifeq 16
            iconst_1
            goto 17
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL int long int long
      StackMap stack: int
        16: iconst_0
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL int long int long
      StackMap stack: int int
        17: ior
            istore 4 /* posChanged */
        18: .line 619
            iload 1 /* counter */
            bipush 50
            irem
            bipush 45
            if_icmple 24
        19: .line 622
            iload 4 /* posChanged */
            ifne 22
        20: .line 623
            getstatic com.sun.media.sound.Printer.err:Z
            ifeq 34
            ldc "Native reports isDraining, but frame position does not increase!"
            invokestatic com.sun.media.sound.Printer.err:(Ljava/lang/String;)V
        21: .line 624
            goto 34
        22: .line 626
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* posChanged */
        23: .line 627
            lload 5 /* thisFramePos */
            lstore 2 /* startPos */
        end local 5 // long thisFramePos
        24: .line 630
      StackMap locals:
      StackMap stack:
            iinc 1 /* counter */ 1
        25: .line 631
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
        26: .line 633
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            ldc 10
            invokevirtual java.lang.Object.wait:(J)V
        27: .line 634
            goto 29
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL int long int java.lang.Object
      StackMap stack: java.lang.InterruptedException
        28: pop
        29: .line 631
      StackMap locals:
      StackMap stack:
            aload 5
            monitorexit
        30: goto 33
      StackMap locals:
      StackMap stack: java.lang.Throwable
        31: aload 5
            monitorexit
        32: athrow
        33: .line 610
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
            ifeq 5
        34: .line 638
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
            ifeq 36
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifeq 36
        35: .line 639
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
        36: .line 641
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.noService:Z
        37: .line 642
            return
        end local 4 // boolean posChanged
        end local 2 // long startPos
        end local 1 // int counter
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   38     0          this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;
            2   38     1       counter  I
            3   38     2      startPos  J
            4   38     4    posChanged  Z
           15   24     5  thisFramePos  J
      Exception table:
        from    to  target  type
           6     8      11  any
           9    10      11  any
          11    12      11  any
          26    27      28  Class java.lang.InterruptedException
          26    30      31  any
          31    32      31  any

  public void flush();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
         0: .line 646
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifeq 16
         1: .line 648
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
         2: .line 649
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         3: .line 650
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
         4: .line 649
            aload 1
            monitorexit
         5: goto 8
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL java.lang.Object
      StackMap stack: java.lang.Throwable
         6: aload 1
            monitorexit
         7: athrow
         8: .line 652
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         9: .line 653
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifeq 11
        10: .line 655
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            invokestatic com.sun.media.sound.DirectAudioDevice.nFlush:(JZ)V
        11: .line 652
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
        12: goto 15
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: aload 1
            monitorexit
        14: athrow
        15: .line 658
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
        16: .line 660
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;
      Exception table:
        from    to  target  type
           3     5       6  any
           6     7       6  any
           9    12      13  any
          13    14      13  any

  public long getLongFramePosition();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
         0: .line 666
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         1: .line 667
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.bytePosition:J
            invokestatic com.sun.media.sound.DirectAudioDevice.nGetBytePosition:(JZJ)J
            lstore 1 /* pos */
        start local 1 // long pos
         2: .line 666
            aload 3
            monitorexit
         3: goto 6
        end local 1 // long pos
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL top top java.lang.Object
      StackMap stack: java.lang.Throwable
         4: aload 3
            monitorexit
         5: athrow
        start local 1 // long pos
         6: .line 670
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL long
      StackMap stack:
            lload 1 /* pos */
            lconst_0
            lcmp
            ifge 8
         7: .line 671
            lconst_0
            lstore 1 /* pos */
         8: .line 673
      StackMap locals:
      StackMap stack:
            lload 1 /* pos */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            i2l
            ldiv
            lreturn
        end local 1 // long pos
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;
            2    4     1   pos  J
            6    9     1   pos  J
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any

  public int write(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=7, args_size=4
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
        start local 1 // byte[] b
        start local 2 // int off
        start local 3 // int len
         0: .line 682
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
         1: .line 683
            iload 3 /* len */
            ifne 3
         2: .line 684
            iconst_0
            ireturn
         3: .line 686
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            ifge 5
         4: .line 687
            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 689
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            irem
            ifeq 10
         6: .line 690
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "illegal request to write non-integral number of frames ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         7: .line 692
            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 693
            ldc "frameSize = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.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 690
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 695
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            ifge 12
        11: .line 696
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            iload 2 /* off */
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        12: .line 698
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            i2l
            iload 3 /* len */
            i2l
            ladd
            aload 1 /* b */
            arraylength
            i2l
            lcmp
            ifle 14
        13: .line 699
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            aload 1 /* b */
            arraylength
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        14: .line 701
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        15: .line 702
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.isActive:()Z
            ifne 18
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
            ifeq 18
        16: .line 706
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setActive:(Z)V
        17: .line 707
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setStarted:(Z)V
        18: .line 701
      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 710
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* written */
        start local 4 // int written
        23: .line 711
            goto 51
        24: .line 713
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        25: .line 714
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
        26: .line 715
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.softwareConversionSize:I
        27: .line 716
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.leftGain:F
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
        28: .line 714
            invokestatic com.sun.media.sound.DirectAudioDevice.nWrite:(J[BIIIFF)I
            istore 5 /* thisWritten */
        start local 5 // int thisWritten
        29: .line 717
            iload 5 /* thisWritten */
            ifge 32
        30: .line 719
            aload 6
            monitorexit
        31: goto 52
        32: .line 721
      StackMap locals: int java.lang.Object
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.bytePosition:J
            iload 5 /* thisWritten */
            i2l
            ladd
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.bytePosition:J
        33: .line 722
            iload 5 /* thisWritten */
            ifle 35
        34: .line 723
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
        35: .line 713
      StackMap locals:
      StackMap stack:
            aload 6
            monitorexit
        36: goto 39
        end local 5 // int thisWritten
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL byte[] int int int top java.lang.Object
      StackMap stack: java.lang.Throwable
        37: aload 6
            monitorexit
        38: athrow
        start local 5 // int thisWritten
        39: .line 726
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL byte[] int int int int
      StackMap stack:
            iload 3 /* len */
            iload 5 /* thisWritten */
            isub
            istore 3 /* len */
        40: .line 727
            iload 4 /* written */
            iload 5 /* thisWritten */
            iadd
            istore 4 /* written */
        41: .line 728
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
            ifeq 52
            iload 3 /* len */
            ifle 52
        42: .line 729
            iload 2 /* off */
            iload 5 /* thisWritten */
            iadd
            istore 2 /* off */
        43: .line 730
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        44: .line 732
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
            i2l
            invokevirtual java.lang.Object.wait:(J)V
        45: .line 733
            goto 47
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL byte[] int int int int java.lang.Object
      StackMap stack: java.lang.InterruptedException
        46: pop
        47: .line 730
      StackMap locals:
      StackMap stack:
            aload 6
            monitorexit
        48: goto 51
      StackMap locals:
      StackMap stack: java.lang.Throwable
        49: aload 6
            monitorexit
        50: athrow
        end local 5 // int thisWritten
        51: .line 711
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
            ifeq 24
        52: .line 739
      StackMap locals:
      StackMap stack:
            iload 4 /* written */
            ifle 54
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
            ifne 54
        53: .line 740
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
        54: .line 742
      StackMap locals:
      StackMap stack:
            iload 4 /* written */
            ireturn
        end local 4 // int written
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] b
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   55     0         this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;
            0   55     1            b  [B
            0   55     2          off  I
            0   55     3          len  I
           23   55     4      written  I
           29   37     5  thisWritten  I
           39   51     5  thisWritten  I
      Exception table:
        from    to  target  type
          15    19      20  any
          20    21      20  any
          25    31      37  any
          32    36      37  any
          37    38      37  any
          44    45      46  Class java.lang.InterruptedException
          44    48      49  any
          49    50      49  any
    MethodParameters:
      Name  Flags
      b     
      off   
      len   

  protected boolean requiresServicing();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
         0: .line 746
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            invokestatic com.sun.media.sound.DirectAudioDevice.nRequiresServicing:(JZ)Z
            ireturn
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;

  public void checkLine();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
         0: .line 752
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 753
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
            ifeq 7
         2: .line 754
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
            ifeq 7
         3: .line 755
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifeq 7
         4: .line 756
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
            ifne 7
         5: .line 757
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.noService:Z
            ifne 7
         6: .line 758
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            invokestatic com.sun.media.sound.DirectAudioDevice.nService:(JZ)V
         7: .line 752
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 1
            monitorexit
        10: athrow
        11: .line 761
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any

  private void calcVolume();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
         0: .line 764
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getFormat:()Ljavax/sound/sampled/AudioFormat;
            ifnonnull 2
         1: .line 765
            return
         2: .line 767
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.muteControl:Lcom/sun/media/sound/DirectAudioDevice$DirectDL$Mute;
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL$Mute.getValue:()Z
            ifeq 6
         3: .line 768
            aload 0 /* this */
            fconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.leftGain:F
         4: .line 769
            aload 0 /* this */
            fconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
         5: .line 770
            return
         6: .line 772
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.gainControl:Lcom/sun/media/sound/DirectAudioDevice$DirectDL$Gain;
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL$Gain.getLinearGain:()F
            fstore 1 /* gain */
        start local 1 // float gain
         7: .line 773
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
            iconst_1
            if_icmpne 11
         8: .line 775
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.leftGain:F
         9: .line 776
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
        10: .line 777
            goto 18
        11: .line 779
      StackMap locals: float
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.balanceControl:Lcom/sun/media/sound/DirectAudioDevice$DirectDL$Balance;
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL$Balance.getValue:()F
            fstore 2 /* bal */
        start local 2 // float bal
        12: .line 780
            fload 2 /* bal */
            fconst_0
            fcmpg
            ifge 16
        13: .line 782
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.leftGain:F
        14: .line 783
            aload 0 /* this */
            fload 1 /* gain */
            fload 2 /* bal */
            fconst_1
            fadd
            fmul
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
        15: .line 784
            goto 18
        16: .line 785
      StackMap locals: float
      StackMap stack:
            aload 0 /* this */
            fload 1 /* gain */
            fconst_1
            fload 2 /* bal */
            fsub
            fmul
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.leftGain:F
        17: .line 786
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
        end local 2 // float bal
        18: .line 789
      StackMap locals:
      StackMap stack:
            return
        end local 1 // float gain
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   19     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;
            7   19     1  gain  F
           12   18     2   bal  F
}
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 Balance = com.sun.media.sound.DirectAudioDevice$DirectDL$Balance of com.sun.media.sound.DirectAudioDevice$DirectDL
  protected final Gain = com.sun.media.sound.DirectAudioDevice$DirectDL$Gain of com.sun.media.sound.DirectAudioDevice$DirectDL
  private final Mute = com.sun.media.sound.DirectAudioDevice$DirectDL$Mute of com.sun.media.sound.DirectAudioDevice$DirectDL
  private final Pan = com.sun.media.sound.DirectAudioDevice$DirectDL$Pan of com.sun.media.sound.DirectAudioDevice$DirectDL
  private final DirectDLI = com.sun.media.sound.DirectAudioDevice$DirectDLI of com.sun.media.sound.DirectAudioDevice
  abstract LineMonitor = com.sun.media.sound.EventDispatcher$LineMonitor of com.sun.media.sound.EventDispatcher
  public Encoding = javax.sound.sampled.AudioFormat$Encoding of javax.sound.sampled.AudioFormat
  public Info = javax.sound.sampled.DataLine$Info of javax.sound.sampled.DataLine