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 */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
        12: .line 555
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifeq 15
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
            ifeq 15
        13: .line 556
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setStarted:(Z)V
        14: .line 557
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setActive:(Z)V
        15: .line 561
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectDL this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0  this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;
      Exception table:
        from    to  target  type
           3     5       6  any
           6     7       6  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 568
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifne 2
         1: .line 569
            invokestatic com.sun.media.sound.JSSecurityManager.checkRecordPermission:()V
         2: .line 572
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
            ifeq 5
         3: .line 573
            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 574
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
         5: .line 576
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         6: .line 577
            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 576
            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 580
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
        12: .line 584
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
        13: .line 585
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
        14: .line 580
            aload 1
            monitorexit
        15: goto 18
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL java.lang.Object
      StackMap stack: java.lang.Throwable
        16: aload 1
            monitorexit
        17: athrow
        18: .line 587
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setActive:(Z)V
        19: .line 588
            aload 0 /* this */
            iconst_0
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setStarted:(Z)V
        20: .line 589
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
        21: .line 592
            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    15      16  any
          16    17      16  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 599
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifne 2
         1: .line 600
            invokestatic com.sun.media.sound.JSSecurityManager.checkRecordPermission:()V
         2: .line 604
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
            ifeq 5
         3: .line 605
            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 606
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
         5: .line 609
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
         6: .line 610
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lstore 1 /* oldID */
        start local 1 // long oldID
         7: .line 611
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
         8: .line 612
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         9: .line 613
            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 612
            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 615
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.bytePosition:J
        15: .line 616
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.softwareConversionSize:I
        16: .line 618
            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 622
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifne 2
         1: .line 623
            iconst_0
            ireturn
         2: .line 626
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 627
            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 626
            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 629
      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 634
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.noService:Z
         1: .line 638
            iconst_0
            istore 1 /* counter */
        start local 1 // int counter
         2: .line 639
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getLongFramePosition:()J
            lstore 2 /* startPos */
        start local 2 // long startPos
         3: .line 640
            iconst_0
            istore 4 /* posChanged */
        start local 4 // boolean posChanged
         4: .line 641
            goto 32
         5: .line 642
      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 643
            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 644
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 5
            monitorexit
         8: goto 33
         9: .line 642
      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 647
      StackMap locals:
      StackMap stack:
            iload 1 /* counter */
            iconst_5
            irem
            iconst_4
            if_icmpne 23
        14: .line 648
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getLongFramePosition:()J
            lstore 5 /* thisFramePos */
        start local 5 // long thisFramePos
        15: .line 649
            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 650
            iload 1 /* counter */
            bipush 50
            irem
            bipush 45
            if_icmple 23
        19: .line 653
            iload 4 /* posChanged */
            ifne 21
        20: .line 655
            goto 33
        21: .line 657
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* posChanged */
        22: .line 658
            lload 5 /* thisFramePos */
            lstore 2 /* startPos */
        end local 5 // long thisFramePos
        23: .line 661
      StackMap locals:
      StackMap stack:
            iinc 1 /* counter */ 1
        24: .line 662
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
        25: .line 664
            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 665
            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 662
      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 641
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
            ifeq 5
        33: .line 669
      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 670
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
        35: .line 672
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.noService:Z
        36: .line 673
            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 677
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifeq 16
         1: .line 679
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
         2: .line 680
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         3: .line 681
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
         4: .line 680
            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 683
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         9: .line 684
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifeq 11
        10: .line 686
            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 683
      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 689
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
        16: .line 691
      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 697
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         1: .line 698
            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 697
            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 701
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL long
      StackMap stack:
            lload 1 /* pos */
            lconst_0
            lcmp
            ifge 8
         7: .line 704
            lconst_0
            lstore 1 /* pos */
         8: .line 706
      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 715
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
         1: .line 716
            iload 3 /* len */
            ifne 3
         2: .line 717
            iconst_0
            ireturn
         3: .line 719
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            ifge 5
         4: .line 720
            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 722
      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 723
            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 725
            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 726
            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 723
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 728
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            ifge 12
        11: .line 729
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            iload 2 /* off */
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        12: .line 731
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            i2l
            iload 3 /* len */
            i2l
            ladd
            aload 1 /* b */
            arraylength
            i2l
            lcmp
            ifle 14
        13: .line 732
            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 */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.isActive:()Z
            ifne 17
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
            ifeq 17
        15: .line 738
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setActive:(Z)V
        16: .line 739
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setStarted:(Z)V
        17: .line 741
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* written */
        start local 4 // int written
        18: .line 742
            goto 46
        19: .line 744
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        20: .line 745
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
        21: .line 746
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.softwareConversionSize:I
        22: .line 747
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.leftGain:F
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
        23: .line 745
            invokestatic com.sun.media.sound.DirectAudioDevice.nWrite:(J[BIIIFF)I
            istore 5 /* thisWritten */
        start local 5 // int thisWritten
        24: .line 748
            iload 5 /* thisWritten */
            ifge 27
        25: .line 750
            aload 6
            monitorexit
        26: goto 47
        27: .line 752
      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
        28: .line 753
            iload 5 /* thisWritten */
            ifle 30
        29: .line 754
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
        30: .line 744
      StackMap locals:
      StackMap stack:
            aload 6
            monitorexit
        31: goto 34
        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
        32: aload 6
            monitorexit
        33: athrow
        start local 5 // int thisWritten
        34: .line 757
      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 */
        35: .line 758
            iload 4 /* written */
            iload 5 /* thisWritten */
            iadd
            istore 4 /* written */
        36: .line 759
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
            ifeq 47
            iload 3 /* len */
            ifle 47
        37: .line 760
            iload 2 /* off */
            iload 5 /* thisWritten */
            iadd
            istore 2 /* off */
        38: .line 761
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        39: .line 763
            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
        40: .line 764
            goto 42
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL byte[] int int int int java.lang.Object
      StackMap stack: java.lang.InterruptedException
        41: pop
        42: .line 761
      StackMap locals:
      StackMap stack:
            aload 6
            monitorexit
        43: goto 46
      StackMap locals:
      StackMap stack: java.lang.Throwable
        44: aload 6
            monitorexit
        45: athrow
        end local 5 // int thisWritten
        46: .line 742
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
            ifeq 19
        47: .line 770
      StackMap locals:
      StackMap stack:
            iload 4 /* written */
            ifle 49
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
            ifne 49
        48: .line 771
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
        49: .line 773
      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   50     0         this  Lcom/sun/media/sound/DirectAudioDevice$DirectDL;
            0   50     1            b  [B
            0   50     2          off  I
            0   50     3          len  I
           18   50     4      written  I
           24   32     5  thisWritten  I
           34   46     5  thisWritten  I
      Exception table:
        from    to  target  type
          20    26      32  any
          27    31      32  any
          32    33      32  any
          39    40      41  Class java.lang.InterruptedException
          39    43      44  any
          44    45      44  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 777
            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 783
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 784
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
            ifeq 7
         2: .line 785
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
            ifeq 7
         3: .line 786
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifeq 7
         4: .line 787
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
            ifne 7
         5: .line 788
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.noService:Z
            ifne 7
         6: .line 789
            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 783
      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 792
      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 795
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getFormat:()Ljavax/sound/sampled/AudioFormat;
            ifnonnull 2
         1: .line 796
            return
         2: .line 798
      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 799
            aload 0 /* this */
            fconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.leftGain:F
         4: .line 800
            aload 0 /* this */
            fconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
         5: .line 801
            return
         6: .line 803
      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 804
            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 806
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.leftGain:F
         9: .line 807
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
        10: .line 808
            goto 18
        11: .line 810
      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 811
            fload 2 /* bal */
            fconst_0
            fcmpg
            ifge 16
        13: .line 813
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.leftGain:F
        14: .line 814
            aload 0 /* this */
            fload 1 /* gain */
            fload 2 /* bal */
            fconst_1
            fadd
            fmul
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
        15: .line 815
            goto 18
        16: .line 816
      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 817
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
        end local 2 // float bal
        18: .line 820
      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