public class org.glassfish.pfl.basic.tools.argparser.ArgParser
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.glassfish.pfl.basic.tools.argparser.ArgParser
  super_class: java.lang.Object
{
  private final java.util.List<java.lang.Class<?>> interfaceClasses;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljava/lang/Class<*>;>;

  private final java.util.Map<java.lang.String, java.lang.String> helpText;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;

  private final java.util.Map<java.lang.String, java.lang.Object> defaultValues;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;

  private final java.util.Map<java.lang.String, org.glassfish.pfl.basic.tools.argparser.ElementParser> parserData;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Lorg/glassfish/pfl/basic/tools/argparser/ElementParser;>;

  public void <init>(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
        start local 1 // java.lang.Class cls
         0: .line 185
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 140
            aload 0 /* this */
         2: .line 141
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.glassfish.pfl.basic.tools.argparser.ArgParser.interfaceClasses:Ljava/util/List;
         3: .line 142
            aload 0 /* this */
         4: .line 143
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.glassfish.pfl.basic.tools.argparser.ArgParser.helpText:Ljava/util/Map;
         5: .line 144
            aload 0 /* this */
         6: .line 145
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.glassfish.pfl.basic.tools.argparser.ArgParser.defaultValues:Ljava/util/Map;
         7: .line 146
            aload 0 /* this */
         8: .line 147
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.glassfish.pfl.basic.tools.argparser.ArgParser.parserData:Ljava/util/Map;
         9: .line 186
            aload 0 /* this */
            aload 1 /* cls */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.init:(Ljava/lang/Class;)V
        10: .line 187
            return
        end local 1 // java.lang.Class cls
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;
            0   11     1   cls  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
      Name  Flags
      cls   final

  public void <init>(java.util.List<java.lang.Class<?>>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
        start local 1 // java.util.List classes
         0: .line 189
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 140
            aload 0 /* this */
         2: .line 141
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.glassfish.pfl.basic.tools.argparser.ArgParser.interfaceClasses:Ljava/util/List;
         3: .line 142
            aload 0 /* this */
         4: .line 143
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.glassfish.pfl.basic.tools.argparser.ArgParser.helpText:Ljava/util/Map;
         5: .line 144
            aload 0 /* this */
         6: .line 145
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.glassfish.pfl.basic.tools.argparser.ArgParser.defaultValues:Ljava/util/Map;
         7: .line 146
            aload 0 /* this */
         8: .line 147
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.glassfish.pfl.basic.tools.argparser.ArgParser.parserData:Ljava/util/Map;
         9: .line 190
            aload 0 /* this */
            aload 1 /* classes */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.init:(Ljava/util/List;)V
        10: .line 191
            return
        end local 1 // java.util.List classes
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   11     0     this  Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;
            0   11     1  classes  Ljava/util/List<Ljava/lang/Class<*>;>;
    Signature: (Ljava/util/List<Ljava/lang/Class<*>;>;)V
    MethodParameters:
         Name  Flags
      classes  final

  private void init(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
        start local 1 // java.lang.Class cls
         0: .line 194
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* classes */
        start local 2 // java.util.List classes
         1: .line 195
            aload 2 /* classes */
            aload 1 /* cls */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 196
            aload 0 /* this */
            aload 2 /* classes */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.init:(Ljava/util/List;)V
         3: .line 197
            return
        end local 2 // java.util.List classes
        end local 1 // java.lang.Class cls
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;
            0    4     1      cls  Ljava/lang/Class<*>;
            1    4     2  classes  Ljava/util/List<Ljava/lang/Class<*>;>;
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
      Name  Flags
      cls   final

  private void init(java.util.List<java.lang.Class<?>>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=13, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
        start local 1 // java.util.List classes
         0: .line 201
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
         1: .line 200
            astore 2 /* defaultValueData */
        start local 2 // java.util.Map defaultValueData
         2: .line 202
            aload 1 /* classes */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 23
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.util.List java.util.Map top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Class
            astore 3 /* cls */
        start local 3 // java.lang.Class cls
         4: .line 203
            aload 3 /* cls */
            invokevirtual java.lang.Class.isInterface:()Z
            ifne 6
         5: .line 204
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            aload 3 /* cls */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " is not an interface"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.error:(Ljava/lang/String;)V
         6: .line 206
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.util.List java.util.Map java.lang.Class java.util.Iterator
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.pfl.basic.tools.argparser.ArgParser.interfaceClasses:Ljava/util/List;
            aload 3 /* cls */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 214
            aload 3 /* cls */
            invokevirtual java.lang.Class.getMethods:()[Ljava/lang/reflect/Method;
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 21
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.util.List java.util.Map java.lang.Class java.util.Iterator top int int java.lang.reflect.Method[]
      StackMap stack:
         8: aload 8
            iload 6
            aaload
            astore 5 /* m */
        start local 5 // java.lang.reflect.Method m
         9: .line 215
            aload 0 /* this */
            aload 5 /* m */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.checkMethod:(Ljava/lang/reflect/Method;)Ljava/lang/String;
            astore 9 /* keyword */
        start local 9 // java.lang.String keyword
        10: .line 216
            getstatic org.glassfish.pfl.basic.tools.argparser.ElementParser.factory:Lorg/glassfish/pfl/basic/func/UnaryFunction;
            aload 5 /* m */
            invokeinterface org.glassfish.pfl.basic.func.UnaryFunction.evaluate:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.glassfish.pfl.basic.tools.argparser.ElementParser
            astore 10 /* ep */
        start local 10 // org.glassfish.pfl.basic.tools.argparser.ElementParser ep
        11: .line 217
            aload 0 /* this */
            getfield org.glassfish.pfl.basic.tools.argparser.ArgParser.parserData:Ljava/util/Map;
            aload 9 /* keyword */
            aload 10 /* ep */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 219
            aload 5 /* m */
            ldc Lorg/glassfish/pfl/basic/tools/argparser/DefaultValue;
            invokevirtual java.lang.reflect.Method.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast org.glassfish.pfl.basic.tools.argparser.DefaultValue
            astore 11 /* dv */
        start local 11 // org.glassfish.pfl.basic.tools.argparser.DefaultValue dv
        13: .line 220
            aload 11 /* dv */
            ifnonnull 16
        14: .line 221
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Method "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* m */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " does not have a DefaultValue annotation"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.error:(Ljava/lang/String;)V
        15: .line 222
            goto 17
        16: .line 223
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.util.List java.util.Map java.lang.Class java.util.Iterator java.lang.reflect.Method int int java.lang.reflect.Method[] java.lang.String org.glassfish.pfl.basic.tools.argparser.ElementParser org.glassfish.pfl.basic.tools.argparser.DefaultValue
      StackMap stack:
            aload 2 /* defaultValueData */
            aload 9 /* keyword */
            aload 11 /* dv */
            invokeinterface org.glassfish.pfl.basic.tools.argparser.DefaultValue.value:()Ljava/lang/String;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 226
      StackMap locals:
      StackMap stack:
            aload 5 /* m */
            ldc Lorg/glassfish/pfl/basic/tools/argparser/Help;
            invokevirtual java.lang.reflect.Method.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast org.glassfish.pfl.basic.tools.argparser.Help
            astore 12 /* help */
        start local 12 // org.glassfish.pfl.basic.tools.argparser.Help help
        18: .line 227
            aload 12 /* help */
            ifnull 20
        19: .line 228
            aload 0 /* this */
            getfield org.glassfish.pfl.basic.tools.argparser.ArgParser.helpText:Ljava/util/Map;
            aload 9 /* keyword */
            aload 12 /* help */
            invokeinterface org.glassfish.pfl.basic.tools.argparser.Help.value:()Ljava/lang/String;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 12 // org.glassfish.pfl.basic.tools.argparser.Help help
        end local 11 // org.glassfish.pfl.basic.tools.argparser.DefaultValue dv
        end local 10 // org.glassfish.pfl.basic.tools.argparser.ElementParser ep
        end local 9 // java.lang.String keyword
        end local 5 // java.lang.reflect.Method m
        20: .line 214
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.util.List java.util.Map java.lang.Class java.util.Iterator top int int java.lang.reflect.Method[]
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
        21: iload 6
            iload 7
            if_icmplt 8
        22: .line 232
            aload 0 /* this */
            aload 2 /* defaultValueData */
            aload 0 /* this */
            getfield org.glassfish.pfl.basic.tools.argparser.ArgParser.defaultValues:Ljava/util/Map;
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.internalParse:(Ljava/util/Map;Ljava/util/Map;)V
        end local 3 // java.lang.Class cls
        23: .line 202
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.util.List java.util.Map top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        24: .line 234
            return
        end local 2 // java.util.Map defaultValueData
        end local 1 // java.util.List classes
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   25     0              this  Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;
            0   25     1           classes  Ljava/util/List<Ljava/lang/Class<*>;>;
            2   25     2  defaultValueData  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            4   23     3               cls  Ljava/lang/Class<*>;
            9   20     5                 m  Ljava/lang/reflect/Method;
           10   20     9           keyword  Ljava/lang/String;
           11   20    10                ep  Lorg/glassfish/pfl/basic/tools/argparser/ElementParser;
           13   20    11                dv  Lorg/glassfish/pfl/basic/tools/argparser/DefaultValue;
           18   20    12              help  Lorg/glassfish/pfl/basic/tools/argparser/Help;
    Signature: (Ljava/util/List<Ljava/lang/Class<*>;>;)V
    MethodParameters:
         Name  Flags
      classes  final

  private java.lang.String display(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
        start local 1 // java.lang.Object obj
         0: .line 237
            aload 1 /* obj */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 13
         1: .line 238
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* sb */
        start local 2 // java.lang.StringBuilder sb
         2: .line 239
            aload 2 /* sb */
            ldc "["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 240
            iconst_0
            istore 3 /* ctr */
        start local 3 // int ctr
         4: goto 10
         5: .line 241
      StackMap locals: java.lang.StringBuilder int
      StackMap stack:
            aload 1 /* obj */
            iload 3 /* ctr */
            invokestatic java.lang.reflect.Array.get:(Ljava/lang/Object;I)Ljava/lang/Object;
            astore 4 /* element */
        start local 4 // java.lang.Object element
         6: .line 242
            iload 3 /* ctr */
            ifle 8
         7: .line 243
            aload 2 /* sb */
            ldc ","
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 245
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 2 /* sb */
            aload 4 /* element */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 4 // java.lang.Object element
         9: .line 240
            iinc 3 /* ctr */ 1
      StackMap locals:
      StackMap stack:
        10: iload 3 /* ctr */
            aload 1 /* obj */
            invokestatic java.lang.reflect.Array.getLength:(Ljava/lang/Object;)I
            if_icmplt 5
        end local 3 // int ctr
        11: .line 247
            aload 2 /* sb */
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        12: .line 248
            aload 2 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.StringBuilder sb
        13: .line 249
      StackMap locals:
      StackMap stack:
            aload 1 /* obj */
            instanceof java.util.Collection
            ifeq 27
        14: .line 250
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* sb */
        start local 2 // java.lang.StringBuilder sb
        15: .line 251
            aload 2 /* sb */
            ldc "["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        16: .line 252
            iconst_1
            istore 3 /* first */
        start local 3 // boolean first
        17: .line 253
            aload 1 /* obj */
            checkcast java.util.Collection
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 5
            goto 24
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.lang.Object java.lang.StringBuilder int top java.util.Iterator
      StackMap stack:
        18: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 4 /* element */
        start local 4 // java.lang.Object element
        19: .line 254
            iload 3 /* first */
            ifeq 22
        20: .line 255
            iconst_0
            istore 3 /* first */
        21: .line 256
            goto 23
        22: .line 257
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.lang.Object java.lang.StringBuilder int java.lang.Object java.util.Iterator
      StackMap stack:
            aload 2 /* sb */
            ldc ","
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        23: .line 259
      StackMap locals:
      StackMap stack:
            aload 2 /* sb */
            aload 4 /* element */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 4 // java.lang.Object element
        24: .line 253
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.lang.Object java.lang.StringBuilder int top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 18
        25: .line 261
            aload 2 /* sb */
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        26: .line 262
            aload 2 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 3 // boolean first
        end local 2 // java.lang.StringBuilder sb
        27: .line 264
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.lang.Object
      StackMap stack:
            aload 1 /* obj */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.Object obj
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   28     0     this  Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;
            0   28     1      obj  Ljava/lang/Object;
            2   13     2       sb  Ljava/lang/StringBuilder;
            4   11     3      ctr  I
            6    9     4  element  Ljava/lang/Object;
           15   27     2       sb  Ljava/lang/StringBuilder;
           17   27     3    first  Z
           19   24     4  element  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      obj   final

  public java.lang.String getHelpText();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=12, args_size=1
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
         0: .line 272
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 273
            aload 1 /* sb */
            ldc "    Legal arguments are:\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 274
            aload 0 /* this */
            getfield org.glassfish.pfl.basic.tools.argparser.ArgParser.parserData:Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            astore 2 /* keys */
        start local 2 // java.util.Set keys
         3: .line 275
            new java.util.ArrayList
            dup
            aload 2 /* keys */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 3 /* keyList */
        start local 3 // java.util.List keyList
         4: .line 276
            aload 3 /* keyList */
            invokestatic java.util.Collections.sort:(Ljava/util/List;)V
         5: .line 277
            aload 3 /* keyList */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 26
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.lang.StringBuilder java.util.Set java.util.List top java.util.Iterator
      StackMap stack:
         6: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 4 /* keyword */
        start local 4 // java.lang.String keyword
         7: .line 278
            aload 0 /* this */
            getfield org.glassfish.pfl.basic.tools.argparser.ArgParser.parserData:Ljava/util/Map;
            aload 4 /* keyword */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.glassfish.pfl.basic.tools.argparser.ElementParser
            astore 6 /* ep */
        start local 6 // org.glassfish.pfl.basic.tools.argparser.ElementParser ep
         8: .line 279
            aload 1 /* sb */
            ldc "\t-"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* keyword */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " <"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         9: .line 280
            iconst_1
            istore 7 /* first */
        start local 7 // boolean first
        10: .line 281
            aload 6 /* ep */
            invokeinterface org.glassfish.pfl.basic.tools.argparser.ElementParser.describe:()[Ljava/lang/String;
            dup
            astore 11
            arraylength
            istore 10
            iconst_0
            istore 9
            goto 18
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.lang.StringBuilder java.util.Set java.util.List java.lang.String java.util.Iterator org.glassfish.pfl.basic.tools.argparser.ElementParser int top int int java.lang.String[]
      StackMap stack:
        11: aload 11
            iload 9
            aaload
            astore 8 /* str */
        start local 8 // java.lang.String str
        12: .line 282
            iload 7 /* first */
            ifeq 15
        13: .line 283
            iconst_0
            istore 7 /* first */
        14: .line 284
            goto 16
        15: .line 285
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.lang.StringBuilder java.util.Set java.util.List java.lang.String java.util.Iterator org.glassfish.pfl.basic.tools.argparser.ElementParser int java.lang.String int int java.lang.String[]
      StackMap stack:
            aload 1 /* sb */
            ldc "\n\t    "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        16: .line 288
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            aload 8 /* str */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 8 // java.lang.String str
        17: .line 281
            iinc 9 1
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.lang.StringBuilder java.util.Set java.util.List java.lang.String java.util.Iterator org.glassfish.pfl.basic.tools.argparser.ElementParser int top int int java.lang.String[]
      StackMap stack:
        18: iload 9
            iload 10
            if_icmplt 11
        19: .line 290
            aload 1 /* sb */
            ldc ">\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        20: .line 292
            aload 0 /* this */
            aload 0 /* this */
            getfield org.glassfish.pfl.basic.tools.argparser.ArgParser.defaultValues:Ljava/util/Map;
            aload 4 /* keyword */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.display:(Ljava/lang/Object;)Ljava/lang/String;
            astore 8 /* defaultValue */
        start local 8 // java.lang.String defaultValue
        21: .line 293
            aload 1 /* sb */
            ldc "\t    (default "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 8 /* defaultValue */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ")\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        22: .line 295
            aload 0 /* this */
            getfield org.glassfish.pfl.basic.tools.argparser.ArgParser.helpText:Ljava/util/Map;
            aload 4 /* keyword */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 9 /* help */
        start local 9 // java.lang.String help
        23: .line 296
            aload 9 /* help */
            ifnull 25
        24: .line 297
            aload 1 /* sb */
            ldc "\t    "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 9 /* help */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        25: .line 300
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.lang.StringBuilder java.util.Set java.util.List java.lang.String java.util.Iterator org.glassfish.pfl.basic.tools.argparser.ElementParser int java.lang.String java.lang.String
      StackMap stack:
            aload 1 /* sb */
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 9 // java.lang.String help
        end local 8 // java.lang.String defaultValue
        end local 7 // boolean first
        end local 6 // org.glassfish.pfl.basic.tools.argparser.ElementParser ep
        end local 4 // java.lang.String keyword
        26: .line 277
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.lang.StringBuilder java.util.Set java.util.List top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        27: .line 303
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 3 // java.util.List keyList
        end local 2 // java.util.Set keys
        end local 1 // java.lang.StringBuilder sb
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   28     0          this  Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;
            1   28     1            sb  Ljava/lang/StringBuilder;
            3   28     2          keys  Ljava/util/Set<Ljava/lang/String;>;
            4   28     3       keyList  Ljava/util/List<Ljava/lang/String;>;
            7   26     4       keyword  Ljava/lang/String;
            8   26     6            ep  Lorg/glassfish/pfl/basic/tools/argparser/ElementParser;
           10   26     7         first  Z
           12   17     8           str  Ljava/lang/String;
           21   26     8  defaultValue  Ljava/lang/String;
           23   26     9          help  Ljava/lang/String;

  public java.lang.Object parse(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
        start local 1 // java.lang.String[] args
         0: .line 309
            aload 0 /* this */
            aload 1 /* args */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.makeMap:([Ljava/lang/String;)Ljava/util/Map;
            astore 2 /* data */
        start local 2 // java.util.Map data
         1: .line 310
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 3 /* pdata */
        start local 3 // java.util.Map pdata
         2: .line 311
            aload 0 /* this */
            aload 2 /* data */
            aload 3 /* pdata */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.internalParse:(Ljava/util/Map;Ljava/util/Map;)V
         3: .line 312
            aload 0 /* this */
            aload 3 /* pdata */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.makeProxy:(Ljava/util/Map;)Ljava/lang/Object;
            astore 4 /* result */
        start local 4 // java.lang.Object result
         4: .line 313
            aload 4 /* result */
            areturn
        end local 4 // java.lang.Object result
        end local 3 // java.util.Map pdata
        end local 2 // java.util.Map data
        end local 1 // java.lang.String[] args
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;
            0    5     1    args  [Ljava/lang/String;
            1    5     2    data  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            2    5     3   pdata  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            4    5     4  result  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      args  final

  public <T> T parse(java.lang.String[], java.lang.Class<T>);
    descriptor: ([Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
        start local 1 // java.lang.String[] args
        start local 2 // java.lang.Class cls
         0: .line 317
            aload 2 /* cls */
            aload 0 /* this */
            aload 1 /* args */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.parse:([Ljava/lang/String;)Ljava/lang/Object;
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 2 // java.lang.Class cls
        end local 1 // java.lang.String[] args
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;
            0    1     1  args  [Ljava/lang/String;
            0    1     2   cls  Ljava/lang/Class<TT;>;
    Signature: <T:Ljava/lang/Object;>([Ljava/lang/String;Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
      Name  Flags
      args  final
      cls   final

  private void error(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
        start local 1 // java.lang.String msg
         0: .line 321
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Error in argument parser: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* msg */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 322
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            aload 0 /* this */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.getHelpText:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 323
            new java.lang.RuntimeException
            dup
            aload 1 /* msg */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.lang.String msg
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;
            0    3     1   msg  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      msg   final

  private java.lang.String checkMethod(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
        start local 1 // java.lang.reflect.Method m
         0: .line 328
            aload 1 /* m */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            arraylength
            ifne 2
         1: .line 329
            aload 1 /* m */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            areturn
         2: .line 331
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Method "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* m */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " must not have any parameters"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.error:(Ljava/lang/String;)V
         3: .line 334
            aconst_null
            areturn
        end local 1 // java.lang.reflect.Method m
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;
            0    4     1     m  Ljava/lang/reflect/Method;
    MethodParameters:
      Name  Flags
      m     final

  private void internalParse(java.util.Map<java.lang.String, java.lang.String>, java.util.Map<java.lang.String, java.lang.Object>);
    descriptor: (Ljava/util/Map;Ljava/util/Map;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
        start local 1 // java.util.Map data
        start local 2 // java.util.Map result
         0: .line 339
            aload 1 /* data */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 8
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.util.Map java.util.Map top java.util.Iterator
      StackMap stack:
         1: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 3 /* entry */
        start local 3 // java.util.Map$Entry entry
         2: .line 340
            aload 3 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* keyword */
        start local 5 // java.lang.String keyword
         3: .line 341
            aload 0 /* this */
            getfield org.glassfish.pfl.basic.tools.argparser.ArgParser.parserData:Ljava/util/Map;
            aload 5 /* keyword */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.glassfish.pfl.basic.tools.argparser.ElementParser
            astore 6 /* ep */
        start local 6 // org.glassfish.pfl.basic.tools.argparser.ElementParser ep
         4: .line 342
            aload 6 /* ep */
            ifnonnull 6
         5: .line 343
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            aload 5 /* keyword */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " is not a valid keyword"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.error:(Ljava/lang/String;)V
         6: .line 345
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.util.Map java.util.Map java.util.Map$Entry java.util.Iterator java.lang.String org.glassfish.pfl.basic.tools.argparser.ElementParser
      StackMap stack:
            aload 6 /* ep */
            aload 3 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.String
            invokeinterface org.glassfish.pfl.basic.tools.argparser.ElementParser.evaluate:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* val */
        start local 7 // java.lang.Object val
         7: .line 346
            aload 2 /* result */
            aload 5 /* keyword */
            aload 7 /* val */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 7 // java.lang.Object val
        end local 6 // org.glassfish.pfl.basic.tools.argparser.ElementParser ep
        end local 5 // java.lang.String keyword
        end local 3 // java.util.Map$Entry entry
         8: .line 339
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.util.Map java.util.Map top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         9: .line 348
            return
        end local 2 // java.util.Map result
        end local 1 // java.util.Map data
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0     this  Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;
            0   10     1     data  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            0   10     2   result  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            2    8     3    entry  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/String;>;
            3    8     5  keyword  Ljava/lang/String;
            4    8     6       ep  Lorg/glassfish/pfl/basic/tools/argparser/ElementParser;
            7    8     7      val  Ljava/lang/Object;
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;)V
    MethodParameters:
        Name  Flags
      data    final
      result  

  private java.lang.String getKeyword(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
        start local 1 // java.lang.String arg
         0: .line 351
            aload 1 /* arg */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 45
            if_icmpne 2
         1: .line 352
            aload 1 /* arg */
            iconst_1
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            areturn
         2: .line 354
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            aload 1 /* arg */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " is not a valid keyword"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.error:(Ljava/lang/String;)V
         3: .line 356
            aconst_null
            areturn
        end local 1 // java.lang.String arg
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;
            0    4     1   arg  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      arg   final

  private java.util.Map<java.lang.String, java.lang.String> makeMap(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
        start local 1 // java.lang.String[] args
         0: .line 361
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* result */
        start local 2 // java.util.Map result
         1: .line 362
            aconst_null
            astore 3 /* keyword */
        start local 3 // java.lang.String keyword
         2: .line 363
            aload 1 /* args */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 10
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.lang.String[] java.util.Map java.lang.String top int int java.lang.String[]
      StackMap stack:
         3: aload 7
            iload 5
            aaload
            astore 4 /* arg */
        start local 4 // java.lang.String arg
         4: .line 364
            aload 3 /* keyword */
            ifnonnull 7
         5: .line 365
            aload 0 /* this */
            aload 4 /* arg */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.getKeyword:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* keyword */
         6: .line 366
            goto 9
         7: .line 367
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.lang.String[] java.util.Map java.lang.String java.lang.String int int java.lang.String[]
      StackMap stack:
            aload 2 /* result */
            aload 3 /* keyword */
            aload 4 /* arg */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 368
            aconst_null
            astore 3 /* keyword */
        end local 4 // java.lang.String arg
         9: .line 363
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.lang.String[] java.util.Map java.lang.String top int int java.lang.String[]
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
        10: iload 5
            iload 6
            if_icmplt 3
        11: .line 371
            aload 3 /* keyword */
            ifnull 13
        12: .line 372
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "No argument supplied for keyword "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* keyword */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.error:(Ljava/lang/String;)V
        13: .line 374
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ArgParser java.lang.String[] java.util.Map java.lang.String
      StackMap stack:
            aload 2 /* result */
            areturn
        end local 3 // java.lang.String keyword
        end local 2 // java.util.Map result
        end local 1 // java.lang.String[] args
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   14     0     this  Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;
            0   14     1     args  [Ljava/lang/String;
            1   14     2   result  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            2   14     3  keyword  Ljava/lang/String;
            4    9     4      arg  Ljava/lang/String;
    Signature: ([Ljava/lang/String;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
    MethodParameters:
      Name  Flags
      args  final

  private  makeProxy(java.util.Map<java.lang.String, java.lang.Object>);
    descriptor: (Ljava/util/Map;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
        start local 1 // java.util.Map data
         0: .line 382
            new org.glassfish.pfl.basic.tools.argparser.ArgParser$1
            dup
            aload 0 /* this */
            aload 1 /* data */
            invokespecial org.glassfish.pfl.basic.tools.argparser.ArgParser$1.<init>:(Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;Ljava/util/Map;)V
            astore 2 /* ih */
        start local 2 // java.lang.reflect.InvocationHandler ih
         1: .line 431
            aload 0 /* this */
            getfield org.glassfish.pfl.basic.tools.argparser.ArgParser.interfaceClasses:Ljava/util/List;
         2: .line 432
            aload 0 /* this */
            getfield org.glassfish.pfl.basic.tools.argparser.ArgParser.interfaceClasses:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            anewarray java.lang.Class
         3: .line 431
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.Class[]
            astore 3 /* interfaces */
        start local 3 // java.lang.Class[] interfaces
         4: .line 434
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            astore 4 /* cl */
        start local 4 // java.lang.ClassLoader cl
         5: .line 435
            aload 4 /* cl */
            ifnonnull 7
         6: .line 436
            aload 3 /* interfaces */
            iconst_0
            aaload
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            astore 4 /* cl */
         7: .line 438
      StackMap locals: java.lang.reflect.InvocationHandler java.lang.Class[] java.lang.ClassLoader
      StackMap stack:
            aload 4 /* cl */
            ifnonnull 9
         8: .line 439
            invokestatic java.lang.ClassLoader.getSystemClassLoader:()Ljava/lang/ClassLoader;
            pop
         9: .line 442
      StackMap locals:
      StackMap stack:
            aload 4 /* cl */
            aload 3 /* interfaces */
            aload 2 /* ih */
            invokestatic java.lang.reflect.Proxy.newProxyInstance:(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
            areturn
        end local 4 // java.lang.ClassLoader cl
        end local 3 // java.lang.Class[] interfaces
        end local 2 // java.lang.reflect.InvocationHandler ih
        end local 1 // java.util.Map data
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ArgParser this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;
            0   10     1        data  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            1   10     2          ih  Ljava/lang/reflect/InvocationHandler;
            4   10     3  interfaces  [Ljava/lang/Class;
            5   10     4          cl  Ljava/lang/ClassLoader;
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;)Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      data  final

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 484
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lorg/glassfish/pfl/basic/tools/argparser/ArgParser$TestInterface1;
            aastore
            dup
            iconst_1
            ldc Lorg/glassfish/pfl/basic/tools/argparser/ArgParser$TestInterface2;
            aastore
            astore 1 /* interfaces */
        start local 1 // java.lang.Class[] interfaces
         1: .line 485
            new org.glassfish.pfl.basic.tools.argparser.ArgParser
            dup
            aload 1 /* interfaces */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokespecial org.glassfish.pfl.basic.tools.argparser.ArgParser.<init>:(Ljava/util/List;)V
            astore 2 /* ap */
        start local 2 // org.glassfish.pfl.basic.tools.argparser.ArgParser ap
         2: .line 486
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Help text for this parser:\n"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* ap */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.getHelpText:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         3: .line 487
            aload 2 /* ap */
            aload 0 /* args */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ArgParser.parse:([Ljava/lang/String;)Ljava/lang/Object;
            astore 3 /* result */
        start local 3 // java.lang.Object result
         4: .line 488
            aload 3 /* result */
            instanceof org.glassfish.pfl.basic.tools.argparser.ArgParser$TestInterface1
            ifeq 6
         5: .line 489
            aload 3 /* result */
            instanceof org.glassfish.pfl.basic.tools.argparser.ArgParser$TestInterface2
            ifne 9
         6: .line 490
      StackMap locals: java.lang.Class[] org.glassfish.pfl.basic.tools.argparser.ArgParser java.lang.Object
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
         7: .line 491
            ldc "Error: result not an instance of both test interfaces"
         8: .line 490
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         9: .line 493
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Result is:\n"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* result */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        10: .line 494
            return
        end local 3 // java.lang.Object result
        end local 2 // org.glassfish.pfl.basic.tools.argparser.ArgParser ap
        end local 1 // java.lang.Class[] interfaces
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        args  [Ljava/lang/String;
            1   11     1  interfaces  [Ljava/lang/Class;
            2   11     2          ap  Lorg/glassfish/pfl/basic/tools/argparser/ArgParser;
            4   11     3      result  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      args  
}
SourceFile: "ArgParser.java"
NestMembers:
  org.glassfish.pfl.basic.tools.argparser.ArgParser$1  org.glassfish.pfl.basic.tools.argparser.ArgParser$PrimaryColor  org.glassfish.pfl.basic.tools.argparser.ArgParser$StringPair  org.glassfish.pfl.basic.tools.argparser.ArgParser$TestInterface1  org.glassfish.pfl.basic.tools.argparser.ArgParser$TestInterface2
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  org.glassfish.pfl.basic.tools.argparser.ArgParser$1
  private final PrimaryColor = org.glassfish.pfl.basic.tools.argparser.ArgParser$PrimaryColor of org.glassfish.pfl.basic.tools.argparser.ArgParser
  public StringPair = org.glassfish.pfl.basic.tools.argparser.ArgParser$StringPair of org.glassfish.pfl.basic.tools.argparser.ArgParser
  private abstract TestInterface1 = org.glassfish.pfl.basic.tools.argparser.ArgParser$TestInterface1 of org.glassfish.pfl.basic.tools.argparser.ArgParser
  private abstract TestInterface2 = org.glassfish.pfl.basic.tools.argparser.ArgParser$TestInterface2 of org.glassfish.pfl.basic.tools.argparser.ArgParser