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 402
            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 372
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
         2: .line 375
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
         3: .line 376
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
         4: .line 377
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
         5: .line 378
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
         6: .line 382
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.softwareConversionSize:I
         7: .line 385
            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 386
            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 387
            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 388
            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 390
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.noService:Z
        12: .line 393
            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 404
            aload 0 /* this */
            iload 5 /* mixerIndex */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.mixerIndex:I
        14: .line 405
            aload 0 /* this */
            iload 6 /* deviceID */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.deviceID:I
        15: .line 406
            aload 0 /* this */
            bipush 10
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
        16: .line 407
            aload 0 /* this */
            iload 7 /* isSource */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
        17: .line 409
            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 416
            aload 1 /* format */
            invokestatic com.sun.media.sound.Toolkit.isFullySpecifiedAudioFormat:(Ljavax/sound/sampled/AudioFormat;)V
         1: .line 419
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifne 3
         2: .line 420
            invokestatic com.sun.media.sound.JSSecurityManager.checkRecordPermission:()V
         3: .line 422
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* encoding */
        start local 3 // int encoding
         4: .line 423
            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 424
            iconst_1
            istore 3 /* encoding */
         6: .line 425
            goto 9
         7: .line 426
      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 427
            iconst_2
            istore 3 /* encoding */
         9: .line 430
      StackMap locals:
      StackMap stack:
            iload 2 /* bufferSize */
            iconst_m1
            if_icmpgt 11
        10: .line 431
            aload 1 /* format */
            ldc 500
            invokestatic com.sun.media.sound.Toolkit.millis2bytes:(Ljavax/sound/sampled/AudioFormat;J)J
            l2i
            istore 2 /* bufferSize */
        11: .line 434
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* ddli */
        start local 4 // com.sun.media.sound.DirectAudioDevice$DirectDLI ddli
        12: .line 435
            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 436
            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 440
      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 441
            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 442
            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 444
            aload 0 /* this */
            iconst_0
            anewarray javax.sound.sampled.Control
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.controls:[Ljavax/sound/sampled/Control;
        18: .line 445
            goto 31
        19: .line 446
      StackMap locals:
      StackMap stack:
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
            iconst_2
            if_icmpgt 21
        20: .line 447
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getSampleSizeInBits:()I
            bipush 16
            if_icmple 23
        21: .line 449
      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 450
            goto 31
        23: .line 451
      StackMap locals:
      StackMap stack:
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
            iconst_1
            if_icmpne 26
        24: .line 452
            aload 0 /* this */
            iconst_2
            anewarray javax.sound.sampled.Control
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.controls:[Ljavax/sound/sampled/Control;
        25: .line 453
            goto 29
        26: .line 454
      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 455
            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 459
            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 461
      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 462
            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 467
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* format */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
        32: .line 470
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.softwareConversionSize:I
        33: .line 471
            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 472
            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 473
            aload 4 /* ddli */
            aload 5 /* newFormat */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDLI.isFormatSupportedInHardware:(Ljavax/sound/sampled/AudioFormat;)Z
            ifeq 38
        36: .line 475
            aload 0 /* this */
            aload 5 /* newFormat */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
        37: .line 477
            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 488
      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 490
            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 491
            iload 3 /* encoding */
        41: .line 492
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getSampleRate:()F
        42: .line 493
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getSampleSizeInBits:()I
        43: .line 494
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
        44: .line 495
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
        45: .line 496
            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 497
            getstatic javax.sound.sampled.AudioFormat$Encoding.PCM_SIGNED:Ljavax/sound/sampled/AudioFormat$Encoding;
        47: .line 496
            invokevirtual javax.sound.sampled.AudioFormat$Encoding.equals:(Ljava/lang/Object;)Z
        48: .line 498
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.isBigEndian:()Z
        49: .line 499
            iload 2 /* bufferSize */
        50: .line 490
            invokestatic com.sun.media.sound.DirectAudioDevice.nOpen:(IIZIFIIIZZI)J
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
        51: .line 501
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifne 55
        52: .line 503
            new javax.sound.sampled.LineUnavailableException
            dup
        53: .line 504
            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 503
            invokespecial javax.sound.sampled.LineUnavailableException.<init>:(Ljava/lang/String;)V
            athrow
        55: .line 507
      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 508
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.bufferSize:I
            iconst_1
            if_icmpge 58
        57: .line 510
            aload 0 /* this */
            iload 2 /* bufferSize */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.bufferSize:I
        58: .line 512
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* format */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.format:Ljavax/sound/sampled/AudioFormat;
        59: .line 514
            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 515
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
            bipush 10
            if_icmpge 63
        61: .line 516
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
        62: .line 517
            goto 65
        63: .line 518
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
            sipush 1000
            if_icmple 65
        64: .line 521
            aload 0 /* this */
            sipush 1000
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
        65: .line 523
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.bytePosition:J
        66: .line 524
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
        67: .line 525
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
        68: .line 526
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.calcVolume:()V
        69: .line 529
            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 536
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifne 2
         1: .line 537
            invokestatic com.sun.media.sound.JSSecurityManager.checkRecordPermission:()V
         2: .line 540
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         3: .line 542
            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 540
            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 545
      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 546
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
            ifeq 11
        10: .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.addLineMonitor:(Lcom/sun/media/sound/EventDispatcher$LineMonitor;)V
        11: .line 550
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
        12: .line 551
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
        13: .line 555
            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 556
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setStarted:(Z)V
        15: .line 557
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setActive:(Z)V
        16: .line 550
      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 562
      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 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 573
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
            ifeq 5
         3: .line 574
            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 575
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
         5: .line 577
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         6: .line 578
            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 577
            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 581
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
        12: .line 585
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
        13: .line 586
            aload 0 /* this */
            iconst_0
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setActive:(Z)V
        14: .line 587
            aload 0 /* this */
            iconst_0
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setStarted:(Z)V
        15: .line 588
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
        16: .line 581
            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 590
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
        21: .line 593
            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 600
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifne 2
         1: .line 601
            invokestatic com.sun.media.sound.JSSecurityManager.checkRecordPermission:()V
         2: .line 605
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
            ifeq 5
         3: .line 606
            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 607
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
         5: .line 610
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
         6: .line 611
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lstore 1 /* oldID */
        start local 1 // long oldID
         7: .line 612
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
         8: .line 613
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         9: .line 614
            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 613
            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 616
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.bytePosition:J
        15: .line 617
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.softwareConversionSize:I
        16: .line 619
            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 623
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifne 2
         1: .line 624
            iconst_0
            ireturn
         2: .line 627
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 628
            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 627
            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 630
      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 635
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.noService:Z
         1: .line 639
            iconst_0
            istore 1 /* counter */
        start local 1 // int counter
         2: .line 640
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getLongFramePosition:()J
            lstore 2 /* startPos */
        start local 2 // long startPos
         3: .line 641
            iconst_0
            istore 4 /* posChanged */
        start local 4 // boolean posChanged
         4: .line 642
            goto 32
         5: .line 643
      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 644
            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 645
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 5
            monitorexit
         8: goto 33
         9: .line 643
      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 648
      StackMap locals:
      StackMap stack:
            iload 1 /* counter */
            iconst_5
            irem
            iconst_4
            if_icmpne 23
        14: .line 649
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getLongFramePosition:()J
            lstore 5 /* thisFramePos */
        start local 5 // long thisFramePos
        15: .line 650
            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 651
            iload 1 /* counter */
            bipush 50
            irem
            bipush 45
            if_icmple 23
        19: .line 654
            iload 4 /* posChanged */
            ifne 21
        20: .line 656
            goto 33
        21: .line 658
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* posChanged */
        22: .line 659
            lload 5 /* thisFramePos */
            lstore 2 /* startPos */
        end local 5 // long thisFramePos
        23: .line 662
      StackMap locals:
      StackMap stack:
            iinc 1 /* counter */ 1
        24: .line 663
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
        25: .line 665
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            ldc 10
            invokevirtual java.lang.Object.wait:(J)V
        26: .line 666
            goto 28
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL int long int java.lang.Object
      StackMap stack: java.lang.InterruptedException
        27: pop
        28: .line 663
      StackMap locals:
      StackMap stack:
            aload 5
            monitorexit
        29: goto 32
      StackMap locals:
      StackMap stack: java.lang.Throwable
        30: aload 5
            monitorexit
        31: athrow
        32: .line 642
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
            ifeq 5
        33: .line 670
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
            ifeq 35
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifeq 35
        34: .line 671
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
        35: .line 673
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.noService:Z
        36: .line 674
            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   37     0          this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;
            2   37     1       counter  I
            3   37     2      startPos  J
            4   37     4    posChanged  Z
           15   23     5  thisFramePos  J
      Exception table:
        from    to  target  type
           6     8      11  any
           9    10      11  any
          11    12      11  any
          25    26      27  Class java.lang.InterruptedException
          25    29      30  any
          30    31      30  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 678
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifeq 16
         1: .line 680
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
         2: .line 681
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         3: .line 682
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
         4: .line 681
            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 684
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         9: .line 685
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifeq 11
        10: .line 687
            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 684
      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 690
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
        16: .line 692
      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 698
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         1: .line 699
            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 698
            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 702
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL long
      StackMap stack:
            lload 1 /* pos */
            lconst_0
            lcmp
            ifge 8
         7: .line 705
            lconst_0
            lstore 1 /* pos */
         8: .line 707
      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 716
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
         1: .line 717
            iload 3 /* len */
            ifne 3
         2: .line 718
            iconst_0
            ireturn
         3: .line 720
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            ifge 5
         4: .line 721
            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 723
      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 724
            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 726
            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 727
            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 724
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 729
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            ifge 12
        11: .line 730
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            iload 2 /* off */
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        12: .line 732
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            i2l
            iload 3 /* len */
            i2l
            ladd
            aload 1 /* b */
            arraylength
            i2l
            lcmp
            ifle 14
        13: .line 733
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            aload 1 /* b */
            arraylength
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        14: .line 735
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        15: .line 736
            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 740
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setActive:(Z)V
        17: .line 741
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setStarted:(Z)V
        18: .line 735
      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 744
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* written */
        start local 4 // int written
        23: .line 745
            goto 51
        24: .line 747
      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 748
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
        26: .line 749
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.softwareConversionSize:I
        27: .line 750
            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 748
            invokestatic com.sun.media.sound.DirectAudioDevice.nWrite:(J[BIIIFF)I
            istore 5 /* thisWritten */
        start local 5 // int thisWritten
        29: .line 751
            iload 5 /* thisWritten */
            ifge 32
        30: .line 753
            aload 6
            monitorexit
        31: goto 52
        32: .line 755
      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 756
            iload 5 /* thisWritten */
            ifle 35
        34: .line 757
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
        35: .line 747
      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 760
      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 761
            iload 4 /* written */
            iload 5 /* thisWritten */
            iadd
            istore 4 /* written */
        41: .line 762
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
            ifeq 52
            iload 3 /* len */
            ifle 52
        42: .line 763
            iload 2 /* off */
            iload 5 /* thisWritten */
            iadd
            istore 2 /* off */
        43: .line 764
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        44: .line 766
            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 767
            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 764
      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 745
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
            ifeq 24
        52: .line 773
      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 774
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
        54: .line 776
      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 780
            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 786
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 787
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
            ifeq 7
         2: .line 788
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
            ifeq 7
         3: .line 789
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifeq 7
         4: .line 790
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
            ifne 7
         5: .line 791
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.noService:Z
            ifne 7
         6: .line 792
            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 786
      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 795
      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 798
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getFormat:()Ljavax/sound/sampled/AudioFormat;
            ifnonnull 2
         1: .line 799
            return
         2: .line 801
      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 802
            aload 0 /* this */
            fconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.leftGain:F
         4: .line 803
            aload 0 /* this */
            fconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
         5: .line 804
            return
         6: .line 806
      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 807
            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 809
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.leftGain:F
         9: .line 810
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
        10: .line 811
            goto 18
        11: .line 813
      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 814
            fload 2 /* bal */
            fconst_0
            fcmpg
            ifge 16
        13: .line 816
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.leftGain:F
        14: .line 817
            aload 0 /* this */
            fload 1 /* gain */
            fload 2 /* bal */
            fconst_1
            fadd
            fmul
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
        15: .line 818
            goto 18
        16: .line 819
      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 820
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
        end local 2 // float bal
        18: .line 823
      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