public class org.glassfish.pfl.basic.tools.argparser.ElementParserImpl implements org.glassfish.pfl.basic.tools.argparser.ElementParser
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.glassfish.pfl.basic.tools.argparser.ElementParserImpl
  super_class: java.lang.Object
{
  private org.glassfish.pfl.basic.func.UnaryFunction<java.lang.String, java.lang.Object> func;
    descriptor: Lorg/glassfish/pfl/basic/func/UnaryFunction;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lorg/glassfish/pfl/basic/func/UnaryFunction<Ljava/lang/String;Ljava/lang/Object;>;

  private java.lang.String[] description;
    descriptor: [Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 25
            ldc Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public java.lang.Object evaluate(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
        start local 1 // java.lang.String str
         0: .line 31
            aload 0 /* this */
            getfield org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.func:Lorg/glassfish/pfl/basic/func/UnaryFunction;
            aload 1 /* str */
            invokeinterface org.glassfish.pfl.basic.func.UnaryFunction.evaluate:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 1 // java.lang.String str
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;
            0    1     1   str  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      str   

  public java.lang.String[] describe();
    descriptor: ()[Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
         0: .line 36
            aload 0 /* this */
            getfield org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.description:[Ljava/lang/String;
            invokevirtual java.lang.String[].clone:()Ljava/lang/Object;
            checkcast java.lang.String[]
            areturn
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;

  public void <init>(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
        start local 1 // java.lang.reflect.Method m
         0: .line 45
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 46
            aload 0 /* this */
            aload 1 /* m */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.getData:(Ljava/lang/reflect/Method;)Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl$ResultData;
            astore 2 /* result */
        start local 2 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData result
         2: .line 48
            aload 0 /* this */
            aload 2 /* result */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData.first:()Ljava/lang/Object;
            checkcast org.glassfish.pfl.basic.func.UnaryFunction
            putfield org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.func:Lorg/glassfish/pfl/basic/func/UnaryFunction;
         3: .line 49
            aload 0 /* this */
            aload 2 /* result */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData.second:()Ljava/lang/Object;
            checkcast java.lang.String[]
            putfield org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.description:[Ljava/lang/String;
         4: .line 50
            return
        end local 2 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData result
        end local 1 // java.lang.reflect.Method m
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;
            0    5     1       m  Ljava/lang/reflect/Method;
            2    5     2  result  Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl$ResultData;
    MethodParameters:
      Name  Flags
      m     

  java.lang.String[] append(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=3, locals=9, args_size=3
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
        start local 1 // java.lang.String str
        start local 2 // java.lang.String[] strs
         0: .line 53
            aload 2 /* strs */
            arraylength
            iconst_1
            iadd
            anewarray java.lang.String
            astore 3 /* result */
        start local 3 // java.lang.String[] result
         1: .line 54
            iconst_0
            istore 4 /* rctr */
        start local 4 // int rctr
         2: .line 55
            aload 3 /* result */
            iload 4 /* rctr */
            iinc 4 /* rctr */ 1
            aload 1 /* str */
            aastore
         3: .line 56
            aload 2 /* strs */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 7
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ElementParserImpl java.lang.String java.lang.String[] java.lang.String[] int top int int java.lang.String[]
      StackMap stack:
         4: aload 8
            iload 6
            aaload
            astore 5 /* s */
        start local 5 // java.lang.String s
         5: .line 57
            aload 3 /* result */
            iload 4 /* rctr */
            iinc 4 /* rctr */ 1
            aload 5 /* s */
            aastore
        end local 5 // java.lang.String s
         6: .line 56
            iinc 6 1
      StackMap locals:
      StackMap stack:
         7: iload 6
            iload 7
            if_icmplt 4
         8: .line 59
            aload 3 /* result */
            areturn
        end local 4 // int rctr
        end local 3 // java.lang.String[] result
        end local 2 // java.lang.String[] strs
        end local 1 // java.lang.String str
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;
            0    9     1     str  Ljava/lang/String;
            0    9     2    strs  [Ljava/lang/String;
            1    9     3  result  [Ljava/lang/String;
            2    9     4    rctr  I
            5    6     5       s  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      str   
      strs  

  private org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData getData(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl$ResultData;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=8, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
        start local 1 // java.lang.reflect.Method meth
         0: .line 64
            aconst_null
            astore 2 /* myFunc */
        start local 2 // org.glassfish.pfl.basic.func.UnaryFunction myFunc
         1: .line 65
            aconst_null
            astore 3 /* myDescription */
        start local 3 // java.lang.String[] myDescription
         2: .line 66
            aload 1 /* meth */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            astore 4 /* type */
        start local 4 // java.lang.Class type
         3: .line 68
            aload 4 /* type */
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 12
         4: .line 69
            aload 0 /* this */
            aload 1 /* meth */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.getSeparator:(Ljava/lang/reflect/Method;)Ljava/lang/String;
            astore 5 /* sep */
        start local 5 // java.lang.String sep
         5: .line 70
            aload 4 /* type */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            astore 6 /* elementClass */
        start local 6 // java.lang.Class elementClass
         6: .line 71
            aload 0 /* this */
            aload 6 /* elementClass */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.getSimpleData:(Ljava/lang/Class;)Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl$ResultData;
            astore 7 /* elementResultData */
        start local 7 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData elementResultData
         7: .line 72
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "A "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* sep */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "-separated list of "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 73
            aload 7 /* elementResultData */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData.second:()Ljava/lang/Object;
            checkcast java.lang.String[]
         9: .line 72
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.append:(Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
            astore 3 /* myDescription */
        10: .line 75
            new org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$1
            dup
            aload 0 /* this */
            aload 5 /* sep */
            aload 6 /* elementClass */
            aload 7 /* elementResultData */
            invokespecial org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$1.<init>:(Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;Ljava/lang/String;Ljava/lang/Class;Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl$ResultData;)V
            astore 2 /* myFunc */
        end local 7 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData elementResultData
        end local 6 // java.lang.Class elementClass
        end local 5 // java.lang.String sep
        11: .line 90
            goto 22
      StackMap locals: org.glassfish.pfl.basic.func.UnaryFunction java.lang.String[] java.lang.Class
      StackMap stack:
        12: aload 4 /* type */
            ldc Ljava/util/List;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 21
        13: .line 91
            aload 0 /* this */
            aload 1 /* meth */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.getSeparator:(Ljava/lang/reflect/Method;)Ljava/lang/String;
            astore 5 /* sep */
        start local 5 // java.lang.String sep
        14: .line 92
            aload 0 /* this */
            aload 1 /* meth */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.getListElementClass:(Ljava/lang/reflect/Method;)Ljava/lang/Class;
            astore 6 /* elementClass */
        start local 6 // java.lang.Class elementClass
        15: .line 93
            aload 0 /* this */
            aload 6 /* elementClass */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.getSimpleData:(Ljava/lang/Class;)Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl$ResultData;
            astore 7 /* elementResultData */
        start local 7 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData elementResultData
        16: .line 94
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "A "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* sep */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "-separated list of "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        17: .line 95
            aload 7 /* elementResultData */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData.second:()Ljava/lang/Object;
            checkcast java.lang.String[]
        18: .line 94
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.append:(Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
            astore 3 /* myDescription */
        19: .line 97
            new org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$2
            dup
            aload 0 /* this */
            aload 5 /* sep */
            aload 7 /* elementResultData */
            invokespecial org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$2.<init>:(Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;Ljava/lang/String;Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl$ResultData;)V
            astore 2 /* myFunc */
        end local 7 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData elementResultData
        end local 6 // java.lang.Class elementClass
        end local 5 // java.lang.String sep
        20: .line 114
            goto 22
        21: .line 115
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* type */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.getSimpleData:(Ljava/lang/Class;)Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl$ResultData;
            areturn
        22: .line 118
      StackMap locals:
      StackMap stack:
            new org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData
            dup
            aload 2 /* myFunc */
        23: .line 119
            aload 3 /* myDescription */
        24: .line 118
            invokespecial org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData.<init>:(Lorg/glassfish/pfl/basic/func/UnaryFunction;[Ljava/lang/String;)V
            areturn
        end local 4 // java.lang.Class type
        end local 3 // java.lang.String[] myDescription
        end local 2 // org.glassfish.pfl.basic.func.UnaryFunction myFunc
        end local 1 // java.lang.reflect.Method meth
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   25     0               this  Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;
            0   25     1               meth  Ljava/lang/reflect/Method;
            1   25     2             myFunc  Lorg/glassfish/pfl/basic/func/UnaryFunction<Ljava/lang/String;Ljava/lang/Object;>;
            2   25     3      myDescription  [Ljava/lang/String;
            3   25     4               type  Ljava/lang/Class<*>;
            5   11     5                sep  Ljava/lang/String;
            6   11     6       elementClass  Ljava/lang/Class<*>;
            7   11     7  elementResultData  Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl$ResultData;
           14   20     5                sep  Ljava/lang/String;
           15   20     6       elementClass  Ljava/lang/Class<*>;
           16   20     7  elementResultData  Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl$ResultData;
    MethodParameters:
      Name  Flags
      meth  

  private org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData getSimpleData(java.lang.Class);
    descriptor: (Ljava/lang/Class;)Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl$ResultData;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
        start local 1 // java.lang.Class type
         0: .line 125
            aconst_null
            astore 2 /* myFunc */
        start local 2 // org.glassfish.pfl.basic.func.UnaryFunction myFunc
         1: .line 126
            aconst_null
            astore 3 /* myDescription */
        start local 3 // java.lang.String[] myDescription
         2: .line 128
            aload 1 /* type */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 6
         3: .line 129
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            new java.lang.StringBuilder
            dup
            ldc "A valid "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* type */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
            astore 3 /* myDescription */
         4: .line 131
            aload 0 /* this */
            aload 1 /* type */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.getPrimitiveParser:(Ljava/lang/Class;)Lorg/glassfish/pfl/basic/func/UnaryFunction;
            astore 2 /* myFunc */
         5: .line 132
            goto 20
      StackMap locals: org.glassfish.pfl.basic.func.UnaryFunction java.lang.String[]
      StackMap stack:
         6: aload 1 /* type */
            ldc Ljava/lang/String;
            if_acmpne 10
         7: .line 133
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "A String"
            aastore
            astore 3 /* myDescription */
         8: .line 135
            new org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$3
            dup
            aload 0 /* this */
            invokespecial org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$3.<init>:(Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;)V
            astore 2 /* myFunc */
         9: .line 141
            goto 20
      StackMap locals:
      StackMap stack:
        10: aload 1 /* type */
            invokevirtual java.lang.Class.isEnum:()Z
            ifeq 16
        11: .line 142
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
        12: .line 143
            new java.lang.StringBuilder
            dup
            ldc "One of: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            aload 1 /* type */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.getEnumElements:(Ljava/lang/Class;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
        13: .line 142
            astore 3 /* myDescription */
        14: .line 145
            new org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$4
            dup
            aload 0 /* this */
            aload 1 /* type */
            invokespecial org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$4.<init>:(Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;Ljava/lang/Class;)V
            astore 2 /* myFunc */
        15: .line 157
            goto 20
        16: .line 158
      StackMap locals:
      StackMap stack:
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
        17: .line 159
            new java.lang.StringBuilder
            dup
            ldc "A string that can create a "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* type */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
        18: .line 158
            astore 3 /* myDescription */
        19: .line 161
            aload 0 /* this */
            aload 1 /* type */
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.makeClassConverter:(Ljava/lang/Class;)Lorg/glassfish/pfl/basic/func/UnaryFunction;
            astore 2 /* myFunc */
        20: .line 164
      StackMap locals:
      StackMap stack:
            new org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData
            dup
            aload 2 /* myFunc */
        21: .line 165
            aload 3 /* myDescription */
        22: .line 164
            invokespecial org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData.<init>:(Lorg/glassfish/pfl/basic/func/UnaryFunction;[Ljava/lang/String;)V
            areturn
        end local 3 // java.lang.String[] myDescription
        end local 2 // org.glassfish.pfl.basic.func.UnaryFunction myFunc
        end local 1 // java.lang.Class type
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   23     0           this  Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;
            0   23     1           type  Ljava/lang/Class;
            1   23     2         myFunc  Lorg/glassfish/pfl/basic/func/UnaryFunction<Ljava/lang/String;Ljava/lang/Object;>;
            2   23     3  myDescription  [Ljava/lang/String;
    MethodParameters:
      Name  Flags
      type  final

  private java.lang.String getEnumElements(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=8, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
        start local 1 // java.lang.Class cls
         0: .line 169
            iconst_1
            istore 2 /* isFirst */
        start local 2 // boolean isFirst
         1: .line 170
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 3 /* sb */
        start local 3 // java.lang.StringBuilder sb
         2: .line 171
            aload 1 /* cls */
            invokevirtual java.lang.Class.getEnumConstants:()[Ljava/lang/Object;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 10
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ElementParserImpl java.lang.Class int java.lang.StringBuilder top int int java.lang.Object[]
      StackMap stack:
         3: aload 7
            iload 5
            aaload
            astore 4 /* obj */
        start local 4 // java.lang.Object obj
         4: .line 172
            iload 2 /* isFirst */
            ifeq 7
         5: .line 173
            iconst_0
            istore 2 /* isFirst */
         6: .line 174
            goto 8
         7: .line 175
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ElementParserImpl java.lang.Class int java.lang.StringBuilder java.lang.Object int int java.lang.Object[]
      StackMap stack:
            aload 3 /* sb */
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         8: .line 177
      StackMap locals:
      StackMap stack:
            aload 3 /* sb */
            aload 4 /* obj */
            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 obj
         9: .line 171
            iinc 5 1
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ElementParserImpl java.lang.Class int java.lang.StringBuilder top int int java.lang.Object[]
      StackMap stack:
        10: iload 5
            iload 6
            if_icmplt 3
        11: .line 179
            aload 3 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 3 // java.lang.StringBuilder sb
        end local 2 // boolean isFirst
        end local 1 // java.lang.Class cls
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;
            0   12     1      cls  Ljava/lang/Class<*>;
            1   12     2  isFirst  Z
            2   12     3       sb  Ljava/lang/StringBuilder;
            4    9     4      obj  Ljava/lang/Object;
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/String;
    MethodParameters:
      Name  Flags
      cls   

  private org.glassfish.pfl.basic.func.UnaryFunction<java.lang.String, java.lang.Object> getPrimitiveParser(java.lang.Class);
    descriptor: (Ljava/lang/Class;)Lorg/glassfish/pfl/basic/func/UnaryFunction;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
        start local 1 // java.lang.Class type
         0: .line 183
            aconst_null
            astore 2 /* myFunc */
        start local 2 // org.glassfish.pfl.basic.func.UnaryFunction myFunc
         1: .line 185
            aload 1 /* type */
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            if_acmpne 4
         2: .line 186
            new org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$5
            dup
            aload 0 /* this */
            invokespecial org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$5.<init>:(Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;)V
            astore 2 /* myFunc */
         3: .line 192
            goto 24
      StackMap locals: org.glassfish.pfl.basic.func.UnaryFunction
      StackMap stack:
         4: aload 1 /* type */
            getstatic java.lang.Byte.TYPE:Ljava/lang/Class;
            if_acmpne 7
         5: .line 193
            new org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$6
            dup
            aload 0 /* this */
            invokespecial org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$6.<init>:(Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;)V
            astore 2 /* myFunc */
         6: .line 199
            goto 24
      StackMap locals:
      StackMap stack:
         7: aload 1 /* type */
            getstatic java.lang.Character.TYPE:Ljava/lang/Class;
            if_acmpne 10
         8: .line 200
            new org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$7
            dup
            aload 0 /* this */
            invokespecial org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$7.<init>:(Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;)V
            astore 2 /* myFunc */
         9: .line 210
            goto 24
      StackMap locals:
      StackMap stack:
        10: aload 1 /* type */
            getstatic java.lang.Short.TYPE:Ljava/lang/Class;
            if_acmpne 13
        11: .line 211
            new org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$8
            dup
            aload 0 /* this */
            invokespecial org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$8.<init>:(Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;)V
            astore 2 /* myFunc */
        12: .line 217
            goto 24
      StackMap locals:
      StackMap stack:
        13: aload 1 /* type */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            if_acmpne 16
        14: .line 218
            new org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$9
            dup
            aload 0 /* this */
            invokespecial org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$9.<init>:(Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;)V
            astore 2 /* myFunc */
        15: .line 224
            goto 24
      StackMap locals:
      StackMap stack:
        16: aload 1 /* type */
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            if_acmpne 19
        17: .line 225
            new org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$10
            dup
            aload 0 /* this */
            invokespecial org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$10.<init>:(Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;)V
            astore 2 /* myFunc */
        18: .line 231
            goto 24
      StackMap locals:
      StackMap stack:
        19: aload 1 /* type */
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            if_acmpne 22
        20: .line 232
            new org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$11
            dup
            aload 0 /* this */
            invokespecial org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$11.<init>:(Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;)V
            astore 2 /* myFunc */
        21: .line 238
            goto 24
      StackMap locals:
      StackMap stack:
        22: aload 1 /* type */
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            if_acmpne 24
        23: .line 239
            new org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$12
            dup
            aload 0 /* this */
            invokespecial org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$12.<init>:(Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;)V
            astore 2 /* myFunc */
        24: .line 247
      StackMap locals:
      StackMap stack:
            aload 2 /* myFunc */
            areturn
        end local 2 // org.glassfish.pfl.basic.func.UnaryFunction myFunc
        end local 1 // java.lang.Class type
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   25     0    this  Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;
            0   25     1    type  Ljava/lang/Class;
            1   25     2  myFunc  Lorg/glassfish/pfl/basic/func/UnaryFunction<Ljava/lang/String;Ljava/lang/Object;>;
    Signature: (Ljava/lang/Class;)Lorg/glassfish/pfl/basic/func/UnaryFunction<Ljava/lang/String;Ljava/lang/Object;>;
    MethodParameters:
      Name  Flags
      type  

  private org.glassfish.pfl.basic.func.UnaryFunction<java.lang.String, java.lang.Object> makeClassConverter(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Lorg/glassfish/pfl/basic/func/UnaryFunction;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
        start local 1 // java.lang.Class type
         0: .line 253
            aconst_null
            astore 2 /* cons */
        start local 2 // java.lang.reflect.Constructor cons
         1: .line 256
            aload 1 /* type */
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/String;
            aastore
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            astore 2 /* cons */
         2: .line 257
            goto 11
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.ElementParserImpl java.lang.Class java.lang.reflect.Constructor
      StackMap stack: java.lang.NoSuchMethodException
         3: pop
         4: .line 258
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            aload 1 /* type */
            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
         5: .line 259
            ldc " does not have a constructor (String)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 258
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 260
      StackMap locals:
      StackMap stack: java.lang.SecurityException
            pop
         8: .line 261
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            aload 1 /* type */
            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
         9: .line 262
            ldc " constructor (String) is not accessible"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 261
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 265
      StackMap locals:
      StackMap stack:
            aload 2 /* cons */
            astore 3 /* fcons */
        start local 3 // java.lang.reflect.Constructor fcons
        12: .line 267
            new org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$13
            dup
            aload 0 /* this */
            aload 3 /* fcons */
            aload 1 /* type */
            invokespecial org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$13.<init>:(Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;Ljava/lang/reflect/Constructor;Ljava/lang/Class;)V
            areturn
        end local 3 // java.lang.reflect.Constructor fcons
        end local 2 // java.lang.reflect.Constructor cons
        end local 1 // java.lang.Class type
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   13     0   this  Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;
            0   13     1   type  Ljava/lang/Class<*>;
            1   13     2   cons  Ljava/lang/reflect/Constructor<*>;
           12   13     3  fcons  Ljava/lang/reflect/Constructor<*>;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.NoSuchMethodException
           1     2       7  Class java.lang.SecurityException
    Signature: (Ljava/lang/Class<*>;)Lorg/glassfish/pfl/basic/func/UnaryFunction<Ljava/lang/String;Ljava/lang/Object;>;
    MethodParameters:
      Name  Flags
      type  final

  private java.lang.Class getListElementClass(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Ljava/lang/Class;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
        start local 1 // java.lang.reflect.Method meth
         0: .line 286
            aload 1 /* meth */
            invokevirtual java.lang.reflect.Method.getGenericReturnType:()Ljava/lang/reflect/Type;
            astore 2 /* rtype */
        start local 2 // java.lang.reflect.Type rtype
         1: .line 287
            aload 2 /* rtype */
            instanceof java.lang.reflect.ParameterizedType
            ifeq 12
         2: .line 288
            aload 2 /* rtype */
            checkcast java.lang.reflect.ParameterizedType
            astore 3 /* ptype */
        start local 3 // java.lang.reflect.ParameterizedType ptype
         3: .line 289
            aload 3 /* ptype */
            invokeinterface java.lang.reflect.ParameterizedType.getActualTypeArguments:()[Ljava/lang/reflect/Type;
            astore 4 /* typeArgs */
        start local 4 // java.lang.reflect.Type[] typeArgs
         4: .line 290
            getstatic org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.$assertionsDisabled:Z
            ifne 5
            aload 4 /* typeArgs */
            arraylength
            iconst_1
            if_icmpeq 5
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 291
      StackMap locals: java.lang.reflect.Type java.lang.reflect.ParameterizedType java.lang.reflect.Type[]
      StackMap stack:
            aload 4 /* typeArgs */
            iconst_0
            aaload
            astore 5 /* etype */
        start local 5 // java.lang.reflect.Type etype
         6: .line 292
            aload 5 /* etype */
            instanceof java.lang.Class
            ifeq 8
         7: .line 293
            aload 5 /* etype */
            checkcast java.lang.Class
            areturn
         8: .line 295
      StackMap locals: java.lang.reflect.Type
      StackMap stack:
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Method "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* meth */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         9: .line 296
            ldc " has a List<> return type "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        10: .line 297
            ldc " that is not parameterized by a class"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        11: .line 295
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // java.lang.reflect.Type etype
        end local 4 // java.lang.reflect.Type[] typeArgs
        end local 3 // java.lang.reflect.ParameterizedType ptype
        12: .line 300
      StackMap locals:
      StackMap stack:
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Method "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* meth */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        13: .line 301
            ldc " does not have a parameterized List return type"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        14: .line 300
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // java.lang.reflect.Type rtype
        end local 1 // java.lang.reflect.Method meth
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0      this  Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;
            0   15     1      meth  Ljava/lang/reflect/Method;
            1   15     2     rtype  Ljava/lang/reflect/Type;
            3   12     3     ptype  Ljava/lang/reflect/ParameterizedType;
            4   12     4  typeArgs  [Ljava/lang/reflect/Type;
            6   12     5     etype  Ljava/lang/reflect/Type;
    MethodParameters:
      Name  Flags
      meth  

  private java.lang.String getSeparator(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
        start local 1 // java.lang.reflect.Method meth
         0: .line 306
            aload 1 /* meth */
            ldc Lorg/glassfish/pfl/basic/tools/argparser/Separator;
            invokevirtual java.lang.reflect.Method.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast org.glassfish.pfl.basic.tools.argparser.Separator
            astore 2 /* sep */
        start local 2 // org.glassfish.pfl.basic.tools.argparser.Separator sep
         1: .line 307
            ldc ","
            astore 3 /* result */
        start local 3 // java.lang.String result
         2: .line 308
            aload 2 /* sep */
            ifnull 4
         3: .line 309
            aload 2 /* sep */
            invokeinterface org.glassfish.pfl.basic.tools.argparser.Separator.value:()Ljava/lang/String;
            astore 3 /* result */
         4: .line 312
      StackMap locals: org.glassfish.pfl.basic.tools.argparser.Separator java.lang.String
      StackMap stack:
            aload 3 /* result */
            areturn
        end local 3 // java.lang.String result
        end local 2 // org.glassfish.pfl.basic.tools.argparser.Separator sep
        end local 1 // java.lang.reflect.Method meth
        end local 0 // org.glassfish.pfl.basic.tools.argparser.ElementParserImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/glassfish/pfl/basic/tools/argparser/ElementParserImpl;
            0    5     1    meth  Ljava/lang/reflect/Method;
            1    5     2     sep  Lorg/glassfish/pfl/basic/tools/argparser/Separator;
            2    5     3  result  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      meth  

  public java.lang.Object evaluate(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast java.lang.String
            invokevirtual org.glassfish.pfl.basic.tools.argparser.ElementParserImpl.evaluate:(Ljava/lang/String;)Ljava/lang/Object;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "ElementParserImpl.java"
NestMembers:
  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$1  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$10  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$11  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$12  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$13  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$2  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$3  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$4  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$5  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$6  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$7  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$8  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$9  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData
InnerClasses:
  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$1
  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$10
  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$11
  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$12
  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$13
  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$2
  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$3
  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$4
  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$5
  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$6
  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$7
  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$8
  org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$9
  private ResultData = org.glassfish.pfl.basic.tools.argparser.ElementParserImpl$ResultData of org.glassfish.pfl.basic.tools.argparser.ElementParserImpl