public final class com.sun.media.sound.SoftMixingMixer implements javax.sound.sampled.Mixer
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.sun.media.sound.SoftMixingMixer
  super_class: java.lang.Object
{
  static final java.lang.String INFO_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "Gervill Sound Mixer"

  static final java.lang.String INFO_VENDOR;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "OpenJDK Proposal"

  static final java.lang.String INFO_DESCRIPTION;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "Software Sound Mixer"

  static final java.lang.String INFO_VERSION;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "1.0"

  static final javax.sound.sampled.Mixer$Info info;
    descriptor: Ljavax/sound/sampled/Mixer$Info;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  final java.lang.Object control_mutex;
    descriptor: Ljava/lang/Object;
    flags: (0x0010) ACC_FINAL

  boolean implicitOpen;
    descriptor: Z
    flags: (0x0000) 

  private boolean open;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private com.sun.media.sound.SoftMixingMainMixer mainmixer;
    descriptor: Lcom/sun/media/sound/SoftMixingMainMixer;
    flags: (0x0002) ACC_PRIVATE

  private javax.sound.sampled.AudioFormat format;
    descriptor: Ljavax/sound/sampled/AudioFormat;
    flags: (0x0002) ACC_PRIVATE

  private javax.sound.sampled.SourceDataLine sourceDataLine;
    descriptor: Ljavax/sound/sampled/SourceDataLine;
    flags: (0x0002) ACC_PRIVATE

  private com.sun.media.sound.SoftAudioPusher pusher;
    descriptor: Lcom/sun/media/sound/SoftAudioPusher;
    flags: (0x0002) ACC_PRIVATE

  private javax.sound.sampled.AudioInputStream pusher_stream;
    descriptor: Ljavax/sound/sampled/AudioInputStream;
    flags: (0x0002) ACC_PRIVATE

  private final float controlrate;
    descriptor: F
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    ConstantValue: 147.0

  private final long latency;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    ConstantValue: 100000

  private final boolean jitter_correction;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    ConstantValue: 0

  private final java.util.List<javax.sound.sampled.LineListener> listeners;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljavax/sound/sampled/LineListener;>;

  private final javax.sound.sampled.Line$Info[] sourceLineInfo;
    descriptor: [Ljavax/sound/sampled/Line$Info;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 67
            new com.sun.media.sound.SoftMixingMixer$Info
            dup
            invokespecial com.sun.media.sound.SoftMixingMixer$Info.<init>:()V
            putstatic com.sun.media.sound.SoftMixingMixer.info:Ljavax/sound/sampled/Mixer$Info;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=4, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingMixer this
         0: .line 95
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 69
            aload 0 /* this */
            aload 0 /* this */
            putfield com.sun.media.sound.SoftMixingMixer.control_mutex:Ljava/lang/Object;
         2: .line 71
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingMixer.implicitOpen:Z
         3: .line 73
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingMixer.open:Z
         4: .line 75
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.SoftMixingMixer.mainmixer:Lcom/sun/media/sound/SoftMixingMainMixer;
         5: .line 77
            aload 0 /* this */
            new javax.sound.sampled.AudioFormat
            dup
            ldc 44100.0
            bipush 16
            iconst_2
            iconst_1
            iconst_0
            invokespecial javax.sound.sampled.AudioFormat.<init>:(FIIZZ)V
            putfield com.sun.media.sound.SoftMixingMixer.format:Ljavax/sound/sampled/AudioFormat;
         6: .line 79
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.SoftMixingMixer.sourceDataLine:Ljavax/sound/sampled/SourceDataLine;
         7: .line 81
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.SoftMixingMixer.pusher:Lcom/sun/media/sound/SoftAudioPusher;
         8: .line 83
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.SoftMixingMixer.pusher_stream:Ljavax/sound/sampled/AudioInputStream;
         9: .line 85
            aload 0 /* this */
            ldc 147.0
            putfield com.sun.media.sound.SoftMixingMixer.controlrate:F
        10: .line 87
            aload 0 /* this */
            ldc 100000
            putfield com.sun.media.sound.SoftMixingMixer.latency:J
        11: .line 89
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingMixer.jitter_correction:Z
        12: .line 91
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.sun.media.sound.SoftMixingMixer.listeners:Ljava/util/List;
        13: .line 97
            aload 0 /* this */
            iconst_2
            anewarray javax.sound.sampled.Line$Info
            putfield com.sun.media.sound.SoftMixingMixer.sourceLineInfo:[Ljavax/sound/sampled/Line$Info;
        14: .line 99
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* formats */
        start local 1 // java.util.ArrayList formats
        15: .line 100
            iconst_1
            istore 2 /* channels */
        start local 2 // int channels
        16: goto 62
        17: .line 101
      StackMap locals: com.sun.media.sound.SoftMixingMixer java.util.ArrayList int
      StackMap stack:
            aload 1 /* formats */
            new javax.sound.sampled.AudioFormat
            dup
            getstatic javax.sound.sampled.AudioFormat$Encoding.PCM_SIGNED:Ljavax/sound/sampled/AudioFormat$Encoding;
        18: .line 102
            ldc -1.0
            bipush 8
            iload 2 /* channels */
            iload 2 /* channels */
        19: .line 103
            ldc -1.0
            iconst_0
            invokespecial javax.sound.sampled.AudioFormat.<init>:(Ljavax/sound/sampled/AudioFormat$Encoding;FIIIFZ)V
        20: .line 101
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        21: .line 104
            aload 1 /* formats */
            new javax.sound.sampled.AudioFormat
            dup
            getstatic javax.sound.sampled.AudioFormat$Encoding.PCM_UNSIGNED:Ljavax/sound/sampled/AudioFormat$Encoding;
        22: .line 105
            ldc -1.0
            bipush 8
            iload 2 /* channels */
            iload 2 /* channels */
        23: .line 106
            ldc -1.0
            iconst_0
            invokespecial javax.sound.sampled.AudioFormat.<init>:(Ljavax/sound/sampled/AudioFormat$Encoding;FIIIFZ)V
        24: .line 104
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        25: .line 107
            bipush 16
            istore 3 /* bits */
        start local 3 // int bits
        26: goto 44
        27: .line 108
      StackMap locals: int
      StackMap stack:
            aload 1 /* formats */
            new javax.sound.sampled.AudioFormat
            dup
            getstatic javax.sound.sampled.AudioFormat$Encoding.PCM_SIGNED:Ljavax/sound/sampled/AudioFormat$Encoding;
        28: .line 109
            ldc -1.0
            iload 3 /* bits */
            iload 2 /* channels */
            iload 2 /* channels */
        29: .line 110
            iload 3 /* bits */
            imul
            bipush 8
            idiv
            ldc -1.0
            iconst_0
            invokespecial javax.sound.sampled.AudioFormat.<init>:(Ljavax/sound/sampled/AudioFormat$Encoding;FIIIFZ)V
        30: .line 108
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        31: .line 111
            aload 1 /* formats */
            new javax.sound.sampled.AudioFormat
            dup
            getstatic javax.sound.sampled.AudioFormat$Encoding.PCM_UNSIGNED:Ljavax/sound/sampled/AudioFormat$Encoding;
        32: .line 112
            ldc -1.0
            iload 3 /* bits */
            iload 2 /* channels */
            iload 2 /* channels */
        33: .line 113
            iload 3 /* bits */
            imul
            bipush 8
            idiv
            ldc -1.0
            iconst_0
            invokespecial javax.sound.sampled.AudioFormat.<init>:(Ljavax/sound/sampled/AudioFormat$Encoding;FIIIFZ)V
        34: .line 111
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        35: .line 114
            aload 1 /* formats */
            new javax.sound.sampled.AudioFormat
            dup
            getstatic javax.sound.sampled.AudioFormat$Encoding.PCM_SIGNED:Ljavax/sound/sampled/AudioFormat$Encoding;
        36: .line 115
            ldc -1.0
            iload 3 /* bits */
            iload 2 /* channels */
            iload 2 /* channels */
        37: .line 116
            iload 3 /* bits */
            imul
            bipush 8
            idiv
            ldc -1.0
            iconst_1
            invokespecial javax.sound.sampled.AudioFormat.<init>:(Ljavax/sound/sampled/AudioFormat$Encoding;FIIIFZ)V
        38: .line 114
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        39: .line 117
            aload 1 /* formats */
            new javax.sound.sampled.AudioFormat
            dup
            getstatic javax.sound.sampled.AudioFormat$Encoding.PCM_UNSIGNED:Ljavax/sound/sampled/AudioFormat$Encoding;
        40: .line 118
            ldc -1.0
            iload 3 /* bits */
            iload 2 /* channels */
            iload 2 /* channels */
        41: .line 119
            iload 3 /* bits */
            imul
            bipush 8
            idiv
            ldc -1.0
            iconst_1
            invokespecial javax.sound.sampled.AudioFormat.<init>:(Ljavax/sound/sampled/AudioFormat$Encoding;FIIIFZ)V
        42: .line 117
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        43: .line 107
            iinc 3 /* bits */ 8
      StackMap locals:
      StackMap stack:
        44: iload 3 /* bits */
            bipush 32
            if_icmplt 27
        end local 3 // int bits
        45: .line 121
            aload 1 /* formats */
            new javax.sound.sampled.AudioFormat
            dup
            getstatic com.sun.media.sound.AudioFloatConverter.PCM_FLOAT:Ljavax/sound/sampled/AudioFormat$Encoding;
        46: .line 122
            ldc -1.0
            bipush 32
            iload 2 /* channels */
            iload 2 /* channels */
            iconst_4
            imul
        47: .line 123
            ldc -1.0
            iconst_0
            invokespecial javax.sound.sampled.AudioFormat.<init>:(Ljavax/sound/sampled/AudioFormat$Encoding;FIIIFZ)V
        48: .line 121
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        49: .line 124
            aload 1 /* formats */
            new javax.sound.sampled.AudioFormat
            dup
            getstatic com.sun.media.sound.AudioFloatConverter.PCM_FLOAT:Ljavax/sound/sampled/AudioFormat$Encoding;
        50: .line 125
            ldc -1.0
            bipush 32
            iload 2 /* channels */
            iload 2 /* channels */
            iconst_4
            imul
        51: .line 126
            ldc -1.0
            iconst_1
            invokespecial javax.sound.sampled.AudioFormat.<init>:(Ljavax/sound/sampled/AudioFormat$Encoding;FIIIFZ)V
        52: .line 124
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        53: .line 127
            aload 1 /* formats */
            new javax.sound.sampled.AudioFormat
            dup
            getstatic com.sun.media.sound.AudioFloatConverter.PCM_FLOAT:Ljavax/sound/sampled/AudioFormat$Encoding;
        54: .line 128
            ldc -1.0
            bipush 64
            iload 2 /* channels */
            iload 2 /* channels */
            bipush 8
            imul
        55: .line 129
            ldc -1.0
            iconst_0
            invokespecial javax.sound.sampled.AudioFormat.<init>:(Ljavax/sound/sampled/AudioFormat$Encoding;FIIIFZ)V
        56: .line 127
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        57: .line 130
            aload 1 /* formats */
            new javax.sound.sampled.AudioFormat
            dup
            getstatic com.sun.media.sound.AudioFloatConverter.PCM_FLOAT:Ljavax/sound/sampled/AudioFormat$Encoding;
        58: .line 131
            ldc -1.0
            bipush 64
            iload 2 /* channels */
            iload 2 /* channels */
            bipush 8
            imul
        59: .line 132
            ldc -1.0
            iconst_1
            invokespecial javax.sound.sampled.AudioFormat.<init>:(Ljavax/sound/sampled/AudioFormat$Encoding;FIIIFZ)V
        60: .line 130
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        61: .line 100
            iinc 2 /* channels */ 1
      StackMap locals:
      StackMap stack:
        62: iload 2 /* channels */
            iconst_2
            if_icmple 17
        end local 2 // int channels
        63: .line 134
            aload 1 /* formats */
            aload 1 /* formats */
        64: .line 135
            invokevirtual java.util.ArrayList.size:()I
            anewarray javax.sound.sampled.AudioFormat
        65: .line 134
            invokevirtual java.util.ArrayList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast javax.sound.sampled.AudioFormat[]
            astore 2 /* formats_array */
        start local 2 // javax.sound.sampled.AudioFormat[] formats_array
        66: .line 136
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.sourceLineInfo:[Ljavax/sound/sampled/Line$Info;
            iconst_0
            new javax.sound.sampled.DataLine$Info
            dup
            ldc Ljavax/sound/sampled/SourceDataLine;
        67: .line 137
            aload 2 /* formats_array */
            iconst_m1
        68: .line 138
            iconst_m1
            invokespecial javax.sound.sampled.DataLine$Info.<init>:(Ljava/lang/Class;[Ljavax/sound/sampled/AudioFormat;II)V
        69: .line 136
            aastore
        70: .line 139
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.sourceLineInfo:[Ljavax/sound/sampled/Line$Info;
            iconst_1
            new javax.sound.sampled.DataLine$Info
            dup
            ldc Ljavax/sound/sampled/Clip;
            aload 2 /* formats_array */
        71: .line 140
            iconst_m1
            iconst_m1
            invokespecial javax.sound.sampled.DataLine$Info.<init>:(Ljava/lang/Class;[Ljavax/sound/sampled/AudioFormat;II)V
        72: .line 139
            aastore
        73: .line 141
            return
        end local 2 // javax.sound.sampled.AudioFormat[] formats_array
        end local 1 // java.util.ArrayList formats
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   74     0           this  Lcom/sun/media/sound/SoftMixingMixer;
           15   74     1        formats  Ljava/util/ArrayList<Ljavax/sound/sampled/AudioFormat;>;
           16   63     2       channels  I
           26   45     3           bits  I
           66   74     2  formats_array  [Ljavax/sound/sampled/AudioFormat;

  public javax.sound.sampled.Line getLine(javax.sound.sampled.Line$Info);
    descriptor: (Ljavax/sound/sampled/Line$Info;)Ljavax/sound/sampled/Line;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.sun.media.sound.SoftMixingMixer this
        start local 1 // javax.sound.sampled.Line$Info info
         0: .line 145
            aload 0 /* this */
            aload 1 /* info */
            invokevirtual com.sun.media.sound.SoftMixingMixer.isLineSupported:(Ljavax/sound/sampled/Line$Info;)Z
            ifne 2
         1: .line 146
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Line unsupported: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* info */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 148
      StackMap locals:
      StackMap stack:
            aload 1 /* info */
            invokevirtual javax.sound.sampled.Line$Info.getLineClass:()Ljava/lang/Class;
            ldc Ljavax/sound/sampled/SourceDataLine;
            if_acmpne 4
         3: .line 149
            new com.sun.media.sound.SoftMixingSourceDataLine
            dup
            aload 0 /* this */
            aload 1 /* info */
            checkcast javax.sound.sampled.DataLine$Info
            invokespecial com.sun.media.sound.SoftMixingSourceDataLine.<init>:(Lcom/sun/media/sound/SoftMixingMixer;Ljavax/sound/sampled/DataLine$Info;)V
            areturn
         4: .line 151
      StackMap locals:
      StackMap stack:
            aload 1 /* info */
            invokevirtual javax.sound.sampled.Line$Info.getLineClass:()Ljava/lang/Class;
            ldc Ljavax/sound/sampled/Clip;
            if_acmpne 6
         5: .line 152
            new com.sun.media.sound.SoftMixingClip
            dup
            aload 0 /* this */
            aload 1 /* info */
            checkcast javax.sound.sampled.DataLine$Info
            invokespecial com.sun.media.sound.SoftMixingClip.<init>:(Lcom/sun/media/sound/SoftMixingMixer;Ljavax/sound/sampled/DataLine$Info;)V
            areturn
         6: .line 155
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Line unsupported: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* info */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // javax.sound.sampled.Line$Info info
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/sun/media/sound/SoftMixingMixer;
            0    7     1  info  Ljavax/sound/sampled/Line$Info;
    Exceptions:
      throws javax.sound.sampled.LineUnavailableException
    MethodParameters:
      Name  Flags
      info  

  public int getMaxLines(javax.sound.sampled.Line$Info);
    descriptor: (Ljavax/sound/sampled/Line$Info;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.media.sound.SoftMixingMixer this
        start local 1 // javax.sound.sampled.Line$Info info
         0: .line 159
            aload 1 /* info */
            invokevirtual javax.sound.sampled.Line$Info.getLineClass:()Ljava/lang/Class;
            ldc Ljavax/sound/sampled/SourceDataLine;
            if_acmpne 2
         1: .line 160
            iconst_m1
            ireturn
         2: .line 161
      StackMap locals:
      StackMap stack:
            aload 1 /* info */
            invokevirtual javax.sound.sampled.Line$Info.getLineClass:()Ljava/lang/Class;
            ldc Ljavax/sound/sampled/Clip;
            if_acmpne 4
         3: .line 162
            iconst_m1
            ireturn
         4: .line 163
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // javax.sound.sampled.Line$Info info
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/media/sound/SoftMixingMixer;
            0    5     1  info  Ljavax/sound/sampled/Line$Info;
    MethodParameters:
      Name  Flags
      info  

  public javax.sound.sampled.Mixer$Info getMixerInfo();
    descriptor: ()Ljavax/sound/sampled/Mixer$Info;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingMixer this
         0: .line 167
            getstatic com.sun.media.sound.SoftMixingMixer.info:Ljavax/sound/sampled/Mixer$Info;
            areturn
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/SoftMixingMixer;

  public javax.sound.sampled.Line$Info[] getSourceLineInfo();
    descriptor: ()[Ljavax/sound/sampled/Line$Info;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingMixer this
         0: .line 171
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.sourceLineInfo:[Ljavax/sound/sampled/Line$Info;
            arraylength
            anewarray javax.sound.sampled.Line$Info
            astore 1 /* localArray */
        start local 1 // javax.sound.sampled.Line$Info[] localArray
         1: .line 172
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.sourceLineInfo:[Ljavax/sound/sampled/Line$Info;
            iconst_0
            aload 1 /* localArray */
            iconst_0
         2: .line 173
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.sourceLineInfo:[Ljavax/sound/sampled/Line$Info;
            arraylength
         3: .line 172
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         4: .line 174
            aload 1 /* localArray */
            areturn
        end local 1 // javax.sound.sampled.Line$Info[] localArray
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lcom/sun/media/sound/SoftMixingMixer;
            1    5     1  localArray  [Ljavax/sound/sampled/Line$Info;

  public javax.sound.sampled.Line$Info[] getSourceLineInfo(javax.sound.sampled.Line$Info);
    descriptor: (Ljavax/sound/sampled/Line$Info;)[Ljavax/sound/sampled/Line$Info;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.sun.media.sound.SoftMixingMixer this
        start local 1 // javax.sound.sampled.Line$Info info
         0: .line 180
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* infos */
        start local 3 // java.util.ArrayList infos
         1: .line 182
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 6
         3: .line 183
      StackMap locals: int java.util.ArrayList
      StackMap stack:
            aload 1 /* info */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.sourceLineInfo:[Ljavax/sound/sampled/Line$Info;
            iload 2 /* i */
            aaload
            invokevirtual javax.sound.sampled.Line$Info.matches:(Ljavax/sound/sampled/Line$Info;)Z
            ifeq 5
         4: .line 184
            aload 3 /* infos */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.sourceLineInfo:[Ljavax/sound/sampled/Line$Info;
            iload 2 /* i */
            aaload
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         5: .line 182
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 2 /* i */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.sourceLineInfo:[Ljavax/sound/sampled/Line$Info;
            arraylength
            if_icmplt 3
         7: .line 187
            aload 3 /* infos */
            aload 3 /* infos */
            invokevirtual java.util.ArrayList.size:()I
            anewarray javax.sound.sampled.Line$Info
            invokevirtual java.util.ArrayList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast javax.sound.sampled.Line$Info[]
            areturn
        end local 3 // java.util.ArrayList infos
        end local 2 // int i
        end local 1 // javax.sound.sampled.Line$Info info
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Lcom/sun/media/sound/SoftMixingMixer;
            0    8     1   info  Ljavax/sound/sampled/Line$Info;
            2    8     2      i  I
            1    8     3  infos  Ljava/util/ArrayList<Ljavax/sound/sampled/Line$Info;>;
    MethodParameters:
      Name  Flags
      info  

  public javax.sound.sampled.Line[] getSourceLines();
    descriptor: ()[Ljavax/sound/sampled/Line;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingMixer this
         0: .line 194
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.control_mutex:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 196
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.mainmixer:Lcom/sun/media/sound/SoftMixingMainMixer;
            ifnonnull 4
         2: .line 197
            iconst_0
            anewarray javax.sound.sampled.Line
            aload 2
            monitorexit
         3: areturn
         4: .line 198
      StackMap locals: com.sun.media.sound.SoftMixingMixer top java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.mainmixer:Lcom/sun/media/sound/SoftMixingMainMixer;
            invokevirtual com.sun.media.sound.SoftMixingMainMixer.getOpenLines:()[Lcom/sun/media/sound/SoftMixingDataLine;
            astore 3 /* sourceLines */
        start local 3 // com.sun.media.sound.SoftMixingDataLine[] sourceLines
         5: .line 200
            aload 3 /* sourceLines */
            arraylength
            anewarray javax.sound.sampled.Line
            astore 1 /* localLines */
        start local 1 // javax.sound.sampled.Line[] localLines
         6: .line 202
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         7: goto 10
         8: .line 203
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.Line[] java.lang.Object com.sun.media.sound.SoftMixingDataLine[] int
      StackMap stack:
            aload 1 /* localLines */
            iload 4 /* i */
            aload 3 /* sourceLines */
            iload 4 /* i */
            aaload
            aastore
         9: .line 202
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 4 /* i */
            aload 1 /* localLines */
            arraylength
            if_icmplt 8
        end local 4 // int i
        end local 3 // com.sun.media.sound.SoftMixingDataLine[] sourceLines
        11: .line 194
            aload 2
            monitorexit
        12: goto 15
        end local 1 // javax.sound.sampled.Line[] localLines
      StackMap locals: com.sun.media.sound.SoftMixingMixer top java.lang.Object
      StackMap stack: java.lang.Throwable
        13: aload 2
            monitorexit
        14: athrow
        start local 1 // javax.sound.sampled.Line[] localLines
        15: .line 207
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.Line[]
      StackMap stack:
            aload 1 /* localLines */
            areturn
        end local 1 // javax.sound.sampled.Line[] localLines
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   16     0         this  Lcom/sun/media/sound/SoftMixingMixer;
            6   13     1   localLines  [Ljavax/sound/sampled/Line;
           15   16     1   localLines  [Ljavax/sound/sampled/Line;
            5   11     3  sourceLines  [Lcom/sun/media/sound/SoftMixingDataLine;
            7   11     4            i  I
      Exception table:
        from    to  target  type
           1     3      13  any
           4    12      13  any
          13    14      13  any

  public javax.sound.sampled.Line$Info[] getTargetLineInfo();
    descriptor: ()[Ljavax/sound/sampled/Line$Info;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingMixer this
         0: .line 211
            iconst_0
            anewarray javax.sound.sampled.Line$Info
            areturn
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/SoftMixingMixer;

  public javax.sound.sampled.Line$Info[] getTargetLineInfo(javax.sound.sampled.Line$Info);
    descriptor: (Ljavax/sound/sampled/Line$Info;)[Ljavax/sound/sampled/Line$Info;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.sun.media.sound.SoftMixingMixer this
        start local 1 // javax.sound.sampled.Line$Info info
         0: .line 216
            iconst_0
            anewarray javax.sound.sampled.Line$Info
            areturn
        end local 1 // javax.sound.sampled.Line$Info info
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/SoftMixingMixer;
            0    1     1  info  Ljavax/sound/sampled/Line$Info;
    MethodParameters:
      Name  Flags
      info  

  public javax.sound.sampled.Line[] getTargetLines();
    descriptor: ()[Ljavax/sound/sampled/Line;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingMixer this
         0: .line 220
            iconst_0
            anewarray javax.sound.sampled.Line
            areturn
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/SoftMixingMixer;

  public boolean isLineSupported(javax.sound.sampled.Line$Info);
    descriptor: (Ljavax/sound/sampled/Line$Info;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.sun.media.sound.SoftMixingMixer this
        start local 1 // javax.sound.sampled.Line$Info info
         0: .line 224
            aload 1 /* info */
            ifnull 7
         1: .line 225
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 6
         3: .line 226
      StackMap locals: int
      StackMap stack:
            aload 1 /* info */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.sourceLineInfo:[Ljavax/sound/sampled/Line$Info;
            iload 2 /* i */
            aaload
            invokevirtual javax.sound.sampled.Line$Info.matches:(Ljavax/sound/sampled/Line$Info;)Z
            ifeq 5
         4: .line 227
            iconst_1
            ireturn
         5: .line 225
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 2 /* i */
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.sourceLineInfo:[Ljavax/sound/sampled/Line$Info;
            arraylength
            if_icmplt 3
        end local 2 // int i
         7: .line 231
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // javax.sound.sampled.Line$Info info
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lcom/sun/media/sound/SoftMixingMixer;
            0    8     1  info  Ljavax/sound/sampled/Line$Info;
            2    7     2     i  I
    MethodParameters:
      Name  Flags
      info  

  public boolean isSynchronizationSupported(javax.sound.sampled.Line[], boolean);
    descriptor: ([Ljavax/sound/sampled/Line;Z)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // com.sun.media.sound.SoftMixingMixer this
        start local 1 // javax.sound.sampled.Line[] lines
        start local 2 // boolean maintainSync
         0: .line 235
            iconst_0
            ireturn
        end local 2 // boolean maintainSync
        end local 1 // javax.sound.sampled.Line[] lines
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lcom/sun/media/sound/SoftMixingMixer;
            0    1     1         lines  [Ljavax/sound/sampled/Line;
            0    1     2  maintainSync  Z
    MethodParameters:
              Name  Flags
      lines         
      maintainSync  

  public void synchronize(javax.sound.sampled.Line[], boolean);
    descriptor: ([Ljavax/sound/sampled/Line;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.sun.media.sound.SoftMixingMixer this
        start local 1 // javax.sound.sampled.Line[] lines
        start local 2 // boolean maintainSync
         0: .line 239
            new java.lang.IllegalArgumentException
            dup
         1: .line 240
            ldc "Synchronization not supported by this mixer."
         2: .line 239
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // boolean maintainSync
        end local 1 // javax.sound.sampled.Line[] lines
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lcom/sun/media/sound/SoftMixingMixer;
            0    3     1         lines  [Ljavax/sound/sampled/Line;
            0    3     2  maintainSync  Z
    MethodParameters:
              Name  Flags
      lines         
      maintainSync  

  public void unsynchronize(javax.sound.sampled.Line[]);
    descriptor: ([Ljavax/sound/sampled/Line;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.sun.media.sound.SoftMixingMixer this
        start local 1 // javax.sound.sampled.Line[] lines
         0: .line 244
            new java.lang.IllegalArgumentException
            dup
         1: .line 245
            ldc "Synchronization not supported by this mixer."
         2: .line 244
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // javax.sound.sampled.Line[] lines
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/sun/media/sound/SoftMixingMixer;
            0    3     1  lines  [Ljavax/sound/sampled/Line;
    MethodParameters:
       Name  Flags
      lines  

  public void addLineListener(javax.sound.sampled.LineListener);
    descriptor: (Ljavax/sound/sampled/LineListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.sun.media.sound.SoftMixingMixer this
        start local 1 // javax.sound.sampled.LineListener listener
         0: .line 249
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.control_mutex:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 250
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.listeners:Ljava/util/List;
            aload 1 /* listener */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 249
            aload 2
            monitorexit
         3: goto 6
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.LineListener java.lang.Object
      StackMap stack: java.lang.Throwable
         4: aload 2
            monitorexit
         5: athrow
         6: .line 252
      StackMap locals:
      StackMap stack:
            return
        end local 1 // javax.sound.sampled.LineListener listener
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lcom/sun/media/sound/SoftMixingMixer;
            0    7     1  listener  Ljavax/sound/sampled/LineListener;
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any
    MethodParameters:
          Name  Flags
      listener  

  private void sendEvent(javax.sound.sampled.LineEvent);
    descriptor: (Ljavax/sound/sampled/LineEvent;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=7, args_size=2
        start local 0 // com.sun.media.sound.SoftMixingMixer this
        start local 1 // javax.sound.sampled.LineEvent event
         0: .line 255
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.listeners:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            ifne 2
         1: .line 256
            return
         2: .line 257
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.listeners:Ljava/util/List;
         3: .line 258
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.listeners:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            anewarray javax.sound.sampled.LineListener
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast javax.sound.sampled.LineListener[]
         4: .line 257
            astore 2 /* listener_array */
        start local 2 // javax.sound.sampled.LineListener[] listener_array
         5: .line 259
            aload 2 /* listener_array */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 9
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.LineEvent javax.sound.sampled.LineListener[] top int int javax.sound.sampled.LineListener[]
      StackMap stack:
         6: aload 6
            iload 4
            aaload
            astore 3 /* listener */
        start local 3 // javax.sound.sampled.LineListener listener
         7: .line 260
            aload 3 /* listener */
            aload 1 /* event */
            invokeinterface javax.sound.sampled.LineListener.update:(Ljavax/sound/sampled/LineEvent;)V
        end local 3 // javax.sound.sampled.LineListener listener
         8: .line 259
            iinc 4 1
      StackMap locals:
      StackMap stack:
         9: iload 4
            iload 5
            if_icmplt 6
        10: .line 262
            return
        end local 2 // javax.sound.sampled.LineListener[] listener_array
        end local 1 // javax.sound.sampled.LineEvent event
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0            this  Lcom/sun/media/sound/SoftMixingMixer;
            0   11     1           event  Ljavax/sound/sampled/LineEvent;
            5   11     2  listener_array  [Ljavax/sound/sampled/LineListener;
            7    8     3        listener  Ljavax/sound/sampled/LineListener;
    MethodParameters:
       Name  Flags
      event  

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingMixer this
         0: .line 265
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingMixer.isOpen:()Z
            ifne 2
         1: .line 266
            return
         2: .line 268
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new javax.sound.sampled.LineEvent
            dup
            aload 0 /* this */
            getstatic javax.sound.sampled.LineEvent$Type.CLOSE:Ljavax/sound/sampled/LineEvent$Type;
         3: .line 269
            ldc -1
            invokespecial javax.sound.sampled.LineEvent.<init>:(Ljavax/sound/sampled/Line;Ljavax/sound/sampled/LineEvent$Type;J)V
         4: .line 268
            invokevirtual com.sun.media.sound.SoftMixingMixer.sendEvent:(Ljavax/sound/sampled/LineEvent;)V
         5: .line 271
            aconst_null
            astore 1 /* pusher_to_be_closed */
        start local 1 // com.sun.media.sound.SoftAudioPusher pusher_to_be_closed
         6: .line 272
            aconst_null
            astore 2 /* pusher_stream_to_be_closed */
        start local 2 // javax.sound.sampled.AudioInputStream pusher_stream_to_be_closed
         7: .line 273
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.control_mutex:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         8: .line 274
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.pusher:Lcom/sun/media/sound/SoftAudioPusher;
            ifnull 13
         9: .line 275
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.pusher:Lcom/sun/media/sound/SoftAudioPusher;
            astore 1 /* pusher_to_be_closed */
        10: .line 276
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.pusher_stream:Ljavax/sound/sampled/AudioInputStream;
            astore 2 /* pusher_stream_to_be_closed */
        11: .line 277
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.SoftMixingMixer.pusher:Lcom/sun/media/sound/SoftAudioPusher;
        12: .line 278
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.SoftMixingMixer.pusher_stream:Ljavax/sound/sampled/AudioInputStream;
        13: .line 273
      StackMap locals: com.sun.media.sound.SoftAudioPusher javax.sound.sampled.AudioInputStream java.lang.Object
      StackMap stack:
            aload 3
            monitorexit
        14: goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: aload 3
            monitorexit
        16: athrow
        17: .line 282
      StackMap locals:
      StackMap stack:
            aload 1 /* pusher_to_be_closed */
            ifnull 23
        18: .line 286
            aload 1 /* pusher_to_be_closed */
            invokevirtual com.sun.media.sound.SoftAudioPusher.stop:()V
        19: .line 289
            aload 2 /* pusher_stream_to_be_closed */
            invokevirtual javax.sound.sampled.AudioInputStream.close:()V
        20: .line 290
            goto 23
      StackMap locals:
      StackMap stack: java.io.IOException
        21: astore 3 /* e */
        start local 3 // java.io.IOException e
        22: .line 291
            aload 3 /* e */
            invokevirtual java.io.IOException.printStackTrace:()V
        end local 3 // java.io.IOException e
        23: .line 295
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.control_mutex:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
        24: .line 297
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.mainmixer:Lcom/sun/media/sound/SoftMixingMainMixer;
            ifnull 26
        25: .line 298
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.mainmixer:Lcom/sun/media/sound/SoftMixingMainMixer;
            invokevirtual com.sun.media.sound.SoftMixingMainMixer.close:()V
        26: .line 299
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingMixer.open:Z
        27: .line 301
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.sourceDataLine:Ljavax/sound/sampled/SourceDataLine;
            ifnull 31
        28: .line 302
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.sourceDataLine:Ljavax/sound/sampled/SourceDataLine;
            invokeinterface javax.sound.sampled.SourceDataLine.drain:()V
        29: .line 303
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.sourceDataLine:Ljavax/sound/sampled/SourceDataLine;
            invokeinterface javax.sound.sampled.SourceDataLine.close:()V
        30: .line 304
            aload 0 /* this */
            aconst_null
            putfield com.sun.media.sound.SoftMixingMixer.sourceDataLine:Ljavax/sound/sampled/SourceDataLine;
        31: .line 295
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        32: goto 35
      StackMap locals:
      StackMap stack: java.lang.Throwable
        33: aload 3
            monitorexit
        34: athrow
        35: .line 309
      StackMap locals:
      StackMap stack:
            return
        end local 2 // javax.sound.sampled.AudioInputStream pusher_stream_to_be_closed
        end local 1 // com.sun.media.sound.SoftAudioPusher pusher_to_be_closed
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0   36     0                        this  Lcom/sun/media/sound/SoftMixingMixer;
            6   36     1         pusher_to_be_closed  Lcom/sun/media/sound/SoftAudioPusher;
            7   36     2  pusher_stream_to_be_closed  Ljavax/sound/sampled/AudioInputStream;
           22   23     3                           e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           8    14      15  any
          15    16      15  any
          19    20      21  Class java.io.IOException
          24    32      33  any
          33    34      33  any

  public javax.sound.sampled.Control getControl(javax.sound.sampled.Control$Type);
    descriptor: (Ljavax/sound/sampled/Control$Type;)Ljavax/sound/sampled/Control;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.sun.media.sound.SoftMixingMixer this
        start local 1 // javax.sound.sampled.Control$Type control
         0: .line 312
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unsupported control type : "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         1: .line 313
            aload 1 /* control */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         2: .line 312
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // javax.sound.sampled.Control$Type control
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lcom/sun/media/sound/SoftMixingMixer;
            0    3     1  control  Ljavax/sound/sampled/Control$Type;
    MethodParameters:
         Name  Flags
      control  

  public javax.sound.sampled.Control[] getControls();
    descriptor: ()[Ljavax/sound/sampled/Control;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingMixer this
         0: .line 317
            iconst_0
            anewarray javax.sound.sampled.Control
            areturn
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/SoftMixingMixer;

  public javax.sound.sampled.Line$Info getLineInfo();
    descriptor: ()Ljavax/sound/sampled/Line$Info;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingMixer this
         0: .line 321
            new javax.sound.sampled.Line$Info
            dup
            ldc Ljavax/sound/sampled/Mixer;
            invokespecial javax.sound.sampled.Line$Info.<init>:(Ljava/lang/Class;)V
            areturn
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/SoftMixingMixer;

  public boolean isControlSupported(javax.sound.sampled.Control$Type);
    descriptor: (Ljavax/sound/sampled/Control$Type;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.sun.media.sound.SoftMixingMixer this
        start local 1 // javax.sound.sampled.Control$Type control
         0: .line 325
            iconst_0
            ireturn
        end local 1 // javax.sound.sampled.Control$Type control
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/sun/media/sound/SoftMixingMixer;
            0    1     1  control  Ljavax/sound/sampled/Control$Type;
    MethodParameters:
         Name  Flags
      control  

  public boolean isOpen();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingMixer this
         0: .line 329
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.control_mutex:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 330
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.open:Z
            aload 1
            monitorexit
         2: ireturn
         3: .line 329
      StackMap locals: com.sun.media.sound.SoftMixingMixer java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/media/sound/SoftMixingMixer;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public void open();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingMixer this
         0: .line 335
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingMixer.isOpen:()Z
            ifeq 3
         1: .line 336
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingMixer.implicitOpen:Z
         2: .line 337
            return
         3: .line 339
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            invokevirtual com.sun.media.sound.SoftMixingMixer.open:(Ljavax/sound/sampled/SourceDataLine;)V
         4: .line 340
            return
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/media/sound/SoftMixingMixer;
    Exceptions:
      throws javax.sound.sampled.LineUnavailableException

  public void open(javax.sound.sampled.SourceDataLine);
    descriptor: (Ljavax/sound/sampled/SourceDataLine;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=20, args_size=2
        start local 0 // com.sun.media.sound.SoftMixingMixer this
        start local 1 // javax.sound.sampled.SourceDataLine line
         0: .line 343
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingMixer.isOpen:()Z
            ifeq 3
         1: .line 344
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingMixer.implicitOpen:Z
         2: .line 345
            return
         3: .line 347
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.control_mutex:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         4: .line 351
            aload 1 /* line */
            ifnull 6
         5: .line 352
            aload 0 /* this */
            aload 1 /* line */
            invokeinterface javax.sound.sampled.SourceDataLine.getFormat:()Ljavax/sound/sampled/AudioFormat;
            putfield com.sun.media.sound.SoftMixingMixer.format:Ljavax/sound/sampled/AudioFormat;
         6: .line 354
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingMixer.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual com.sun.media.sound.SoftMixingMixer.openStream:(Ljavax/sound/sampled/AudioFormat;)Ljavax/sound/sampled/AudioInputStream;
            astore 3 /* ais */
        start local 3 // javax.sound.sampled.AudioInputStream ais
         7: .line 356
            aload 1 /* line */
            ifnonnull 77
         8: .line 357
            getstatic com.sun.media.sound.SoftMixingMixerProvider.mutex:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
         9: .line 359
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
        10: .line 358
            putstatic com.sun.media.sound.SoftMixingMixerProvider.lockthread:Ljava/lang/Thread;
        11: .line 357
            aload 4
            monitorexit
        12: goto 15
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.SourceDataLine java.lang.Object javax.sound.sampled.AudioInputStream java.lang.Object
      StackMap stack: java.lang.Throwable
        13: aload 4
            monitorexit
        14: athrow
        15: .line 363
      StackMap locals:
      StackMap stack:
            aconst_null
            invokestatic javax.sound.sampled.AudioSystem.getMixer:(Ljavax/sound/sampled/Mixer$Info;)Ljavax/sound/sampled/Mixer;
            astore 4 /* defaultmixer */
        start local 4 // javax.sound.sampled.Mixer defaultmixer
        16: .line 364
            aload 4 /* defaultmixer */
            ifnull 56
        17: .line 368
            aconst_null
            astore 5 /* idealinfo */
        start local 5 // javax.sound.sampled.DataLine$Info idealinfo
        18: .line 369
            aconst_null
            astore 6 /* idealformat */
        start local 6 // javax.sound.sampled.AudioFormat idealformat
        19: .line 371
            aload 4 /* defaultmixer */
            invokeinterface javax.sound.sampled.Mixer.getSourceLineInfo:()[Ljavax/sound/sampled/Line$Info;
            astore 7 /* lineinfos */
        start local 7 // javax.sound.sampled.Line$Info[] lineinfos
        20: .line 373
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        21: goto 52
        22: .line 374
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.SourceDataLine java.lang.Object javax.sound.sampled.AudioInputStream javax.sound.sampled.Mixer javax.sound.sampled.DataLine$Info javax.sound.sampled.AudioFormat javax.sound.sampled.Line$Info[] int
      StackMap stack:
            aload 7 /* lineinfos */
            iload 8 /* i */
            aaload
            invokevirtual javax.sound.sampled.Line$Info.getLineClass:()Ljava/lang/Class;
            ldc Ljavax/sound/sampled/SourceDataLine;
            if_acmpne 51
        23: .line 376
            aload 7 /* lineinfos */
            iload 8 /* i */
            aaload
            checkcast javax.sound.sampled.DataLine$Info
            astore 9 /* info */
        start local 9 // javax.sound.sampled.DataLine$Info info
        24: .line 377
            aload 9 /* info */
            invokevirtual javax.sound.sampled.DataLine$Info.getFormats:()[Ljavax/sound/sampled/AudioFormat;
            astore 10 /* formats */
        start local 10 // javax.sound.sampled.AudioFormat[] formats
        25: .line 378
            iconst_0
            istore 11 /* j */
        start local 11 // int j
        26: goto 50
        27: .line 379
      StackMap locals: javax.sound.sampled.DataLine$Info javax.sound.sampled.AudioFormat[] int
      StackMap stack:
            aload 10 /* formats */
            iload 11 /* j */
            aaload
            astore 12 /* format */
        start local 12 // javax.sound.sampled.AudioFormat format
        28: .line 380
            aload 12 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
            iconst_2
            if_icmpeq 30
        29: .line 381
            aload 12 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
            iconst_m1
            if_icmpne 49
        30: .line 382
      StackMap locals: javax.sound.sampled.AudioFormat
      StackMap stack:
            aload 12 /* 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 32
        31: .line 383
            aload 12 /* 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
            ifeq 49
        32: .line 384
      StackMap locals:
      StackMap stack:
            aload 12 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getSampleRate:()F
            ldc -1.0
            fcmpl
            ifeq 34
        33: .line 385
            aload 12 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getSampleRate:()F
            f2d
            ldc 48000.0
            dcmpl
            ifne 49
        34: .line 386
      StackMap locals:
      StackMap stack:
            aload 12 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getSampleSizeInBits:()I
            iconst_m1
            if_icmpeq 36
        35: .line 387
            aload 12 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getSampleSizeInBits:()I
            bipush 16
            if_icmpne 49
        36: .line 389
      StackMap locals:
      StackMap stack:
            aload 9 /* info */
            astore 5 /* idealinfo */
        37: .line 390
            aload 12 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getChannels:()I
            istore 13 /* ideal_channels */
        start local 13 // int ideal_channels
        38: .line 391
            aload 12 /* 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
            istore 14 /* ideal_signed */
        start local 14 // boolean ideal_signed
        39: .line 392
            aload 12 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getSampleRate:()F
            fstore 15 /* ideal_rate */
        start local 15 // float ideal_rate
        40: .line 393
            aload 12 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.isBigEndian:()Z
            istore 16 /* ideal_endian */
        start local 16 // boolean ideal_endian
        41: .line 394
            aload 12 /* format */
            invokevirtual javax.sound.sampled.AudioFormat.getSampleSizeInBits:()I
            istore 17 /* ideal_bits */
        start local 17 // int ideal_bits
        42: .line 395
            iload 17 /* ideal_bits */
            iconst_m1
            if_icmpne 43
            bipush 16
            istore 17 /* ideal_bits */
        43: .line 396
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.SourceDataLine java.lang.Object javax.sound.sampled.AudioInputStream javax.sound.sampled.Mixer javax.sound.sampled.DataLine$Info javax.sound.sampled.AudioFormat javax.sound.sampled.Line$Info[] int javax.sound.sampled.DataLine$Info javax.sound.sampled.AudioFormat[] int javax.sound.sampled.AudioFormat int int float int int
      StackMap stack:
            iload 13 /* ideal_channels */
            iconst_m1
            if_icmpne 44
            iconst_2
            istore 13 /* ideal_channels */
        44: .line 397
      StackMap locals:
      StackMap stack:
            fload 15 /* ideal_rate */
            ldc -1.0
            fcmpl
            ifne 45
            ldc 48000.0
            fstore 15 /* ideal_rate */
        45: .line 398
      StackMap locals:
      StackMap stack:
            new javax.sound.sampled.AudioFormat
            dup
            fload 15 /* ideal_rate */
            iload 17 /* ideal_bits */
        46: .line 399
            iload 13 /* ideal_channels */
            iload 14 /* ideal_signed */
            iload 16 /* ideal_endian */
        47: .line 398
            invokespecial javax.sound.sampled.AudioFormat.<init>:(FIIZZ)V
            astore 6 /* idealformat */
        48: .line 400
            goto 53
        end local 17 // int ideal_bits
        end local 16 // boolean ideal_endian
        end local 15 // float ideal_rate
        end local 14 // boolean ideal_signed
        end local 13 // int ideal_channels
        end local 12 // javax.sound.sampled.AudioFormat format
        49: .line 378
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.SourceDataLine java.lang.Object javax.sound.sampled.AudioInputStream javax.sound.sampled.Mixer javax.sound.sampled.DataLine$Info javax.sound.sampled.AudioFormat javax.sound.sampled.Line$Info[] int javax.sound.sampled.DataLine$Info javax.sound.sampled.AudioFormat[] int
      StackMap stack:
            iinc 11 /* j */ 1
      StackMap locals:
      StackMap stack:
        50: iload 11 /* j */
            aload 10 /* formats */
            arraylength
            if_icmplt 27
        end local 11 // int j
        end local 10 // javax.sound.sampled.AudioFormat[] formats
        end local 9 // javax.sound.sampled.DataLine$Info info
        51: .line 373
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        52: iload 8 /* i */
            aload 7 /* lineinfos */
            arraylength
            if_icmplt 22
        end local 8 // int i
        53: .line 406
      StackMap locals:
      StackMap stack:
            aload 6 /* idealformat */
            ifnull 56
        54: .line 408
            aload 0 /* this */
            aload 6 /* idealformat */
            putfield com.sun.media.sound.SoftMixingMixer.format:Ljavax/sound/sampled/AudioFormat;
        55: .line 409
            aload 4 /* defaultmixer */
            aload 5 /* idealinfo */
            invokeinterface javax.sound.sampled.Mixer.getLine:(Ljavax/sound/sampled/Line$Info;)Ljavax/sound/sampled/Line;
            checkcast javax.sound.sampled.SourceDataLine
            astore 1 /* line */
        end local 7 // javax.sound.sampled.Line$Info[] lineinfos
        end local 6 // javax.sound.sampled.AudioFormat idealformat
        end local 5 // javax.sound.sampled.DataLine$Info idealinfo
        56: .line 413
      StackMap locals:
      StackMap stack:
            aload 1 /* line */
            ifnonnull 67
        57: .line 414
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.format:Ljavax/sound/sampled/AudioFormat;
            invokestatic javax.sound.sampled.AudioSystem.getSourceDataLine:(Ljavax/sound/sampled/AudioFormat;)Ljavax/sound/sampled/SourceDataLine;
            astore 1 /* line */
        end local 4 // javax.sound.sampled.Mixer defaultmixer
        58: .line 415
            goto 67
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.SourceDataLine java.lang.Object javax.sound.sampled.AudioInputStream
      StackMap stack: java.lang.Throwable
        59: astore 18
        60: .line 416
            getstatic com.sun.media.sound.SoftMixingMixerProvider.mutex:Ljava/lang/Object;
            dup
            astore 19
            monitorenter
        61: .line 417
            aconst_null
            putstatic com.sun.media.sound.SoftMixingMixerProvider.lockthread:Ljava/lang/Thread;
        62: .line 416
            aload 19
            monitorexit
        63: goto 66
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.SourceDataLine java.lang.Object javax.sound.sampled.AudioInputStream top top top top top top top top top top top top top top java.lang.Throwable java.lang.Object
      StackMap stack: java.lang.Throwable
        64: aload 19
            monitorexit
        65: athrow
        66: .line 419
      StackMap locals:
      StackMap stack:
            aload 18
            athrow
        67: .line 416
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.SourceDataLine java.lang.Object javax.sound.sampled.AudioInputStream
      StackMap stack:
            getstatic com.sun.media.sound.SoftMixingMixerProvider.mutex:Ljava/lang/Object;
            dup
            astore 19
            monitorenter
        68: .line 417
            aconst_null
            putstatic com.sun.media.sound.SoftMixingMixerProvider.lockthread:Ljava/lang/Thread;
        69: .line 416
            aload 19
            monitorexit
        70: goto 73
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.SourceDataLine java.lang.Object javax.sound.sampled.AudioInputStream top top top top top top top top top top top top top top top java.lang.Object
      StackMap stack: java.lang.Throwable
        71: aload 19
            monitorexit
        72: athrow
        73: .line 421
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.SourceDataLine java.lang.Object javax.sound.sampled.AudioInputStream
      StackMap stack:
            aload 1 /* line */
            ifnonnull 77
        74: .line 422
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "No line matching "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        75: .line 423
            getstatic com.sun.media.sound.SoftMixingMixer.info:Ljavax/sound/sampled/Mixer$Info;
            invokevirtual javax.sound.sampled.Mixer$Info.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " is supported."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        76: .line 422
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        77: .line 426
      StackMap locals:
      StackMap stack:
            ldc 100000.0
            dstore 4 /* latency */
        start local 4 // double latency
        78: .line 428
            aload 1 /* line */
            invokeinterface javax.sound.sampled.SourceDataLine.isOpen:()Z
            ifne 84
        79: .line 429
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingMixer.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
        80: .line 430
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingMixer.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getFrameRate:()F
            f2d
            dload 4 /* latency */
            ldc 1000000.0
            ddiv
            dmul
            d2i
        81: .line 429
            imul
            istore 6 /* bufferSize */
        start local 6 // int bufferSize
        82: .line 431
            aload 1 /* line */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingMixer.getFormat:()Ljavax/sound/sampled/AudioFormat;
            iload 6 /* bufferSize */
            invokeinterface javax.sound.sampled.SourceDataLine.open:(Ljavax/sound/sampled/AudioFormat;I)V
        83: .line 435
            aload 0 /* this */
            aload 1 /* line */
            putfield com.sun.media.sound.SoftMixingMixer.sourceDataLine:Ljavax/sound/sampled/SourceDataLine;
        end local 6 // int bufferSize
        84: .line 437
      StackMap locals: double
      StackMap stack:
            aload 1 /* line */
            invokeinterface javax.sound.sampled.SourceDataLine.isActive:()Z
            ifne 86
        85: .line 438
            aload 1 /* line */
            invokeinterface javax.sound.sampled.SourceDataLine.start:()V
        86: .line 440
      StackMap locals:
      StackMap stack:
            sipush 512
            istore 6 /* controlbuffersize */
        start local 6 // int controlbuffersize
        87: .line 442
            aload 3 /* ais */
            invokevirtual javax.sound.sampled.AudioInputStream.available:()I
            istore 6 /* controlbuffersize */
        88: .line 443
            goto 90
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.SourceDataLine java.lang.Object javax.sound.sampled.AudioInputStream double int
      StackMap stack: java.io.IOException
        89: pop
        90: .line 452
      StackMap locals:
      StackMap stack:
            aload 1 /* line */
            invokeinterface javax.sound.sampled.SourceDataLine.getBufferSize:()I
            istore 7 /* buffersize */
        start local 7 // int buffersize
        91: .line 453
            iload 7 /* buffersize */
            iload 7 /* buffersize */
            iload 6 /* controlbuffersize */
            irem
            isub
            istore 7 /* buffersize */
        92: .line 455
            iload 7 /* buffersize */
            iconst_3
            iload 6 /* controlbuffersize */
            imul
            if_icmpge 94
        93: .line 456
            iconst_3
            iload 6 /* controlbuffersize */
            imul
            istore 7 /* buffersize */
        94: .line 462
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            new com.sun.media.sound.SoftAudioPusher
            dup
            aload 1 /* line */
            aload 3 /* ais */
            iload 6 /* controlbuffersize */
            invokespecial com.sun.media.sound.SoftAudioPusher.<init>:(Ljavax/sound/sampled/SourceDataLine;Ljavax/sound/sampled/AudioInputStream;I)V
            putfield com.sun.media.sound.SoftMixingMixer.pusher:Lcom/sun/media/sound/SoftAudioPusher;
        95: .line 463
            aload 0 /* this */
            aload 3 /* ais */
            putfield com.sun.media.sound.SoftMixingMixer.pusher_stream:Ljavax/sound/sampled/AudioInputStream;
        96: .line 464
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.pusher:Lcom/sun/media/sound/SoftAudioPusher;
            invokevirtual com.sun.media.sound.SoftAudioPusher.start:()V
        end local 7 // int buffersize
        end local 6 // int controlbuffersize
        end local 4 // double latency
        end local 3 // javax.sound.sampled.AudioInputStream ais
        97: .line 466
            goto 102
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.SourceDataLine java.lang.Object
      StackMap stack: javax.sound.sampled.LineUnavailableException
        98: astore 3 /* e */
        start local 3 // javax.sound.sampled.LineUnavailableException e
        99: .line 467
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingMixer.isOpen:()Z
            ifeq 101
       100: .line 468
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingMixer.close:()V
       101: .line 469
      StackMap locals: javax.sound.sampled.LineUnavailableException
      StackMap stack:
            new javax.sound.sampled.LineUnavailableException
            dup
            aload 3 /* e */
            invokevirtual javax.sound.sampled.LineUnavailableException.toString:()Ljava/lang/String;
            invokespecial javax.sound.sampled.LineUnavailableException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // javax.sound.sampled.LineUnavailableException e
       102: .line 347
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
       103: goto 106
      StackMap locals:
      StackMap stack: java.lang.Throwable
       104: aload 2
            monitorexit
       105: athrow
       106: .line 473
      StackMap locals:
      StackMap stack:
            return
        end local 1 // javax.sound.sampled.SourceDataLine line
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0  107     0               this  Lcom/sun/media/sound/SoftMixingMixer;
            0  107     1               line  Ljavax/sound/sampled/SourceDataLine;
            7   97     3                ais  Ljavax/sound/sampled/AudioInputStream;
           16   58     4       defaultmixer  Ljavax/sound/sampled/Mixer;
           18   56     5          idealinfo  Ljavax/sound/sampled/DataLine$Info;
           19   56     6        idealformat  Ljavax/sound/sampled/AudioFormat;
           20   56     7          lineinfos  [Ljavax/sound/sampled/Line$Info;
           21   53     8                  i  I
           24   51     9               info  Ljavax/sound/sampled/DataLine$Info;
           25   51    10            formats  [Ljavax/sound/sampled/AudioFormat;
           26   51    11                  j  I
           28   49    12             format  Ljavax/sound/sampled/AudioFormat;
           38   49    13     ideal_channels  I
           39   49    14       ideal_signed  Z
           40   49    15         ideal_rate  F
           41   49    16       ideal_endian  Z
           42   49    17         ideal_bits  I
           78   97     4            latency  D
           82   84     6         bufferSize  I
           87   97     6  controlbuffersize  I
           91   97     7         buffersize  I
           99  102     3                  e  Ljavax/sound/sampled/LineUnavailableException;
      Exception table:
        from    to  target  type
           9    12      13  any
          13    14      13  any
          15    59      59  any
          61    63      64  any
          64    65      64  any
          68    70      71  any
          71    72      71  any
          87    88      89  Class java.io.IOException
           4    97      98  Class javax.sound.sampled.LineUnavailableException
           4   103     104  any
         104   105     104  any
    Exceptions:
      throws javax.sound.sampled.LineUnavailableException
    MethodParameters:
      Name  Flags
      line  

  public javax.sound.sampled.AudioInputStream openStream(javax.sound.sampled.AudioFormat);
    descriptor: (Ljavax/sound/sampled/AudioFormat;)Ljavax/sound/sampled/AudioInputStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // com.sun.media.sound.SoftMixingMixer this
        start local 1 // javax.sound.sampled.AudioFormat targetFormat
         0: .line 478
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingMixer.isOpen:()Z
            ifeq 2
         1: .line 479
            new javax.sound.sampled.LineUnavailableException
            dup
            ldc "Mixer is already open"
            invokespecial javax.sound.sampled.LineUnavailableException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 481
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.control_mutex:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         3: .line 483
            aload 0 /* this */
            iconst_1
            putfield com.sun.media.sound.SoftMixingMixer.open:Z
         4: .line 485
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.SoftMixingMixer.implicitOpen:Z
         5: .line 487
            aload 1 /* targetFormat */
            ifnull 7
         6: .line 488
            aload 0 /* this */
            aload 1 /* targetFormat */
            putfield com.sun.media.sound.SoftMixingMixer.format:Ljavax/sound/sampled/AudioFormat;
         7: .line 490
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            new com.sun.media.sound.SoftMixingMainMixer
            dup
            aload 0 /* this */
            invokespecial com.sun.media.sound.SoftMixingMainMixer.<init>:(Lcom/sun/media/sound/SoftMixingMixer;)V
            putfield com.sun.media.sound.SoftMixingMixer.mainmixer:Lcom/sun/media/sound/SoftMixingMainMixer;
         8: .line 492
            aload 0 /* this */
            new javax.sound.sampled.LineEvent
            dup
            aload 0 /* this */
            getstatic javax.sound.sampled.LineEvent$Type.OPEN:Ljavax/sound/sampled/LineEvent$Type;
         9: .line 493
            ldc -1
            invokespecial javax.sound.sampled.LineEvent.<init>:(Ljavax/sound/sampled/Line;Ljavax/sound/sampled/LineEvent$Type;J)V
        10: .line 492
            invokevirtual com.sun.media.sound.SoftMixingMixer.sendEvent:(Ljavax/sound/sampled/LineEvent;)V
        11: .line 495
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.mainmixer:Lcom/sun/media/sound/SoftMixingMainMixer;
            invokevirtual com.sun.media.sound.SoftMixingMainMixer.getInputStream:()Ljavax/sound/sampled/AudioInputStream;
            aload 2
            monitorexit
        12: areturn
        13: .line 481
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 2
            monitorexit
        14: athrow
        end local 1 // javax.sound.sampled.AudioFormat targetFormat
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0          this  Lcom/sun/media/sound/SoftMixingMixer;
            0   15     1  targetFormat  Ljavax/sound/sampled/AudioFormat;
      Exception table:
        from    to  target  type
           3    12      13  any
          13    14      13  any
    Exceptions:
      throws javax.sound.sampled.LineUnavailableException
    MethodParameters:
              Name  Flags
      targetFormat  

  public void removeLineListener(javax.sound.sampled.LineListener);
    descriptor: (Ljavax/sound/sampled/LineListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.sun.media.sound.SoftMixingMixer this
        start local 1 // javax.sound.sampled.LineListener listener
         0: .line 502
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.control_mutex:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 503
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.listeners:Ljava/util/List;
            aload 1 /* listener */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
         2: .line 502
            aload 2
            monitorexit
         3: goto 6
      StackMap locals: com.sun.media.sound.SoftMixingMixer javax.sound.sampled.LineListener java.lang.Object
      StackMap stack: java.lang.Throwable
         4: aload 2
            monitorexit
         5: athrow
         6: .line 505
      StackMap locals:
      StackMap stack:
            return
        end local 1 // javax.sound.sampled.LineListener listener
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lcom/sun/media/sound/SoftMixingMixer;
            0    7     1  listener  Ljavax/sound/sampled/LineListener;
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any
    MethodParameters:
          Name  Flags
      listener  

  public long getLatency();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingMixer this
         0: .line 508
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.control_mutex:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 509
            aload 1
            monitorexit
         2: ldc 100000
            lreturn
         3: .line 508
      StackMap locals: com.sun.media.sound.SoftMixingMixer java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/media/sound/SoftMixingMixer;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public javax.sound.sampled.AudioFormat getFormat();
    descriptor: ()Ljavax/sound/sampled/AudioFormat;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingMixer this
         0: .line 514
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.control_mutex:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 515
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.format:Ljavax/sound/sampled/AudioFormat;
            aload 1
            monitorexit
         2: areturn
         3: .line 514
      StackMap locals: com.sun.media.sound.SoftMixingMixer java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/sun/media/sound/SoftMixingMixer;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  float getControlRate();
    descriptor: ()F
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingMixer this
         0: .line 520
            ldc 147.0
            freturn
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/SoftMixingMixer;

  com.sun.media.sound.SoftMixingMainMixer getMainMixer();
    descriptor: ()Lcom/sun/media/sound/SoftMixingMainMixer;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.SoftMixingMixer this
         0: .line 524
            aload 0 /* this */
            invokevirtual com.sun.media.sound.SoftMixingMixer.isOpen:()Z
            ifne 2
         1: .line 525
            aconst_null
            areturn
         2: .line 526
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.SoftMixingMixer.mainmixer:Lcom/sun/media/sound/SoftMixingMainMixer;
            areturn
        end local 0 // com.sun.media.sound.SoftMixingMixer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/sun/media/sound/SoftMixingMixer;
}
SourceFile: "SoftMixingMixer.java"
NestMembers:
  com.sun.media.sound.SoftMixingMixer$Info
InnerClasses:
  private Info = com.sun.media.sound.SoftMixingMixer$Info of com.sun.media.sound.SoftMixingMixer
  public Encoding = javax.sound.sampled.AudioFormat$Encoding of javax.sound.sampled.AudioFormat
  public Type = javax.sound.sampled.Control$Type of javax.sound.sampled.Control
  public Info = javax.sound.sampled.DataLine$Info of javax.sound.sampled.DataLine
  public Info = javax.sound.sampled.Line$Info of javax.sound.sampled.Line
  public Type = javax.sound.sampled.LineEvent$Type of javax.sound.sampled.LineEvent
  public Info = javax.sound.sampled.Mixer$Info of javax.sound.sampled.Mixer