public class org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache
  super_class: java.lang.Object
{
  private final java.lang.Class specifiedClass;
    descriptor: Ljava/lang/Class;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private java.util.Map<java.lang.String, org.hibernate.jpa.internal.util.PersistenceUtilHelper$AttributeAccess> attributeAccessMap;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;Lorg/hibernate/jpa/internal/util/PersistenceUtilHelper$AttributeAccess;>;

  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.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache this
        start local 1 // java.lang.Class clazz
         0: .line 333
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 331
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache.attributeAccessMap:Ljava/util/Map;
         2: .line 334
            aload 0 /* this */
            aload 1 /* clazz */
            putfield org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache.specifiedClass:Ljava/lang/Class;
         3: .line 335
            aload 0 /* this */
            aload 1 /* clazz */
            invokestatic org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache.findClassHierarchy:(Ljava/lang/Class;)Ljava/util/List;
            putfield org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache.classHierarchy:Ljava/util/List;
         4: .line 336
            return
        end local 1 // java.lang.Class clazz
        end local 0 // org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/hibernate/jpa/internal/util/PersistenceUtilHelper$ClassMetadataCache;
            0    5     1  clazz  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
       Name  Flags
      clazz  

  private static java.util.List<java.lang.Class<?>> findClassHierarchy(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.lang.Class clazz
         0: .line 339
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* classes */
        start local 1 // java.util.List classes
         1: .line 340
            aload 0 /* clazz */
            astore 2 /* current */
        start local 2 // java.lang.Class current
         2: .line 342
      StackMap locals: java.util.List java.lang.Class
      StackMap stack:
            aload 1 /* classes */
            aload 2 /* current */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 343
            aload 2 /* current */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            astore 2 /* current */
         4: .line 344
            aload 2 /* current */
            ifnonnull 2
         5: .line 346
            aload 1 /* classes */
            areturn
        end local 2 // java.lang.Class current
        end local 1 // java.util.List classes
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0    clazz  Ljava/lang/Class<*>;
            1    6     1  classes  Ljava/util/List<Ljava/lang/Class<*>;>;
            2    6     2  current  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Ljava/util/List<Ljava/lang/Class<*>;>;
    MethodParameters:
       Name  Flags
      clazz  

  public org.hibernate.jpa.internal.util.PersistenceUtilHelper$AttributeAccess getAttributeAccess(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/hibernate/jpa/internal/util/PersistenceUtilHelper$AttributeAccess;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache this
        start local 1 // java.lang.String attributeName
         0: .line 350
            aload 0 /* this */
            getfield org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache.attributeAccessMap:Ljava/util/Map;
            aload 1 /* attributeName */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.hibernate.jpa.internal.util.PersistenceUtilHelper$AttributeAccess
            astore 2 /* attributeAccess */
        start local 2 // org.hibernate.jpa.internal.util.PersistenceUtilHelper$AttributeAccess attributeAccess
         1: .line 351
            aload 2 /* attributeAccess */
            ifnonnull 4
         2: .line 352
            aload 0 /* this */
            aload 1 /* attributeName */
            invokevirtual org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache.buildAttributeAccess:(Ljava/lang/String;)Lorg/hibernate/jpa/internal/util/PersistenceUtilHelper$AttributeAccess;
            astore 2 /* attributeAccess */
         3: .line 353
            aload 0 /* this */
            getfield org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache.attributeAccessMap:Ljava/util/Map;
            aload 1 /* attributeName */
            aload 2 /* attributeAccess */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 355
      StackMap locals: org.hibernate.jpa.internal.util.PersistenceUtilHelper$AttributeAccess
      StackMap stack:
            aload 2 /* attributeAccess */
            areturn
        end local 2 // org.hibernate.jpa.internal.util.PersistenceUtilHelper$AttributeAccess attributeAccess
        end local 1 // java.lang.String attributeName
        end local 0 // org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    5     0             this  Lorg/hibernate/jpa/internal/util/PersistenceUtilHelper$ClassMetadataCache;
            0    5     1    attributeName  Ljava/lang/String;
            1    5     2  attributeAccess  Lorg/hibernate/jpa/internal/util/PersistenceUtilHelper$AttributeAccess;
    MethodParameters:
               Name  Flags
      attributeName  

  private org.hibernate.jpa.internal.util.PersistenceUtilHelper$AttributeAccess buildAttributeAccess(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/hibernate/jpa/internal/util/PersistenceUtilHelper$AttributeAccess;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache this
        start local 1 // java.lang.String attributeName
         0: .line 359
            new org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache$1
            dup
            aload 0 /* this */
            aload 1 /* attributeName */
            invokespecial org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache$1.<init>:(Lorg/hibernate/jpa/internal/util/PersistenceUtilHelper$ClassMetadataCache;Ljava/lang/String;)V
            astore 2 /* action */
        start local 2 // java.security.PrivilegedAction action
         1: .line 380
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            ifnull 2
            aload 2 /* action */
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast org.hibernate.jpa.internal.util.PersistenceUtilHelper$AttributeAccess
            goto 3
      StackMap locals: java.security.PrivilegedAction
      StackMap stack:
         2: aload 2 /* action */
            invokeinterface java.security.PrivilegedAction.run:()Ljava/lang/Object;
            checkcast org.hibernate.jpa.internal.util.PersistenceUtilHelper$AttributeAccess
      StackMap locals:
      StackMap stack: org.hibernate.jpa.internal.util.PersistenceUtilHelper$AttributeAccess
         3: areturn
        end local 2 // java.security.PrivilegedAction action
        end local 1 // java.lang.String attributeName
        end local 0 // org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lorg/hibernate/jpa/internal/util/PersistenceUtilHelper$ClassMetadataCache;
            0    4     1  attributeName  Ljava/lang/String;
            1    4     2         action  Ljava/security/PrivilegedAction<Lorg/hibernate/jpa/internal/util/PersistenceUtilHelper$AttributeAccess;>;
    MethodParameters:
               Name  Flags
      attributeName  final
}
SourceFile: "PersistenceUtilHelper.java"
NestHost: org.hibernate.jpa.internal.util.PersistenceUtilHelper
InnerClasses:
  public abstract AttributeAccess = org.hibernate.jpa.internal.util.PersistenceUtilHelper$AttributeAccess of org.hibernate.jpa.internal.util.PersistenceUtilHelper
  public ClassMetadataCache = org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache of org.hibernate.jpa.internal.util.PersistenceUtilHelper
  org.hibernate.jpa.internal.util.PersistenceUtilHelper$ClassMetadataCache$1