public class org.springframework.data.util.ProxyUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.data.util.ProxyUtils
  super_class: java.lang.Object
{
  private static java.util.Map<java.lang.Class<?>, java.lang.Class<?>> USER_TYPES;
    descriptor: Ljava/util/Map;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/util/Map<Ljava/lang/Class<*>;Ljava/lang/Class<*>;>;

  private static final java.util.List<org.springframework.data.util.ProxyUtils$ProxyDetector> DETECTORS;
    descriptor: Ljava/util/List;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/List<Lorg/springframework/data/util/ProxyUtils$ProxyDetector;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 38
            new org.springframework.util.ConcurrentReferenceHashMap
            dup
            invokespecial org.springframework.util.ConcurrentReferenceHashMap.<init>:()V
            putstatic org.springframework.data.util.ProxyUtils.USER_TYPES:Ljava/util/Map;
         1: .line 40
            ldc Lorg/springframework/data/util/ProxyUtils$ProxyDetector;
         2: .line 41
            ldc Lorg/springframework/data/util/ProxyUtils;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
         3: .line 40
            invokestatic org.springframework.core.io.support.SpringFactoriesLoader.loadFactories:(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/List;
            putstatic org.springframework.data.util.ProxyUtils.DETECTORS:Ljava/util/List;
         4: .line 44
            getstatic org.springframework.data.util.ProxyUtils.DETECTORS:Ljava/util/List;
            invokedynamic getUserType()Lorg/springframework/data/util/ProxyUtils$ProxyDetector;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Class;)Ljava/lang/Class;
                  org/springframework/util/ClassUtils.getUserClass(Ljava/lang/Class;)Ljava/lang/Class; (6)
                  (Ljava/lang/Class;)Ljava/lang/Class;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         5: .line 45
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.data.util.ProxyUtils this
         0: .line 36
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.springframework.data.util.ProxyUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/data/util/ProxyUtils;

  public static java.lang.Class<?> getUserClass(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/Class;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Class type
         0: .line 55
            aload 0 /* type */
            ldc "Type must not be null!"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 57
            getstatic org.springframework.data.util.ProxyUtils.USER_TYPES:Ljava/util/Map;
            aload 0 /* type */
            invokedynamic apply()Ljava/util/function/Function;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)Ljava/lang/Object;
                  org/springframework/data/util/ProxyUtils.lambda$1(Ljava/lang/Class;)Ljava/lang/Class; (6)
                  (Ljava/lang/Class;)Ljava/lang/Class;
            invokeinterface java.util.Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            checkcast java.lang.Class
            areturn
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  type  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Ljava/lang/Class<*>;
    MethodParameters:
      Name  Flags
      type  

  public static java.lang.Class<?> getUserClass();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Class;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Object source
         0: .line 77
            aload 0 /* source */
            ldc "Source object must not be null!"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 79
            aload 0 /* source */
            invokestatic org.springframework.aop.support.AopUtils.getTargetClass:(Ljava/lang/Object;)Ljava/lang/Class;
            invokestatic org.springframework.data.util.ProxyUtils.getUserClass:(Ljava/lang/Class;)Ljava/lang/Class;
            areturn
        end local 0 // java.lang.Object source
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  source  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Ljava/lang/Class<*>;
    MethodParameters:
        Name  Flags
      source  

  private static java.lang.Class lambda$1(java.lang.Class);
    descriptor: (Ljava/lang/Class;)Ljava/lang/Class;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // java.lang.Class it
         0: .line 59
            aload 0 /* it */
            astore 1 /* result */
        start local 1 // java.lang.Class result
         1: .line 61
            getstatic org.springframework.data.util.ProxyUtils.DETECTORS:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: java.lang.Class java.lang.Class top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.springframework.data.util.ProxyUtils$ProxyDetector
            astore 2 /* proxyDetector */
        start local 2 // org.springframework.data.util.ProxyUtils$ProxyDetector proxyDetector
         3: .line 62
            aload 2 /* proxyDetector */
            aload 1 /* result */
            invokeinterface org.springframework.data.util.ProxyUtils$ProxyDetector.getUserType:(Ljava/lang/Class;)Ljava/lang/Class;
            astore 1 /* result */
        end local 2 // org.springframework.data.util.ProxyUtils$ProxyDetector proxyDetector
         4: .line 61
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 65
            aload 1 /* result */
            areturn
        end local 1 // java.lang.Class result
        end local 0 // java.lang.Class it
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0             it  Ljava/lang/Class<*>;
            1    6     1         result  Ljava/lang/Class<*>;
            3    4     2  proxyDetector  Lorg/springframework/data/util/ProxyUtils$ProxyDetector;
}
SourceFile: "ProxyUtils.java"
NestMembers:
  org.springframework.data.util.ProxyUtils$ProxyDetector
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract ProxyDetector = org.springframework.data.util.ProxyUtils$ProxyDetector of org.springframework.data.util.ProxyUtils