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 408
            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 377
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
         2: .line 380
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
         3: .line 381
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
         4: .line 382
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
         5: .line 383
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
         6: .line 387
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.softwareConversionSize:I
         7: .line 390
            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 391
            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 392
            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 393
            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 395
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.noService:Z
        12: .line 398
            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 410
            aload 0 /* this */
            iload 5 /* mixerIndex */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.mixerIndex:I
        14: .line 411
            aload 0 /* this */
            iload 6 /* deviceID */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.deviceID:I
        15: .line 412
            aload 0 /* this */
            bipush 10
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
        16: .line 413
            aload 0 /* this */
            iload 7 /* isSource */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
        17: .line 415
            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 426
            aload 1 /* format */
            invokestatic com.sun.media.sound.Toolkit.isFullySpecifiedAudioFormat:(Ljavax/sound/sampled/AudioFormat;)V
         1: .line 429
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifne 3
         2: .line 430
            invokestatic com.sun.media.sound.JSSecurityManager.checkRecordPermission:()V
         3: .line 432
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* encoding */
        start local 3 // int encoding
         4: .line 433
            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 434
            iconst_1
            istore 3 /* encoding */
         6: .line 435
            goto 9
         7: .line 436
      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 437
            iconst_2
            istore 3 /* encoding */
         9: .line 440
      StackMap locals:
      StackMap stack:
            iload 2 /* bufferSize */
            iconst_m1
            if_icmpgt 11
        10: .line 441
            aload 1 /* format */
            ldc 500
            invokestatic com.sun.media.sound.Toolkit.millis2bytes:(Ljavax/sound/sampled/AudioFormat;J)J
            l2i
            istore 2 /* bufferSize */
        11: .line 444
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 4 /* ddli */
        start local 4 // com.sun.media.sound.DirectAudioDevice$DirectDLI ddli
        12: .line 445
            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 446
            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 450
      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 451
            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 452
            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 454
            aload 0 /* this */
            iconst_0
            anewarray javax.sound.sampled.Control
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.controls:[Ljavax/sound/sampled/Control;
        18: .line 455
            goto 31
        19: .line 456
      StackMap locals:
      StackMap stack:
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
            iconst_2
            if_icmpgt 21
        20: .line 457
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getSampleSizeInBits:()I
            bipush 16
            if_icmple 23
        21: .line 459
      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 460
            goto 31
        23: .line 461
      StackMap locals:
      StackMap stack:
            aload 1 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
            iconst_1
            if_icmpne 26
        24: .line 462
            aload 0 /* this */
            iconst_2
            anewarray javax.sound.sampled.Control
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.controls:[Ljavax/sound/sampled/Control;
        25: .line 463
            goto 29
        26: .line 464
      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 465
            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 469
            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 471
      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 472
            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 477
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* format */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
        32: .line 480
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.softwareConversionSize:I
        33: .line 481
            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 482
            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 483
            aload 4 /* ddli */
            aload 5 /* newFormat */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDLI.isFormatSupportedInHardware:(Ljavax/sound/sampled/AudioFormat;)Z
            ifeq 38
        36: .line 485
            aload 0 /* this */
            aload 5 /* newFormat */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
        37: .line 487
            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 498
      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 500
            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 501
            iload 3 /* encoding */
        41: .line 502
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getSampleRate:()F
        42: .line 503
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getSampleSizeInBits:()I
        43: .line 504
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
        44: .line 505
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
        45: .line 506
            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 507
            getstatic javax.sound.sampled.AudioFormat$Encoding.PCM_SIGNED:Ljavax/sound/sampled/AudioFormat$Encoding;
        47: .line 506
            invokevirtual javax.sound.sampled.AudioFormat$Encoding.equals:(Ljava/lang/Object;)Z
        48: .line 508
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.hardwareFormat:Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.isBigEndian:()Z
        49: .line 509
            iload 2 /* bufferSize */
        50: .line 500
            invokestatic com.sun.media.sound.DirectAudioDevice.nOpen:(IIZIFIIIZZI)J
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
        51: .line 511
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifne 55
        52: .line 513
            new javax.sound.sampled.LineUnavailableException
            dup
        53: .line 514
            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 513
            invokespecial javax.sound.sampled.LineUnavailableException.<init>:(Ljava/lang/String;)V
            athrow
        55: .line 517
      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 518
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.bufferSize:I
            iconst_1
            if_icmpge 58
        57: .line 520
            aload 0 /* this */
            iload 2 /* bufferSize */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.bufferSize:I
        58: .line 522
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* format */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.format:Ljavax/sound/sampled/AudioFormat;
        59: .line 524
            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 525
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
            bipush 10
            if_icmpge 63
        61: .line 526
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
        62: .line 527
            goto 65
        63: .line 528
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
            sipush 1000
            if_icmple 65
        64: .line 531
            aload 0 /* this */
            sipush 1000
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.waitTime:I
        65: .line 533
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.bytePosition:J
        66: .line 534
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
        67: .line 535
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
        68: .line 536
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.calcVolume:()V
        69: .line 539
            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 546
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifne 2
         1: .line 547
            invokestatic com.sun.media.sound.JSSecurityManager.checkRecordPermission:()V
         2: .line 550
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         3: .line 552
            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 550
            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 555
      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 556
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
            ifeq 11
        10: .line 557
            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 560
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
        12: .line 565
            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 566
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setStarted:(Z)V
        14: .line 567
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setActive:(Z)V
        15: .line 571
      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 577
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifne 2
         1: .line 578
            invokestatic com.sun.media.sound.JSSecurityManager.checkRecordPermission:()V
         2: .line 581
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
            ifeq 5
         3: .line 582
            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 583
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
         5: .line 585
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         6: .line 586
            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 585
            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 589
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
        12: .line 593
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
        13: .line 594
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
        14: .line 589
            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 596
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setActive:(Z)V
        19: .line 597
            aload 0 /* this */
            iconst_0
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setStarted:(Z)V
        20: .line 598
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
        21: .line 601
            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 607
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.isSource:Z
            ifne 2
         1: .line 608
            invokestatic com.sun.media.sound.JSSecurityManager.checkRecordPermission:()V
         2: .line 612
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
            ifeq 5
         3: .line 613
            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 614
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
         5: .line 617
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
         6: .line 618
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lstore 1 /* oldID */
        start local 1 // long oldID
         7: .line 619
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
         8: .line 620
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         9: .line 621
            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 620
            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 623
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.bytePosition:J
        15: .line 624
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.softwareConversionSize:I
        16: .line 626
            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 631
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifne 2
         1: .line 632
            iconst_0
            ireturn
         2: .line 635
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 636
            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 635
            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 638
      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 643
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.noService:Z
         1: .line 647
            iconst_0
            istore 1 /* counter */
        start local 1 // int counter
         2: .line 648
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getLongFramePosition:()J
            lstore 2 /* startPos */
        start local 2 // long startPos
         3: .line 649
            iconst_0
            istore 4 /* posChanged */
        start local 4 // boolean posChanged
         4: .line 650
            goto 32
         5: .line 651
      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 652
            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 653
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 5
            monitorexit
         8: goto 33
         9: .line 651
      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 656
      StackMap locals:
      StackMap stack:
            iload 1 /* counter */
            iconst_5
            irem
            iconst_4
            if_icmpne 23
        14: .line 657
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getLongFramePosition:()J
            lstore 5 /* thisFramePos */
        start local 5 // long thisFramePos
        15: .line 658
            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 659
            iload 1 /* counter */
            bipush 50
            irem
            bipush 45
            if_icmple 23
        19: .line 662
            iload 4 /* posChanged */
            ifne 21
        20: .line 664
            goto 33
        21: .line 666
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* posChanged */
        22: .line 667
            lload 5 /* thisFramePos */
            lstore 2 /* startPos */
        end local 5 // long thisFramePos
        23: .line 670
      StackMap locals:
      StackMap stack:
            iinc 1 /* counter */ 1
        24: .line 671
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
        25: .line 673
            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 674
            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 671
      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 650
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
            ifeq 5
        33: .line 678
      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 679
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
        35: .line 681
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.noService:Z
        36: .line 682
            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 685
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifeq 16
         1: .line 687
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
         2: .line 688
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         3: .line 689
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notifyAll:()V
         4: .line 688
            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 691
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         9: .line 692
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifeq 11
        10: .line 694
            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 691
      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 697
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
        16: .line 699
      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 704
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         1: .line 705
            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 704
            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 708
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectDL long
      StackMap stack:
            lload 1 /* pos */
            lconst_0
            lcmp
            ifge 8
         7: .line 711
            lconst_0
            lstore 1 /* pos */
         8: .line 713
      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 723
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
         1: .line 724
            iload 3 /* len */
            ifne 3
         2: .line 725
            iconst_0
            ireturn
         3: .line 727
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            ifge 5
         4: .line 728
            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 730
      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 731
            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 733
            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 734
            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 731
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 736
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            ifge 12
        11: .line 737
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            iload 2 /* off */
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        12: .line 739
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            i2l
            iload 3 /* len */
            i2l
            ladd
            aload 1 /* b */
            arraylength
            i2l
            lcmp
            ifle 14
        13: .line 740
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            aload 1 /* b */
            arraylength
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        14: .line 743
      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 746
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setActive:(Z)V
        16: .line 747
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.setStarted:(Z)V
        17: .line 749
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* written */
        start local 4 // int written
        18: .line 750
            goto 46
        19: .line 752
      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 753
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
        21: .line 754
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.softwareConversionSize:I
        22: .line 755
            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 753
            invokestatic com.sun.media.sound.DirectAudioDevice.nWrite:(J[BIIIFF)I
            istore 5 /* thisWritten */
        start local 5 // int thisWritten
        24: .line 756
            iload 5 /* thisWritten */
            ifge 27
        25: .line 758
            aload 6
            monitorexit
        26: goto 47
        27: .line 760
      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 761
            iload 5 /* thisWritten */
            ifle 30
        29: .line 762
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.drained:Z
        30: .line 752
      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 765
      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 766
            iload 4 /* written */
            iload 5 /* thisWritten */
            iadd
            istore 4 /* written */
        36: .line 767
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
            ifeq 47
            iload 3 /* len */
            ifle 47
        37: .line 768
            iload 2 /* off */
            iload 5 /* thisWritten */
            iadd
            istore 2 /* off */
        38: .line 769
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lock:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        39: .line 771
            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 772
            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 769
      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 750
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
            ifeq 19
        47: .line 778
      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 779
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.stoppedWritten:Z
        49: .line 781
      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 785
            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 790
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.lockNative:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 791
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.monitoring:Z
            ifeq 7
         2: .line 792
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.doIO:Z
            ifeq 7
         3: .line 793
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.id:J
            lconst_0
            lcmp
            ifeq 7
         4: .line 794
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.flushing:Z
            ifne 7
         5: .line 795
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectDL.noService:Z
            ifne 7
         6: .line 796
            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 790
      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 799
      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 802
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectDL.getFormat:()Ljavax/sound/sampled/AudioFormat;
            ifnonnull 2
         1: .line 803
            return
         2: .line 805
      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 806
            aload 0 /* this */
            fconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.leftGain:F
         4: .line 807
            aload 0 /* this */
            fconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
         5: .line 808
            return
         6: .line 810
      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 811
            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 813
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.leftGain:F
         9: .line 814
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
        10: .line 815
            goto 18
        11: .line 817
      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 818
            fload 2 /* bal */
            fconst_0
            fcmpg
            ifge 16
        13: .line 820
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.leftGain:F
        14: .line 821
            aload 0 /* this */
            fload 1 /* gain */
            fload 2 /* bal */
            fconst_1
            fadd
            fmul
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
        15: .line 822
            goto 18
        16: .line 823
      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 824
            aload 0 /* this */
            fload 1 /* gain */
            putfield com.sun.media.sound.DirectAudioDevice$DirectDL.rightGain:F
        end local 2 // float bal
        18: .line 827
      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