abstract class org.apache.commons.lang.reflect.MemberUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: org.apache.commons.lang.reflect.MemberUtils
  super_class: java.lang.Object
{
  private static final int ACCESS_TEST;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 7

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

  private static final java.lang.Class[] ORDERED_PRIMITIVE_TYPES;
    descriptor: [Ljava/lang/Class;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=1, args_size=0
         0: .line 46
            aconst_null
            astore 0 /* isSynthetic */
        start local 0 // java.lang.reflect.Method isSynthetic
         1: .line 47
            ldc 1.5
            invokestatic org.apache.commons.lang.SystemUtils.isJavaVersionAtLeast:(F)Z
            ifeq 7
         2: .line 50
            ldc Ljava/lang/reflect/Member;
            ldc "isSynthetic"
         3: .line 51
            getstatic org.apache.commons.lang.ArrayUtils.EMPTY_CLASS_ARRAY:[Ljava/lang/Class;
         4: .line 50
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 0 /* isSynthetic */
         5: .line 52
            goto 7
      StackMap locals: java.lang.reflect.Method
      StackMap stack: java.lang.Exception
         6: pop
         7: .line 55
      StackMap locals:
      StackMap stack:
            aload 0 /* isSynthetic */
            putstatic org.apache.commons.lang.reflect.MemberUtils.IS_SYNTHETIC:Ljava/lang/reflect/Method;
        end local 0 // java.lang.reflect.Method isSynthetic
         8: .line 59
            bipush 7
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic java.lang.Byte.TYPE:Ljava/lang/Class;
            aastore
            dup
            iconst_1
            getstatic java.lang.Short.TYPE:Ljava/lang/Class;
            aastore
            dup
            iconst_2
         9: .line 60
            getstatic java.lang.Character.TYPE:Ljava/lang/Class;
            aastore
            dup
            iconst_3
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            dup
            iconst_4
            getstatic java.lang.Long.TYPE:Ljava/lang/Class;
            aastore
            dup
            iconst_5
            getstatic java.lang.Float.TYPE:Ljava/lang/Class;
            aastore
            dup
            bipush 6
            getstatic java.lang.Double.TYPE:Ljava/lang/Class;
            aastore
        10: .line 59
            putstatic org.apache.commons.lang.reflect.MemberUtils.ORDERED_PRIMITIVE_TYPES:[Ljava/lang/Class;
        11: .line 60
            return
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            1    8     0  isSynthetic  Ljava/lang/reflect/Method;
      Exception table:
        from    to  target  type
           2     5       6  Class java.lang.Exception

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.commons.lang.reflect.MemberUtils this
         0: .line 39
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.apache.commons.lang.reflect.MemberUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/commons/lang/reflect/MemberUtils;

  static void setAccessibleWorkaround(java.lang.reflect.AccessibleObject);
    descriptor: (Ljava/lang/reflect/AccessibleObject;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.reflect.AccessibleObject o
         0: .line 75
            aload 0 /* o */
            ifnull 1
            aload 0 /* o */
            invokevirtual java.lang.reflect.AccessibleObject.isAccessible:()Z
            ifeq 2
         1: .line 76
      StackMap locals:
      StackMap stack:
            return
         2: .line 78
      StackMap locals:
      StackMap stack:
            aload 0 /* o */
            checkcast java.lang.reflect.Member
            astore 1 /* m */
        start local 1 // java.lang.reflect.Member m
         3: .line 79
            aload 1 /* m */
            invokeinterface java.lang.reflect.Member.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isPublic:(I)Z
            ifeq 8
         4: .line 80
            aload 1 /* m */
            invokeinterface java.lang.reflect.Member.getDeclaringClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getModifiers:()I
            invokestatic org.apache.commons.lang.reflect.MemberUtils.isPackageAccess:(I)Z
            ifeq 8
         5: .line 82
            aload 0 /* o */
            iconst_1
            invokevirtual java.lang.reflect.AccessibleObject.setAccessible:(Z)V
         6: .line 83
            goto 8
      StackMap locals: java.lang.reflect.AccessibleObject java.lang.reflect.Member
      StackMap stack: java.lang.SecurityException
         7: pop
         8: .line 87
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.reflect.Member m
        end local 0 // java.lang.reflect.AccessibleObject o
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0     o  Ljava/lang/reflect/AccessibleObject;
            3    9     1     m  Ljava/lang/reflect/Member;
      Exception table:
        from    to  target  type
           5     6       7  Class java.lang.SecurityException
    MethodParameters:
      Name  Flags
      o     

  static boolean isPackageAccess(int);
    descriptor: (I)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // int modifiers
         0: .line 95
            iload 0 /* modifiers */
            bipush 7
            iand
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // int modifiers
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0  modifiers  I
    MethodParameters:
           Name  Flags
      modifiers  

  static boolean isAccessible(java.lang.reflect.Member);
    descriptor: (Ljava/lang/reflect/Member;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.reflect.Member m
         0: .line 104
            aload 0 /* m */
            ifnull 1
            aload 0 /* m */
            invokeinterface java.lang.reflect.Member.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isPublic:(I)Z
            ifeq 1
            aload 0 /* m */
            invokestatic org.apache.commons.lang.reflect.MemberUtils.isSynthetic:(Ljava/lang/reflect/Member;)Z
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // java.lang.reflect.Member m
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     m  Ljava/lang/reflect/Member;
    MethodParameters:
      Name  Flags
      m     

  static boolean isSynthetic(java.lang.reflect.Member);
    descriptor: (Ljava/lang/reflect/Member;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.reflect.Member m
         0: .line 113
            getstatic org.apache.commons.lang.reflect.MemberUtils.IS_SYNTHETIC:Ljava/lang/reflect/Method;
            ifnull 4
         1: .line 115
            getstatic org.apache.commons.lang.reflect.MemberUtils.IS_SYNTHETIC:Ljava/lang/reflect/Method;
            aload 0 /* m */
            aconst_null
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
         2: ireturn
         3: .line 116
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
         4: .line 119
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 0 // java.lang.reflect.Member m
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0     m  Ljava/lang/reflect/Member;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.Exception
    MethodParameters:
      Name  Flags
      m     

  static int compareParameterTypes(java.lang.Class[], java.lang.Class[], java.lang.Class[]);
    descriptor: ([Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Class;)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // java.lang.Class[] left
        start local 1 // java.lang.Class[] right
        start local 2 // java.lang.Class[] actual
         0: .line 135
            aload 2 /* actual */
            aload 0 /* left */
            invokestatic org.apache.commons.lang.reflect.MemberUtils.getTotalTransformationCost:([Ljava/lang/Class;[Ljava/lang/Class;)F
            fstore 3 /* leftCost */
        start local 3 // float leftCost
         1: .line 136
            aload 2 /* actual */
            aload 1 /* right */
            invokestatic org.apache.commons.lang.reflect.MemberUtils.getTotalTransformationCost:([Ljava/lang/Class;[Ljava/lang/Class;)F
            fstore 4 /* rightCost */
        start local 4 // float rightCost
         2: .line 137
            fload 3 /* leftCost */
            fload 4 /* rightCost */
            fcmpg
            ifge 3
            iconst_m1
            goto 5
      StackMap locals: float float
      StackMap stack:
         3: fload 4 /* rightCost */
            fload 3 /* leftCost */
            fcmpg
            ifge 4
            iconst_1
            goto 5
      StackMap locals:
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: ireturn
        end local 4 // float rightCost
        end local 3 // float leftCost
        end local 2 // java.lang.Class[] actual
        end local 1 // java.lang.Class[] right
        end local 0 // java.lang.Class[] left
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       left  [Ljava/lang/Class;
            0    6     1      right  [Ljava/lang/Class;
            0    6     2     actual  [Ljava/lang/Class;
            1    6     3   leftCost  F
            2    6     4  rightCost  F
    MethodParameters:
        Name  Flags
      left    
      right   
      actual  

  private static float getTotalTransformationCost(java.lang.Class[], java.lang.Class[]);
    descriptor: ([Ljava/lang/Class;[Ljava/lang/Class;)F
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // java.lang.Class[] srcArgs
        start local 1 // java.lang.Class[] destArgs
         0: .line 148
            fconst_0
            fstore 2 /* totalCost */
        start local 2 // float totalCost
         1: .line 149
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 7
         3: .line 151
      StackMap locals: float int
      StackMap stack:
            aload 0 /* srcArgs */
            iload 3 /* i */
            aaload
            astore 4 /* srcClass */
        start local 4 // java.lang.Class srcClass
         4: .line 152
            aload 1 /* destArgs */
            iload 3 /* i */
            aaload
            astore 5 /* destClass */
        start local 5 // java.lang.Class destClass
         5: .line 153
            fload 2 /* totalCost */
            aload 4 /* srcClass */
            aload 5 /* destClass */
            invokestatic org.apache.commons.lang.reflect.MemberUtils.getObjectTransformationCost:(Ljava/lang/Class;Ljava/lang/Class;)F
            fadd
            fstore 2 /* totalCost */
        end local 5 // java.lang.Class destClass
        end local 4 // java.lang.Class srcClass
         6: .line 149
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            aload 0 /* srcArgs */
            arraylength
            if_icmplt 3
        end local 3 // int i
         8: .line 155
            fload 2 /* totalCost */
            freturn
        end local 2 // float totalCost
        end local 1 // java.lang.Class[] destArgs
        end local 0 // java.lang.Class[] srcArgs
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0    srcArgs  [Ljava/lang/Class;
            0    9     1   destArgs  [Ljava/lang/Class;
            1    9     2  totalCost  F
            2    8     3          i  I
            4    6     4   srcClass  Ljava/lang/Class;
            5    6     5  destClass  Ljava/lang/Class;
    MethodParameters:
          Name  Flags
      srcArgs   
      destArgs  

  private static float getObjectTransformationCost(java.lang.Class, java.lang.Class);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)F
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.Class srcClass
        start local 1 // java.lang.Class destClass
         0: .line 167
            aload 1 /* destClass */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifeq 2
         1: .line 168
            aload 0 /* srcClass */
            aload 1 /* destClass */
            invokestatic org.apache.commons.lang.reflect.MemberUtils.getPrimitivePromotionCost:(Ljava/lang/Class;Ljava/lang/Class;)F
            freturn
         2: .line 170
      StackMap locals:
      StackMap stack:
            fconst_0
            fstore 2 /* cost */
        start local 2 // float cost
         3: .line 171
            goto 9
         4: .line 172
      StackMap locals: float
      StackMap stack:
            aload 1 /* destClass */
            invokevirtual java.lang.Class.isInterface:()Z
            ifeq 7
            aload 0 /* srcClass */
            aload 1 /* destClass */
            invokestatic org.apache.commons.lang.ClassUtils.isAssignable:(Ljava/lang/Class;Ljava/lang/Class;)Z
            ifeq 7
         5: .line 178
            fload 2 /* cost */
            ldc 0.25
            fadd
            fstore 2 /* cost */
         6: .line 179
            goto 10
         7: .line 181
      StackMap locals:
      StackMap stack:
            fload 2 /* cost */
            fconst_1
            fadd
            fstore 2 /* cost */
         8: .line 182
            aload 0 /* srcClass */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            astore 0 /* srcClass */
         9: .line 171
      StackMap locals:
      StackMap stack:
            aload 0 /* srcClass */
            ifnull 10
            aload 1 /* destClass */
            aload 0 /* srcClass */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 4
        10: .line 188
      StackMap locals:
      StackMap stack:
            aload 0 /* srcClass */
            ifnonnull 12
        11: .line 189
            fload 2 /* cost */
            ldc 1.5
            fadd
            fstore 2 /* cost */
        12: .line 191
      StackMap locals:
      StackMap stack:
            fload 2 /* cost */
            freturn
        end local 2 // float cost
        end local 1 // java.lang.Class destClass
        end local 0 // java.lang.Class srcClass
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0   srcClass  Ljava/lang/Class;
            0   13     1  destClass  Ljava/lang/Class;
            3   13     2       cost  F
    MethodParameters:
           Name  Flags
      srcClass   
      destClass  

  private static float getPrimitivePromotionCost(java.lang.Class, java.lang.Class);
    descriptor: (Ljava/lang/Class;Ljava/lang/Class;)F
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // java.lang.Class srcClass
        start local 1 // java.lang.Class destClass
         0: .line 202
            fconst_0
            fstore 2 /* cost */
        start local 2 // float cost
         1: .line 203
            aload 0 /* srcClass */
            astore 3 /* cls */
        start local 3 // java.lang.Class cls
         2: .line 204
            aload 3 /* cls */
            invokevirtual java.lang.Class.isPrimitive:()Z
            ifne 5
         3: .line 206
            fload 2 /* cost */
            ldc 0.1
            fadd
            fstore 2 /* cost */
         4: .line 207
            aload 3 /* cls */
            invokestatic org.apache.commons.lang.ClassUtils.wrapperToPrimitive:(Ljava/lang/Class;)Ljava/lang/Class;
            astore 3 /* cls */
         5: .line 209
      StackMap locals: float java.lang.Class
      StackMap stack:
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         6: goto 12
         7: .line 210
      StackMap locals: int
      StackMap stack:
            aload 3 /* cls */
            getstatic org.apache.commons.lang.reflect.MemberUtils.ORDERED_PRIMITIVE_TYPES:[Ljava/lang/Class;
            iload 4 /* i */
            aaload
            if_acmpne 11
         8: .line 211
            fload 2 /* cost */
            ldc 0.1
            fadd
            fstore 2 /* cost */
         9: .line 212
            iload 4 /* i */
            getstatic org.apache.commons.lang.reflect.MemberUtils.ORDERED_PRIMITIVE_TYPES:[Ljava/lang/Class;
            arraylength
            iconst_1
            isub
            if_icmpge 11
        10: .line 213
            getstatic org.apache.commons.lang.reflect.MemberUtils.ORDERED_PRIMITIVE_TYPES:[Ljava/lang/Class;
            iload 4 /* i */
            iconst_1
            iadd
            aaload
            astore 3 /* cls */
        11: .line 209
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: aload 3 /* cls */
            aload 1 /* destClass */
            if_acmpeq 13
            iload 4 /* i */
            getstatic org.apache.commons.lang.reflect.MemberUtils.ORDERED_PRIMITIVE_TYPES:[Ljava/lang/Class;
            arraylength
            if_icmplt 7
        end local 4 // int i
        13: .line 217
      StackMap locals:
      StackMap stack:
            fload 2 /* cost */
            freturn
        end local 3 // java.lang.Class cls
        end local 2 // float cost
        end local 1 // java.lang.Class destClass
        end local 0 // java.lang.Class srcClass
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0   srcClass  Ljava/lang/Class;
            0   14     1  destClass  Ljava/lang/Class;
            1   14     2       cost  F
            2   14     3        cls  Ljava/lang/Class;
            6   13     4          i  I
    MethodParameters:
           Name  Flags
      srcClass   final
      destClass  final
}
SourceFile: "MemberUtils.java"