public class org.codehaus.plexus.interpolation.reflection.ClassMap
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.codehaus.plexus.interpolation.reflection.ClassMap
  super_class: java.lang.Object
{
  private static final org.codehaus.plexus.interpolation.reflection.ClassMap$CacheMiss CACHE_MISS;
    descriptor: Lorg/codehaus/plexus/interpolation/reflection/ClassMap$CacheMiss;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.Object OBJECT;
    descriptor: Ljava/lang/Object;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private java.lang.Class<?> clazz;
    descriptor: Ljava/lang/Class;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/lang/Class<*>;

  private java.util.Map<java.lang.String, java.lang.Object> methodCache;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;

  private org.codehaus.plexus.interpolation.reflection.MethodMap methodMap;
    descriptor: Lorg/codehaus/plexus/interpolation/reflection/MethodMap;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 43
            new org.codehaus.plexus.interpolation.reflection.ClassMap$CacheMiss
            dup
            invokespecial org.codehaus.plexus.interpolation.reflection.ClassMap$CacheMiss.<init>:()V
            putstatic org.codehaus.plexus.interpolation.reflection.ClassMap.CACHE_MISS:Lorg/codehaus/plexus/interpolation/reflection/ClassMap$CacheMiss;
         1: .line 44
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putstatic org.codehaus.plexus.interpolation.reflection.ClassMap.OBJECT:Ljava/lang/Object;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  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.codehaus.plexus.interpolation.reflection.ClassMap this
        start local 1 // java.lang.Class clazz
         0: .line 64
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 56
            aload 0 /* this */
            new java.util.Hashtable
            dup
            invokespecial java.util.Hashtable.<init>:()V
            putfield org.codehaus.plexus.interpolation.reflection.ClassMap.methodCache:Ljava/util/Map;
         2: .line 58
            aload 0 /* this */
            new org.codehaus.plexus.interpolation.reflection.MethodMap
            dup
            invokespecial org.codehaus.plexus.interpolation.reflection.MethodMap.<init>:()V
            putfield org.codehaus.plexus.interpolation.reflection.ClassMap.methodMap:Lorg/codehaus/plexus/interpolation/reflection/MethodMap;
         3: .line 66
            aload 0 /* this */
            aload 1 /* clazz */
            putfield org.codehaus.plexus.interpolation.reflection.ClassMap.clazz:Ljava/lang/Class;
         4: .line 67
            aload 0 /* this */
            invokevirtual org.codehaus.plexus.interpolation.reflection.ClassMap.populateMethodCache:()V
         5: .line 68
            return
        end local 1 // java.lang.Class clazz
        end local 0 // org.codehaus.plexus.interpolation.reflection.ClassMap this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lorg/codehaus/plexus/interpolation/reflection/ClassMap;
            0    6     1  clazz  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
       Name  Flags
      clazz  

  java.lang.Class<?> getCachedClass();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.codehaus.plexus.interpolation.reflection.ClassMap this
         0: .line 75
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.reflection.ClassMap.clazz:Ljava/lang/Class;
            areturn
        end local 0 // org.codehaus.plexus.interpolation.reflection.ClassMap this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/codehaus/plexus/interpolation/reflection/ClassMap;
    Signature: ()Ljava/lang/Class<*>;

  public java.lang.reflect.Method findMethod(java.lang.String, java.lang.Object[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/reflect/Method;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // org.codehaus.plexus.interpolation.reflection.ClassMap this
        start local 1 // java.lang.String name
        start local 2 // java.lang.Object[] params
         0: .line 95
            aload 1 /* name */
            aload 2 /* params */
            invokestatic org.codehaus.plexus.interpolation.reflection.ClassMap.makeMethodKey:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 3 /* methodKey */
        start local 3 // java.lang.String methodKey
         1: .line 96
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.reflection.ClassMap.methodCache:Ljava/util/Map;
            aload 3 /* methodKey */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 4 /* cacheEntry */
        start local 4 // java.lang.Object cacheEntry
         2: .line 98
            aload 4 /* cacheEntry */
            getstatic org.codehaus.plexus.interpolation.reflection.ClassMap.CACHE_MISS:Lorg/codehaus/plexus/interpolation/reflection/ClassMap$CacheMiss;
            if_acmpne 4
         3: .line 100
            aconst_null
            areturn
         4: .line 103
      StackMap locals: java.lang.String java.lang.Object
      StackMap stack:
            aload 4 /* cacheEntry */
            ifnonnull 14
         5: .line 107
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.reflection.ClassMap.methodMap:Lorg/codehaus/plexus/interpolation/reflection/MethodMap;
            aload 1 /* name */
            aload 2 /* params */
            invokevirtual org.codehaus.plexus.interpolation.reflection.MethodMap.find:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/reflect/Method;
            astore 4 /* cacheEntry */
         6: .line 108
            goto 10
         7: .line 109
      StackMap locals:
      StackMap stack: org.codehaus.plexus.interpolation.reflection.MethodMap$AmbiguousException
            astore 5 /* ae */
        start local 5 // org.codehaus.plexus.interpolation.reflection.MethodMap$AmbiguousException ae
         8: .line 115
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.reflection.ClassMap.methodCache:Ljava/util/Map;
            aload 3 /* methodKey */
            getstatic org.codehaus.plexus.interpolation.reflection.ClassMap.CACHE_MISS:Lorg/codehaus/plexus/interpolation/reflection/ClassMap$CacheMiss;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         9: .line 117
            aload 5 /* ae */
            athrow
        end local 5 // org.codehaus.plexus.interpolation.reflection.MethodMap$AmbiguousException ae
        10: .line 120
      StackMap locals:
      StackMap stack:
            aload 4 /* cacheEntry */
            ifnonnull 13
        11: .line 122
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.reflection.ClassMap.methodCache:Ljava/util/Map;
            aload 3 /* methodKey */
            getstatic org.codehaus.plexus.interpolation.reflection.ClassMap.CACHE_MISS:Lorg/codehaus/plexus/interpolation/reflection/ClassMap$CacheMiss;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 123
            goto 14
        13: .line 126
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.reflection.ClassMap.methodCache:Ljava/util/Map;
            aload 3 /* methodKey */
            aload 4 /* cacheEntry */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        14: .line 132
      StackMap locals:
      StackMap stack:
            aload 4 /* cacheEntry */
            checkcast java.lang.reflect.Method
            areturn
        end local 4 // java.lang.Object cacheEntry
        end local 3 // java.lang.String methodKey
        end local 2 // java.lang.Object[] params
        end local 1 // java.lang.String name
        end local 0 // org.codehaus.plexus.interpolation.reflection.ClassMap this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0        this  Lorg/codehaus/plexus/interpolation/reflection/ClassMap;
            0   15     1        name  Ljava/lang/String;
            0   15     2      params  [Ljava/lang/Object;
            1   15     3   methodKey  Ljava/lang/String;
            2   15     4  cacheEntry  Ljava/lang/Object;
            8   10     5          ae  Lorg/codehaus/plexus/interpolation/reflection/MethodMap$AmbiguousException;
      Exception table:
        from    to  target  type
           5     6       7  Class org.codehaus.plexus.interpolation.reflection.MethodMap$AmbiguousException
    Exceptions:
      throws org.codehaus.plexus.interpolation.reflection.MethodMap$AmbiguousException
    MethodParameters:
        Name  Flags
      name    
      params  

  private void populateMethodCache();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // org.codehaus.plexus.interpolation.reflection.ClassMap this
         0: .line 146
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.reflection.ClassMap.clazz:Ljava/lang/Class;
            invokestatic org.codehaus.plexus.interpolation.reflection.ClassMap.getAccessibleMethods:(Ljava/lang/Class;)[Ljava/lang/reflect/Method;
            astore 1 /* methods */
        start local 1 // java.lang.reflect.Method[] methods
         1: .line 152
            aload 1 /* methods */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 8
      StackMap locals: org.codehaus.plexus.interpolation.reflection.ClassMap java.lang.reflect.Method[] top int int java.lang.reflect.Method[]
      StackMap stack:
         2: aload 5
            iload 3
            aaload
            astore 2 /* method */
        start local 2 // java.lang.reflect.Method method
         3: .line 160
            aload 2 /* method */
            invokestatic org.codehaus.plexus.interpolation.reflection.ClassMap.getPublicMethod:(Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method;
            astore 6 /* publicMethod */
        start local 6 // java.lang.reflect.Method publicMethod
         4: .line 169
            aload 6 /* publicMethod */
            ifnull 7
         5: .line 171
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.reflection.ClassMap.methodMap:Lorg/codehaus/plexus/interpolation/reflection/MethodMap;
            aload 6 /* publicMethod */
            invokevirtual org.codehaus.plexus.interpolation.reflection.MethodMap.add:(Ljava/lang/reflect/Method;)V
         6: .line 172
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.reflection.ClassMap.methodCache:Ljava/util/Map;
            aload 0 /* this */
            aload 6 /* publicMethod */
            invokevirtual org.codehaus.plexus.interpolation.reflection.ClassMap.makeMethodKey:(Ljava/lang/reflect/Method;)Ljava/lang/String;
            aload 6 /* publicMethod */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 6 // java.lang.reflect.Method publicMethod
        end local 2 // java.lang.reflect.Method method
         7: .line 152
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         8: iload 3
            iload 4
            if_icmplt 2
         9: .line 175
            return
        end local 1 // java.lang.reflect.Method[] methods
        end local 0 // org.codehaus.plexus.interpolation.reflection.ClassMap this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0          this  Lorg/codehaus/plexus/interpolation/reflection/ClassMap;
            1   10     1       methods  [Ljava/lang/reflect/Method;
            3    7     2        method  Ljava/lang/reflect/Method;
            4    7     6  publicMethod  Ljava/lang/reflect/Method;

  private java.lang.String makeMethodKey(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=8, args_size=2
        start local 0 // org.codehaus.plexus.interpolation.reflection.ClassMap this
        start local 1 // java.lang.reflect.Method method
         0: .line 184
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            astore 2 /* parameterTypes */
        start local 2 // java.lang.Class[] parameterTypes
         1: .line 186
            new java.lang.StringBuilder
            dup
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 3 /* methodKey */
        start local 3 // java.lang.StringBuilder methodKey
         2: .line 188
            aload 2 /* parameterTypes */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 31
      StackMap locals: org.codehaus.plexus.interpolation.reflection.ClassMap java.lang.reflect.Method java.lang.Class[] java.lang.StringBuilder top int int java.lang.Class[]
      StackMap stack:
         3: aload 7
            iload 5
            aaload
            astore 4 /* parameterType */
        start local 4 // java.lang.Class parameterType
         4: .line 196
            aload 4 /* parameterType */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 29
         5: .line 198
            aload 4 /* parameterType */
            getstatic java.lang.Boolean.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 8
         6: .line 200
            aload 3 /* methodKey */
            ldc "java.lang.Boolean"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         7: .line 201
            goto 30
         8: .line 202
      StackMap locals: org.codehaus.plexus.interpolation.reflection.ClassMap java.lang.reflect.Method java.lang.Class[] java.lang.StringBuilder java.lang.Class int int java.lang.Class[]
      StackMap stack:
            aload 4 /* parameterType */
            getstatic java.lang.Byte.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 11
         9: .line 204
            aload 3 /* methodKey */
            ldc "java.lang.Byte"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        10: .line 205
            goto 30
        11: .line 206
      StackMap locals:
      StackMap stack:
            aload 4 /* parameterType */
            getstatic java.lang.Character.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 14
        12: .line 208
            aload 3 /* methodKey */
            ldc "java.lang.Character"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        13: .line 209
            goto 30
        14: .line 210
      StackMap locals:
      StackMap stack:
            aload 4 /* parameterType */
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 17
        15: .line 212
            aload 3 /* methodKey */
            ldc "java.lang.Double"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        16: .line 213
            goto 30
        17: .line 214
      StackMap locals:
      StackMap stack:
            aload 4 /* parameterType */
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 20
        18: .line 216
            aload 3 /* methodKey */
            ldc "java.lang.Float"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        19: .line 217
            goto 30
        20: .line 218
      StackMap locals:
      StackMap stack:
            aload 4 /* parameterType */
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 23
        21: .line 220
            aload 3 /* methodKey */
            ldc "java.lang.Integer"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        22: .line 221
            goto 30
        23: .line 222
      StackMap locals:
      StackMap stack:
            aload 4 /* parameterType */
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 26
        24: .line 224
            aload 3 /* methodKey */
            ldc "java.lang.Long"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        25: .line 225
            goto 30
        26: .line 226
      StackMap locals:
      StackMap stack:
            aload 4 /* parameterType */
            getstatic java.lang.Short.TYPE:Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 30
        27: .line 228
            aload 3 /* methodKey */
            ldc "java.lang.Short"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        28: .line 230
            goto 30
        29: .line 233
      StackMap locals:
      StackMap stack:
            aload 3 /* methodKey */
            aload 4 /* parameterType */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 4 // java.lang.Class parameterType
        30: .line 188
      StackMap locals: org.codehaus.plexus.interpolation.reflection.ClassMap java.lang.reflect.Method java.lang.Class[] java.lang.StringBuilder top int int java.lang.Class[]
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
        31: iload 5
            iload 6
            if_icmplt 3
        32: .line 237
            aload 3 /* methodKey */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 3 // java.lang.StringBuilder methodKey
        end local 2 // java.lang.Class[] parameterTypes
        end local 1 // java.lang.reflect.Method method
        end local 0 // org.codehaus.plexus.interpolation.reflection.ClassMap this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   33     0            this  Lorg/codehaus/plexus/interpolation/reflection/ClassMap;
            0   33     1          method  Ljava/lang/reflect/Method;
            1   33     2  parameterTypes  [Ljava/lang/Class;
            2   33     3       methodKey  Ljava/lang/StringBuilder;
            4   30     4   parameterType  Ljava/lang/Class<*>;
    MethodParameters:
        Name  Flags
      method  

  private static java.lang.String makeMethodKey(java.lang.String, java.lang.Object[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=7, args_size=2
        start local 0 // java.lang.String method
        start local 1 // java.lang.Object[] params
         0: .line 242
            aload 1 /* params */
            arraylength
            ifne 2
         1: .line 244
            aload 0 /* method */
            areturn
         2: .line 247
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            aload 0 /* method */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            astore 2 /* methodKey */
        start local 2 // java.lang.StringBuilder methodKey
         3: .line 249
            aload 1 /* params */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 9
      StackMap locals: java.lang.String java.lang.Object[] java.lang.StringBuilder top int int java.lang.Object[]
      StackMap stack:
         4: aload 6
            iload 4
            aaload
            astore 3 /* arg */
        start local 3 // java.lang.Object arg
         5: .line 251
            aload 3 /* arg */
            ifnonnull 7
         6: .line 253
            getstatic org.codehaus.plexus.interpolation.reflection.ClassMap.OBJECT:Ljava/lang/Object;
            astore 3 /* arg */
         7: .line 256
      StackMap locals: java.lang.String java.lang.Object[] java.lang.StringBuilder java.lang.Object int int java.lang.Object[]
      StackMap stack:
            aload 2 /* methodKey */
            aload 3 /* arg */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 3 // java.lang.Object arg
         8: .line 249
            iinc 4 1
      StackMap locals: java.lang.String java.lang.Object[] java.lang.StringBuilder top int int java.lang.Object[]
      StackMap stack:
         9: iload 4
            iload 5
            if_icmplt 4
        10: .line 259
            aload 2 /* methodKey */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.StringBuilder methodKey
        end local 1 // java.lang.Object[] params
        end local 0 // java.lang.String method
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0     method  Ljava/lang/String;
            0   11     1     params  [Ljava/lang/Object;
            3   11     2  methodKey  Ljava/lang/StringBuilder;
            5    8     3        arg  Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      method  
      params  

  private static java.lang.reflect.Method[] getAccessibleMethods(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)[Ljava/lang/reflect/Method;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=9, args_size=1
        start local 0 // java.lang.Class clazz
         0: .line 270
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getMethods:()[Ljava/lang/reflect/Method;
            astore 1 /* methods */
        start local 1 // java.lang.reflect.Method[] methods
         1: .line 277
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isPublic:(I)Z
            ifeq 3
         2: .line 279
            aload 1 /* methods */
            areturn
         3: .line 286
      StackMap locals: java.lang.reflect.Method[]
      StackMap stack:
            aload 1 /* methods */
            arraylength
            anewarray org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo
            astore 2 /* methodInfos */
        start local 2 // org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo[] methodInfos
         4: .line 288
            aload 1 /* methods */
            arraylength
            istore 3 /* i */
        start local 3 // int i
         5: goto 7
         6: .line 290
      StackMap locals: org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo[] int
      StackMap stack:
            aload 2 /* methodInfos */
            iload 3 /* i */
            new org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo
            dup
            aload 1 /* methods */
            iload 3 /* i */
            aaload
            invokespecial org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo.<init>:(Ljava/lang/reflect/Method;)V
            aastore
         7: .line 288
      StackMap locals:
      StackMap stack:
            iload 3 /* i */
            iinc 3 /* i */ -1
            ifgt 6
        end local 3 // int i
         8: .line 293
            aload 0 /* clazz */
            aload 2 /* methodInfos */
            iconst_0
            invokestatic org.codehaus.plexus.interpolation.reflection.ClassMap.getAccessibleMethods:(Ljava/lang/Class;[Lorg/codehaus/plexus/interpolation/reflection/ClassMap$MethodInfo;I)I
            istore 3 /* upcastCount */
        start local 3 // int upcastCount
         9: .line 299
            iload 3 /* upcastCount */
            aload 1 /* methods */
            arraylength
            if_icmpge 11
        10: .line 301
            iload 3 /* upcastCount */
            anewarray java.lang.reflect.Method
            astore 1 /* methods */
        11: .line 304
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* j */
        start local 4 // int j
        12: .line 305
            aload 2 /* methodInfos */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 17
      StackMap locals: java.lang.Class java.lang.reflect.Method[] org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo[] int int top int int org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo[]
      StackMap stack:
        13: aload 8
            iload 6
            aaload
            astore 5 /* methodInfo */
        start local 5 // org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo methodInfo
        14: .line 307
            aload 5 /* methodInfo */
            getfield org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo.upcast:Z
            ifeq 16
        15: .line 309
            aload 1 /* methods */
            iload 4 /* j */
            iinc 4 /* j */ 1
            aload 5 /* methodInfo */
            getfield org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo.method:Ljava/lang/reflect/Method;
            aastore
        end local 5 // org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo methodInfo
        16: .line 305
      StackMap locals:
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
        17: iload 6
            iload 7
            if_icmplt 13
        18: .line 312
            aload 1 /* methods */
            areturn
        end local 4 // int j
        end local 3 // int upcastCount
        end local 2 // org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo[] methodInfos
        end local 1 // java.lang.reflect.Method[] methods
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   19     0        clazz  Ljava/lang/Class<*>;
            1   19     1      methods  [Ljava/lang/reflect/Method;
            4   19     2  methodInfos  [Lorg/codehaus/plexus/interpolation/reflection/ClassMap$MethodInfo;
            5    8     3            i  I
            9   19     3  upcastCount  I
           12   19     4            j  I
           14   16     5   methodInfo  Lorg/codehaus/plexus/interpolation/reflection/ClassMap$MethodInfo;
    Signature: (Ljava/lang/Class<*>;)[Ljava/lang/reflect/Method;
    MethodParameters:
       Name  Flags
      clazz  

  private static int getAccessibleMethods(java.lang.Class<?>, org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo[], );
    descriptor: (Ljava/lang/Class;[Lorg/codehaus/plexus/interpolation/reflection/ClassMap$MethodInfo;I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // java.lang.Class clazz
        start local 1 // org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo[] methodInfos
        start local 2 // int upcastCount
         0: .line 326
            aload 1 /* methodInfos */
            arraylength
            istore 3 /* l */
        start local 3 // int l
         1: .line 333
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isPublic:(I)Z
            ifeq 14
         2: .line 335
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         3: goto 11
         4: .line 339
      StackMap locals: int int
      StackMap stack:
            aload 1 /* methodInfos */
            iload 4 /* i */
            aaload
            astore 5 /* methodInfo */
        start local 5 // org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo methodInfo
         5: .line 341
            aload 5 /* methodInfo */
            getfield org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo.upcast:Z
            ifne 10
         6: .line 343
            aload 5 /* methodInfo */
            aload 0 /* clazz */
            invokevirtual org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo.tryUpcasting:(Ljava/lang/Class;)V
         7: .line 344
            iinc 2 /* upcastCount */ 1
        end local 5 // org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo methodInfo
         8: .line 346
            goto 10
         9: .line 347
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
            pop
        10: .line 335
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 4 /* i */
            iload 3 /* l */
            if_icmpge 12
            iload 2 /* upcastCount */
            iload 3 /* l */
            if_icmplt 4
        end local 4 // int i
        12: .line 360
      StackMap locals:
      StackMap stack:
            iload 2 /* upcastCount */
            iload 3 /* l */
            if_icmpne 14
        13: .line 362
            iload 2 /* upcastCount */
            ireturn
        14: .line 370
      StackMap locals:
      StackMap stack:
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            astore 4 /* superclazz */
        start local 4 // java.lang.Class superclazz
        15: .line 372
            aload 4 /* superclazz */
            ifnull 19
        16: .line 374
            aload 4 /* superclazz */
            aload 1 /* methodInfos */
            iload 2 /* upcastCount */
            invokestatic org.codehaus.plexus.interpolation.reflection.ClassMap.getAccessibleMethods:(Ljava/lang/Class;[Lorg/codehaus/plexus/interpolation/reflection/ClassMap$MethodInfo;I)I
            istore 2 /* upcastCount */
        17: .line 380
            iload 2 /* upcastCount */
            iload 3 /* l */
            if_icmpne 19
        18: .line 382
            iload 2 /* upcastCount */
            ireturn
        19: .line 392
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getInterfaces:()[Ljava/lang/Class;
            astore 5 /* interfaces */
        start local 5 // java.lang.Class[] interfaces
        20: .line 394
            aload 5 /* interfaces */
            arraylength
            istore 6 /* i */
        start local 6 // int i
        21: goto 25
        22: .line 396
      StackMap locals: java.lang.Class[] int
      StackMap stack:
            aload 5 /* interfaces */
            iload 6 /* i */
            aaload
            aload 1 /* methodInfos */
            iload 2 /* upcastCount */
            invokestatic org.codehaus.plexus.interpolation.reflection.ClassMap.getAccessibleMethods:(Ljava/lang/Class;[Lorg/codehaus/plexus/interpolation/reflection/ClassMap$MethodInfo;I)I
            istore 2 /* upcastCount */
        23: .line 402
            iload 2 /* upcastCount */
            iload 3 /* l */
            if_icmpne 25
        24: .line 404
            iload 2 /* upcastCount */
            ireturn
        25: .line 394
      StackMap locals:
      StackMap stack:
            iload 6 /* i */
            iinc 6 /* i */ -1
            ifgt 22
        end local 6 // int i
        26: .line 408
            iload 2 /* upcastCount */
            ireturn
        end local 5 // java.lang.Class[] interfaces
        end local 4 // java.lang.Class superclazz
        end local 3 // int l
        end local 2 // int upcastCount
        end local 1 // org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo[] methodInfos
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   27     0        clazz  Ljava/lang/Class<*>;
            0   27     1  methodInfos  [Lorg/codehaus/plexus/interpolation/reflection/ClassMap$MethodInfo;
            0   27     2  upcastCount  I
            1   27     3            l  I
            3   12     4            i  I
            5    8     5   methodInfo  Lorg/codehaus/plexus/interpolation/reflection/ClassMap$MethodInfo;
           15   27     4   superclazz  Ljava/lang/Class<*>;
           20   27     5   interfaces  [Ljava/lang/Class;
           21   26     6            i  I
      Exception table:
        from    to  target  type
           4     8       9  Class java.lang.NoSuchMethodException
    Signature: (Ljava/lang/Class<*>;[Lorg/codehaus/plexus/interpolation/reflection/ClassMap$MethodInfo;I)I
    MethodParameters:
             Name  Flags
      clazz        
      methodInfos  
      upcastCount  

  public static java.lang.reflect.Method getPublicMethod(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.reflect.Method method
         0: .line 424
            aload 0 /* method */
            invokevirtual java.lang.reflect.Method.getDeclaringClass:()Ljava/lang/Class;
            astore 1 /* clazz */
        start local 1 // java.lang.Class clazz
         1: .line 431
            aload 1 /* clazz */
            invokevirtual java.lang.Class.getModifiers:()I
            iconst_1
            iand
            ifeq 3
         2: .line 433
            aload 0 /* method */
            areturn
         3: .line 436
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 1 /* clazz */
            aload 0 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            aload 0 /* method */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            invokestatic org.codehaus.plexus.interpolation.reflection.ClassMap.getPublicMethod:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            areturn
        end local 1 // java.lang.Class clazz
        end local 0 // java.lang.reflect.Method method
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  method  Ljava/lang/reflect/Method;
            1    4     1   clazz  Ljava/lang/Class<*>;
    MethodParameters:
        Name  Flags
      method  

  private static java.lang.reflect.Method getPublicMethod(java.lang.Class<?>, java.lang.String, java.lang.Class<?>[]);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=9, args_size=3
        start local 0 // java.lang.Class clazz
        start local 1 // java.lang.String name
        start local 2 // java.lang.Class[] paramTypes
         0: .line 453
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getModifiers:()I
            iconst_1
            iand
            ifeq 5
         1: .line 457
            aload 0 /* clazz */
            aload 1 /* name */
            aload 2 /* paramTypes */
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
         2: areturn
         3: .line 459
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
            pop
         4: .line 466
            aconst_null
            areturn
         5: .line 475
      StackMap locals:
      StackMap stack:
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            astore 3 /* superclazz */
        start local 3 // java.lang.Class superclazz
         6: .line 477
            aload 3 /* superclazz */
            ifnull 10
         7: .line 479
            aload 3 /* superclazz */
            aload 1 /* name */
            aload 2 /* paramTypes */
            invokestatic org.codehaus.plexus.interpolation.reflection.ClassMap.getPublicMethod:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 4 /* superclazzMethod */
        start local 4 // java.lang.reflect.Method superclazzMethod
         8: .line 481
            aload 4 /* superclazzMethod */
            ifnull 10
         9: .line 483
            aload 4 /* superclazzMethod */
            areturn
        end local 4 // java.lang.reflect.Method superclazzMethod
        10: .line 491
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getInterfaces:()[Ljava/lang/Class;
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 16
      StackMap locals: java.lang.Class java.lang.String java.lang.Class[] java.lang.Class top int int java.lang.Class[]
      StackMap stack:
        11: aload 7
            iload 5
            aaload
            astore 4 /* interface_ */
        start local 4 // java.lang.Class interface_
        12: .line 493
            aload 4 /* interface_ */
            aload 1 /* name */
            aload 2 /* paramTypes */
            invokestatic org.codehaus.plexus.interpolation.reflection.ClassMap.getPublicMethod:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 8 /* interfaceMethod */
        start local 8 // java.lang.reflect.Method interfaceMethod
        13: .line 495
            aload 8 /* interfaceMethod */
            ifnull 15
        14: .line 497
            aload 8 /* interfaceMethod */
            areturn
        end local 8 // java.lang.reflect.Method interfaceMethod
        end local 4 // java.lang.Class interface_
        15: .line 491
      StackMap locals:
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
        16: iload 5
            iload 6
            if_icmplt 11
        17: .line 501
            aconst_null
            areturn
        end local 3 // java.lang.Class superclazz
        end local 2 // java.lang.Class[] paramTypes
        end local 1 // java.lang.String name
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   18     0             clazz  Ljava/lang/Class<*>;
            0   18     1              name  Ljava/lang/String;
            0   18     2        paramTypes  [Ljava/lang/Class;
            6   18     3        superclazz  Ljava/lang/Class<*>;
            8   10     4  superclazzMethod  Ljava/lang/reflect/Method;
           12   15     4        interface_  Ljava/lang/Class<*>;
           13   15     8   interfaceMethod  Ljava/lang/reflect/Method;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.NoSuchMethodException
    Signature: (Ljava/lang/Class<*>;Ljava/lang/String;[Ljava/lang/Class<*>;)Ljava/lang/reflect/Method;
    MethodParameters:
            Name  Flags
      clazz       
      name        
      paramTypes  
}
SourceFile: "ClassMap.java"
NestMembers:
  org.codehaus.plexus.interpolation.reflection.ClassMap$CacheMiss  org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo
InnerClasses:
  private final CacheMiss = org.codehaus.plexus.interpolation.reflection.ClassMap$CacheMiss of org.codehaus.plexus.interpolation.reflection.ClassMap
  private final MethodInfo = org.codehaus.plexus.interpolation.reflection.ClassMap$MethodInfo of org.codehaus.plexus.interpolation.reflection.ClassMap
  public AmbiguousException = org.codehaus.plexus.interpolation.reflection.MethodMap$AmbiguousException of org.codehaus.plexus.interpolation.reflection.MethodMap