public abstract class com.sun.media.sound.ModelInstrument extends javax.sound.midi.Instrument
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.sun.media.sound.ModelInstrument
  super_class: javax.sound.midi.Instrument
{
  protected void <init>(javax.sound.midi.Soundbank, javax.sound.midi.Patch, java.lang.String, java.lang.Class<?>);
    descriptor: (Ljavax/sound/midi/Soundbank;Ljavax/sound/midi/Patch;Ljava/lang/String;Ljava/lang/Class;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.sun.media.sound.ModelInstrument this
        start local 1 // javax.sound.midi.Soundbank soundbank
        start local 2 // javax.sound.midi.Patch patch
        start local 3 // java.lang.String name
        start local 4 // java.lang.Class dataClass
         0: .line 54
            aload 0 /* this */
            aload 1 /* soundbank */
            aload 2 /* patch */
            aload 3 /* name */
            aload 4 /* dataClass */
            invokespecial javax.sound.midi.Instrument.<init>:(Ljavax/sound/midi/Soundbank;Ljavax/sound/midi/Patch;Ljava/lang/String;Ljava/lang/Class;)V
         1: .line 55
            return
        end local 4 // java.lang.Class dataClass
        end local 3 // java.lang.String name
        end local 2 // javax.sound.midi.Patch patch
        end local 1 // javax.sound.midi.Soundbank soundbank
        end local 0 // com.sun.media.sound.ModelInstrument this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/sun/media/sound/ModelInstrument;
            0    2     1  soundbank  Ljavax/sound/midi/Soundbank;
            0    2     2      patch  Ljavax/sound/midi/Patch;
            0    2     3       name  Ljava/lang/String;
            0    2     4  dataClass  Ljava/lang/Class<*>;
    Signature: (Ljavax/sound/midi/Soundbank;Ljavax/sound/midi/Patch;Ljava/lang/String;Ljava/lang/Class<*>;)V
    MethodParameters:
           Name  Flags
      soundbank  
      patch      
      name       
      dataClass  

  public com.sun.media.sound.ModelDirector getDirector(com.sun.media.sound.ModelPerformer[], javax.sound.midi.MidiChannel, com.sun.media.sound.ModelDirectedPlayer);
    descriptor: ([Lcom/sun/media/sound/ModelPerformer;Ljavax/sound/midi/MidiChannel;Lcom/sun/media/sound/ModelDirectedPlayer;)Lcom/sun/media/sound/ModelDirector;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.sun.media.sound.ModelInstrument this
        start local 1 // com.sun.media.sound.ModelPerformer[] performers
        start local 2 // javax.sound.midi.MidiChannel channel
        start local 3 // com.sun.media.sound.ModelDirectedPlayer player
         0: .line 59
            new com.sun.media.sound.ModelStandardIndexedDirector
            dup
            aload 1 /* performers */
            aload 3 /* player */
            invokespecial com.sun.media.sound.ModelStandardIndexedDirector.<init>:([Lcom/sun/media/sound/ModelPerformer;Lcom/sun/media/sound/ModelDirectedPlayer;)V
            areturn
        end local 3 // com.sun.media.sound.ModelDirectedPlayer player
        end local 2 // javax.sound.midi.MidiChannel channel
        end local 1 // com.sun.media.sound.ModelPerformer[] performers
        end local 0 // com.sun.media.sound.ModelInstrument this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/sun/media/sound/ModelInstrument;
            0    1     1  performers  [Lcom/sun/media/sound/ModelPerformer;
            0    1     2     channel  Ljavax/sound/midi/MidiChannel;
            0    1     3      player  Lcom/sun/media/sound/ModelDirectedPlayer;
    MethodParameters:
            Name  Flags
      performers  
      channel     
      player      

  public com.sun.media.sound.ModelPerformer[] getPerformers();
    descriptor: ()[Lcom/sun/media/sound/ModelPerformer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.media.sound.ModelInstrument this
         0: .line 63
            iconst_0
            anewarray com.sun.media.sound.ModelPerformer
            areturn
        end local 0 // com.sun.media.sound.ModelInstrument this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/media/sound/ModelInstrument;

  public com.sun.media.sound.ModelChannelMixer getChannelMixer(javax.sound.midi.MidiChannel, javax.sound.sampled.AudioFormat);
    descriptor: (Ljavax/sound/midi/MidiChannel;Ljavax/sound/sampled/AudioFormat;)Lcom/sun/media/sound/ModelChannelMixer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // com.sun.media.sound.ModelInstrument this
        start local 1 // javax.sound.midi.MidiChannel channel
        start local 2 // javax.sound.sampled.AudioFormat format
         0: .line 68
            aconst_null
            areturn
        end local 2 // javax.sound.sampled.AudioFormat format
        end local 1 // javax.sound.midi.MidiChannel channel
        end local 0 // com.sun.media.sound.ModelInstrument this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/sun/media/sound/ModelInstrument;
            0    1     1  channel  Ljavax/sound/midi/MidiChannel;
            0    1     2   format  Ljavax/sound/sampled/AudioFormat;
    MethodParameters:
         Name  Flags
      channel  
      format   

  public final javax.sound.midi.Patch getPatchAlias();
    descriptor: ()Ljavax/sound/midi/Patch;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // com.sun.media.sound.ModelInstrument this
         0: .line 73
            aload 0 /* this */
            invokevirtual com.sun.media.sound.ModelInstrument.getPatch:()Ljavax/sound/midi/Patch;
            astore 1 /* patch */
        start local 1 // javax.sound.midi.Patch patch
         1: .line 74
            aload 1 /* patch */
            invokevirtual javax.sound.midi.Patch.getProgram:()I
            istore 2 /* program */
        start local 2 // int program
         2: .line 75
            aload 1 /* patch */
            invokevirtual javax.sound.midi.Patch.getBank:()I
            istore 3 /* bank */
        start local 3 // int bank
         3: .line 76
            iload 3 /* bank */
            ifeq 5
         4: .line 77
            aload 1 /* patch */
            areturn
         5: .line 78
      StackMap locals: javax.sound.midi.Patch int int
      StackMap stack:
            iconst_0
            istore 4 /* percussion */
        start local 4 // boolean percussion
         6: .line 79
            aload 0 /* this */
            invokevirtual com.sun.media.sound.ModelInstrument.getPatch:()Ljavax/sound/midi/Patch;
            instanceof com.sun.media.sound.ModelPatch
            ifeq 8
         7: .line 80
            aload 0 /* this */
            invokevirtual com.sun.media.sound.ModelInstrument.getPatch:()Ljavax/sound/midi/Patch;
            checkcast com.sun.media.sound.ModelPatch
            invokevirtual com.sun.media.sound.ModelPatch.isPercussion:()Z
            istore 4 /* percussion */
         8: .line 81
      StackMap locals: int
      StackMap stack:
            iload 4 /* percussion */
            ifeq 10
         9: .line 82
            new javax.sound.midi.Patch
            dup
            sipush 15360
            iload 2 /* program */
            invokespecial javax.sound.midi.Patch.<init>:(II)V
            areturn
        10: .line 84
      StackMap locals:
      StackMap stack:
            new javax.sound.midi.Patch
            dup
            sipush 15488
            iload 2 /* program */
            invokespecial javax.sound.midi.Patch.<init>:(II)V
            areturn
        end local 4 // boolean percussion
        end local 3 // int bank
        end local 2 // int program
        end local 1 // javax.sound.midi.Patch patch
        end local 0 // com.sun.media.sound.ModelInstrument this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Lcom/sun/media/sound/ModelInstrument;
            1   11     1       patch  Ljavax/sound/midi/Patch;
            2   11     2     program  I
            3   11     3        bank  I
            6   11     4  percussion  Z

  public final java.lang.String[] getKeys();
    descriptor: ()[Ljava/lang/String;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=8, args_size=1
        start local 0 // com.sun.media.sound.ModelInstrument this
         0: .line 91
            sipush 128
            anewarray java.lang.String
            astore 1 /* keys */
        start local 1 // java.lang.String[] keys
         1: .line 92
            aload 0 /* this */
            invokevirtual com.sun.media.sound.ModelInstrument.getPerformers:()[Lcom/sun/media/sound/ModelPerformer;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 13
      StackMap locals: com.sun.media.sound.ModelInstrument java.lang.String[] top int int com.sun.media.sound.ModelPerformer[]
      StackMap stack:
         2: aload 5
            iload 3
            aaload
            astore 2 /* performer */
        start local 2 // com.sun.media.sound.ModelPerformer performer
         3: .line 93
            aload 2 /* performer */
            invokevirtual com.sun.media.sound.ModelPerformer.getKeyFrom:()I
            istore 6 /* k */
        start local 6 // int k
         4: goto 11
         5: .line 94
      StackMap locals: com.sun.media.sound.ModelInstrument java.lang.String[] com.sun.media.sound.ModelPerformer int int com.sun.media.sound.ModelPerformer[] int
      StackMap stack:
            iload 6 /* k */
            iflt 10
            iload 6 /* k */
            sipush 128
            if_icmpge 10
            aload 1 /* keys */
            iload 6 /* k */
            aaload
            ifnonnull 10
         6: .line 95
            aload 2 /* performer */
            invokevirtual com.sun.media.sound.ModelPerformer.getName:()Ljava/lang/String;
            astore 7 /* name */
        start local 7 // java.lang.String name
         7: .line 96
            aload 7 /* name */
            ifnonnull 9
         8: .line 97
            ldc "untitled"
            astore 7 /* name */
         9: .line 98
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* keys */
            iload 6 /* k */
            aload 7 /* name */
            aastore
        end local 7 // java.lang.String name
        10: .line 93
      StackMap locals:
      StackMap stack:
            iinc 6 /* k */ 1
      StackMap locals:
      StackMap stack:
        11: iload 6 /* k */
            aload 2 /* performer */
            invokevirtual com.sun.media.sound.ModelPerformer.getKeyTo:()I
            if_icmple 5
        end local 6 // int k
        end local 2 // com.sun.media.sound.ModelPerformer performer
        12: .line 92
            iinc 3 1
      StackMap locals: com.sun.media.sound.ModelInstrument java.lang.String[] top int int com.sun.media.sound.ModelPerformer[]
      StackMap stack:
        13: iload 3
            iload 4
            if_icmplt 2
        14: .line 102
            aload 1 /* keys */
            areturn
        end local 1 // java.lang.String[] keys
        end local 0 // com.sun.media.sound.ModelInstrument this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   15     0       this  Lcom/sun/media/sound/ModelInstrument;
            1   15     1       keys  [Ljava/lang/String;
            3   12     2  performer  Lcom/sun/media/sound/ModelPerformer;
            4   12     6          k  I
            7   10     7       name  Ljava/lang/String;

  public final boolean[] getChannels();
    descriptor: ()[Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // com.sun.media.sound.ModelInstrument this
         0: .line 108
            iconst_0
            istore 1 /* percussion */
        start local 1 // boolean percussion
         1: .line 109
            aload 0 /* this */
            invokevirtual com.sun.media.sound.ModelInstrument.getPatch:()Ljavax/sound/midi/Patch;
            instanceof com.sun.media.sound.ModelPatch
            ifeq 3
         2: .line 110
            aload 0 /* this */
            invokevirtual com.sun.media.sound.ModelInstrument.getPatch:()Ljavax/sound/midi/Patch;
            checkcast com.sun.media.sound.ModelPatch
            invokevirtual com.sun.media.sound.ModelPatch.isPercussion:()Z
            istore 1 /* percussion */
         3: .line 113
      StackMap locals: int
      StackMap stack:
            iload 1 /* percussion */
            ifeq 12
         4: .line 114
            bipush 16
            newarray 4
            astore 2 /* ch */
        start local 2 // boolean[] ch
         5: .line 115
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         6: goto 9
         7: .line 116
      StackMap locals: boolean[] int
      StackMap stack:
            aload 2 /* ch */
            iload 3 /* i */
            iconst_0
            bastore
         8: .line 115
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 3 /* i */
            aload 2 /* ch */
            arraylength
            if_icmplt 7
        end local 3 // int i
        10: .line 117
            aload 2 /* ch */
            bipush 9
            iconst_1
            bastore
        11: .line 118
            aload 2 /* ch */
            areturn
        end local 2 // boolean[] ch
        12: .line 122
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.media.sound.ModelInstrument.getPatch:()Ljavax/sound/midi/Patch;
            invokevirtual javax.sound.midi.Patch.getBank:()I
            istore 2 /* bank */
        start local 2 // int bank
        13: .line 123
            iload 2 /* bank */
            bipush 7
            ishr
            bipush 120
            if_icmpeq 14
            iload 2 /* bank */
            bipush 7
            ishr
            bipush 121
            if_icmpne 21
        14: .line 124
      StackMap locals: int
      StackMap stack:
            bipush 16
            newarray 4
            astore 3 /* ch */
        start local 3 // boolean[] ch
        15: .line 125
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        16: goto 19
        17: .line 126
      StackMap locals: boolean[] int
      StackMap stack:
            aload 3 /* ch */
            iload 4 /* i */
            iconst_1
            bastore
        18: .line 125
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        19: iload 4 /* i */
            aload 3 /* ch */
            arraylength
            if_icmplt 17
        end local 4 // int i
        20: .line 127
            aload 3 /* ch */
            areturn
        end local 3 // boolean[] ch
        21: .line 130
      StackMap locals:
      StackMap stack:
            bipush 16
            newarray 4
            astore 3 /* ch */
        start local 3 // boolean[] ch
        22: .line 131
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        23: goto 26
        24: .line 132
      StackMap locals: boolean[] int
      StackMap stack:
            aload 3 /* ch */
            iload 4 /* i */
            iconst_1
            bastore
        25: .line 131
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        26: iload 4 /* i */
            aload 3 /* ch */
            arraylength
            if_icmplt 24
        end local 4 // int i
        27: .line 133
            aload 3 /* ch */
            bipush 9
            iconst_0
            bastore
        28: .line 134
            aload 3 /* ch */
            areturn
        end local 3 // boolean[] ch
        end local 2 // int bank
        end local 1 // boolean percussion
        end local 0 // com.sun.media.sound.ModelInstrument this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   29     0        this  Lcom/sun/media/sound/ModelInstrument;
            1   29     1  percussion  Z
            5   12     2          ch  [Z
            6   10     3           i  I
           13   29     2        bank  I
           15   21     3          ch  [Z
           16   20     4           i  I
           22   29     3          ch  [Z
           23   27     4           i  I
}
SourceFile: "ModelInstrument.java"