class io.ebeaninternal.server.cache.DefaultCacheHolder
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: io.ebeaninternal.server.cache.DefaultCacheHolder
  super_class: java.lang.Object
{
  private static final org.slf4j.Logger log;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.util.concurrent.locks.ReentrantLock lock;
    descriptor: Ljava/util/concurrent/locks/ReentrantLock;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.ConcurrentHashMap<java.lang.String, io.ebean.cache.ServerCache> allCaches;
    descriptor: Ljava/util/concurrent/ConcurrentHashMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/String;Lio/ebean/cache/ServerCache;>;

  private final java.util.concurrent.ConcurrentHashMap<java.lang.String, java.util.Set<java.lang.String>> collectIdCaches;
    descriptor: Ljava/util/concurrent/ConcurrentHashMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/String;Ljava/util/Set<Ljava/lang/String;>;>;

  private final io.ebean.cache.ServerCacheFactory cacheFactory;
    descriptor: Lio/ebean/cache/ServerCacheFactory;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.ebean.cache.ServerCacheOptions beanDefault;
    descriptor: Lio/ebean/cache/ServerCacheOptions;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.ebean.cache.ServerCacheOptions queryDefault;
    descriptor: Lio/ebean/cache/ServerCacheOptions;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.ebean.config.CurrentTenantProvider tenantProvider;
    descriptor: Lio/ebean/config/CurrentTenantProvider;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.ebean.cache.QueryCacheEntryValidate queryCacheEntryValidate;
    descriptor: Lio/ebean/cache/QueryCacheEntryValidate;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 28
            ldc "io.ebean.cache.ALL"
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/String;)Lorg/slf4j/Logger;
            putstatic io.ebeaninternal.server.cache.DefaultCacheHolder.log:Lorg/slf4j/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(io.ebeaninternal.server.cache.CacheManagerOptions);
    descriptor: (Lio/ebeaninternal/server/cache/CacheManagerOptions;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
        start local 1 // io.ebeaninternal.server.cache.CacheManagerOptions builder
         0: .line 40
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 30
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
            putfield io.ebeaninternal.server.cache.DefaultCacheHolder.lock:Ljava/util/concurrent/locks/ReentrantLock;
         2: .line 31
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield io.ebeaninternal.server.cache.DefaultCacheHolder.allCaches:Ljava/util/concurrent/ConcurrentHashMap;
         3: .line 32
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield io.ebeaninternal.server.cache.DefaultCacheHolder.collectIdCaches:Ljava/util/concurrent/ConcurrentHashMap;
         4: .line 41
            aload 0 /* this */
            aload 1 /* builder */
            invokevirtual io.ebeaninternal.server.cache.CacheManagerOptions.getCacheFactory:()Lio/ebean/cache/ServerCacheFactory;
            putfield io.ebeaninternal.server.cache.DefaultCacheHolder.cacheFactory:Lio/ebean/cache/ServerCacheFactory;
         5: .line 42
            aload 0 /* this */
            aload 1 /* builder */
            invokevirtual io.ebeaninternal.server.cache.CacheManagerOptions.getBeanDefault:()Lio/ebean/cache/ServerCacheOptions;
            putfield io.ebeaninternal.server.cache.DefaultCacheHolder.beanDefault:Lio/ebean/cache/ServerCacheOptions;
         6: .line 43
            aload 0 /* this */
            aload 1 /* builder */
            invokevirtual io.ebeaninternal.server.cache.CacheManagerOptions.getQueryDefault:()Lio/ebean/cache/ServerCacheOptions;
            putfield io.ebeaninternal.server.cache.DefaultCacheHolder.queryDefault:Lio/ebean/cache/ServerCacheOptions;
         7: .line 44
            aload 0 /* this */
            aload 1 /* builder */
            invokevirtual io.ebeaninternal.server.cache.CacheManagerOptions.getCurrentTenantProvider:()Lio/ebean/config/CurrentTenantProvider;
            putfield io.ebeaninternal.server.cache.DefaultCacheHolder.tenantProvider:Lio/ebean/config/CurrentTenantProvider;
         8: .line 45
            aload 0 /* this */
            aload 1 /* builder */
            invokevirtual io.ebeaninternal.server.cache.CacheManagerOptions.getQueryCacheEntryValidate:()Lio/ebean/cache/QueryCacheEntryValidate;
            putfield io.ebeaninternal.server.cache.DefaultCacheHolder.queryCacheEntryValidate:Lio/ebean/cache/QueryCacheEntryValidate;
         9: .line 46
            return
        end local 1 // io.ebeaninternal.server.cache.CacheManagerOptions builder
        end local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0     this  Lio/ebeaninternal/server/cache/DefaultCacheHolder;
            0   10     1  builder  Lio/ebeaninternal/server/cache/CacheManagerOptions;
    MethodParameters:
         Name  Flags
      builder  

  void visitMetrics(io.ebean.meta.MetricVisitor);
    descriptor: (Lio/ebean/meta/MetricVisitor;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
        start local 1 // io.ebean.meta.MetricVisitor visitor
         0: .line 49
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.cacheFactory:Lio/ebean/cache/ServerCacheFactory;
            aload 1 /* visitor */
            invokeinterface io.ebean.cache.ServerCacheFactory.visit:(Lio/ebean/meta/MetricVisitor;)V
         1: .line 50
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.allCaches:Ljava/util/concurrent/ConcurrentHashMap;
            invokevirtual java.util.concurrent.ConcurrentHashMap.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: io.ebeaninternal.server.cache.DefaultCacheHolder io.ebean.meta.MetricVisitor top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.ebean.cache.ServerCache
            astore 2 /* serverCache */
        start local 2 // io.ebean.cache.ServerCache serverCache
         3: .line 51
            aload 2 /* serverCache */
            aload 1 /* visitor */
            invokeinterface io.ebean.cache.ServerCache.visit:(Lio/ebean/meta/MetricVisitor;)V
        end local 2 // io.ebean.cache.ServerCache serverCache
         4: .line 50
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 53
            return
        end local 1 // io.ebean.meta.MetricVisitor visitor
        end local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lio/ebeaninternal/server/cache/DefaultCacheHolder;
            0    6     1      visitor  Lio/ebean/meta/MetricVisitor;
            3    4     2  serverCache  Lio/ebean/cache/ServerCache;
    MethodParameters:
         Name  Flags
      visitor  

  io.ebean.cache.ServerCache getCache(java.lang.Class<?>, io.ebean.cache.ServerCacheType);
    descriptor: (Ljava/lang/Class;Lio/ebean/cache/ServerCacheType;)Lio/ebean/cache/ServerCache;
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
        start local 1 // java.lang.Class beanType
        start local 2 // io.ebean.cache.ServerCacheType type
         0: .line 56
            aload 0 /* this */
            aload 1 /* beanType */
            aload 2 /* type */
            aconst_null
            invokevirtual io.ebeaninternal.server.cache.DefaultCacheHolder.getCacheInternal:(Ljava/lang/Class;Lio/ebean/cache/ServerCacheType;Ljava/lang/String;)Lio/ebean/cache/ServerCache;
            areturn
        end local 2 // io.ebean.cache.ServerCacheType type
        end local 1 // java.lang.Class beanType
        end local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lio/ebeaninternal/server/cache/DefaultCacheHolder;
            0    1     1  beanType  Ljava/lang/Class<*>;
            0    1     2      type  Lio/ebean/cache/ServerCacheType;
    Signature: (Ljava/lang/Class<*>;Lio/ebean/cache/ServerCacheType;)Lio/ebean/cache/ServerCache;
    MethodParameters:
          Name  Flags
      beanType  
      type      

  io.ebean.cache.ServerCache getCache(java.lang.Class<?>, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Lio/ebean/cache/ServerCache;
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
        start local 1 // java.lang.Class beanType
        start local 2 // java.lang.String collectionProperty
         0: .line 60
            aload 0 /* this */
            aload 1 /* beanType */
            getstatic io.ebean.cache.ServerCacheType.COLLECTION_IDS:Lio/ebean/cache/ServerCacheType;
            aload 2 /* collectionProperty */
            invokevirtual io.ebeaninternal.server.cache.DefaultCacheHolder.getCacheInternal:(Ljava/lang/Class;Lio/ebean/cache/ServerCacheType;Ljava/lang/String;)Lio/ebean/cache/ServerCache;
            areturn
        end local 2 // java.lang.String collectionProperty
        end local 1 // java.lang.Class beanType
        end local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    1     0                this  Lio/ebeaninternal/server/cache/DefaultCacheHolder;
            0    1     1            beanType  Ljava/lang/Class<*>;
            0    1     2  collectionProperty  Ljava/lang/String;
    Signature: (Ljava/lang/Class<*>;Ljava/lang/String;)Lio/ebean/cache/ServerCache;
    MethodParameters:
                    Name  Flags
      beanType            
      collectionProperty  

  private java.lang.String key(java.lang.String, io.ebean.cache.ServerCacheType);
    descriptor: (Ljava/lang/String;Lio/ebean/cache/ServerCacheType;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
        start local 1 // java.lang.String beanName
        start local 2 // io.ebean.cache.ServerCacheType type
         0: .line 64
            new java.lang.StringBuilder
            dup
            aload 1 /* beanName */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* type */
            invokevirtual io.ebean.cache.ServerCacheType.code:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // io.ebean.cache.ServerCacheType type
        end local 1 // java.lang.String beanName
        end local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lio/ebeaninternal/server/cache/DefaultCacheHolder;
            0    1     1  beanName  Ljava/lang/String;
            0    1     2      type  Lio/ebean/cache/ServerCacheType;
    MethodParameters:
          Name  Flags
      beanName  
      type      

  private java.lang.String key(java.lang.String, java.lang.String, io.ebean.cache.ServerCacheType);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Lio/ebean/cache/ServerCacheType;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
        start local 1 // java.lang.String beanName
        start local 2 // java.lang.String collectionProperty
        start local 3 // io.ebean.cache.ServerCacheType type
         0: .line 68
            aload 2 /* collectionProperty */
            ifnull 2
         1: .line 69
            new java.lang.StringBuilder
            dup
            aload 1 /* beanName */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* collectionProperty */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* type */
            invokevirtual io.ebean.cache.ServerCacheType.code:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
         2: .line 71
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 1 /* beanName */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* type */
            invokevirtual io.ebean.cache.ServerCacheType.code:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 3 // io.ebean.cache.ServerCacheType type
        end local 2 // java.lang.String collectionProperty
        end local 1 // java.lang.String beanName
        end local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    3     0                this  Lio/ebeaninternal/server/cache/DefaultCacheHolder;
            0    3     1            beanName  Ljava/lang/String;
            0    3     2  collectionProperty  Ljava/lang/String;
            0    3     3                type  Lio/ebean/cache/ServerCacheType;
    MethodParameters:
                    Name  Flags
      beanName            
      collectionProperty  
      type                

  private io.ebean.cache.ServerCache getCacheInternal(java.lang.Class<?>, io.ebean.cache.ServerCacheType, java.lang.String);
    descriptor: (Ljava/lang/Class;Lio/ebean/cache/ServerCacheType;Ljava/lang/String;)Lio/ebean/cache/ServerCache;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=6, args_size=4
        start local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
        start local 1 // java.lang.Class beanType
        start local 2 // io.ebean.cache.ServerCacheType type
        start local 3 // java.lang.String collectionProperty
         0: .line 80
            aload 0 /* this */
            aload 1 /* beanType */
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aload 3 /* collectionProperty */
            aload 2 /* type */
            invokevirtual io.ebeaninternal.server.cache.DefaultCacheHolder.key:(Ljava/lang/String;Ljava/lang/String;Lio/ebean/cache/ServerCacheType;)Ljava/lang/String;
            astore 4 /* shortName */
        start local 4 // java.lang.String shortName
         1: .line 81
            aload 0 /* this */
            aload 1 /* beanType */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aload 3 /* collectionProperty */
            aload 2 /* type */
            invokevirtual io.ebeaninternal.server.cache.DefaultCacheHolder.key:(Ljava/lang/String;Ljava/lang/String;Lio/ebean/cache/ServerCacheType;)Ljava/lang/String;
            astore 5 /* fullKey */
        start local 5 // java.lang.String fullKey
         2: .line 82
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.allCaches:Ljava/util/concurrent/ConcurrentHashMap;
            aload 5 /* fullKey */
            aload 0 /* this */
            aload 1 /* beanType */
            aload 2 /* type */
            aload 5 /* fullKey */
            aload 4 /* shortName */
            invokedynamic apply(Lio/ebeaninternal/server/cache/DefaultCacheHolder;Ljava/lang/Class;Lio/ebean/cache/ServerCacheType;Ljava/lang/String;Ljava/lang/String;)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;
                  io/ebeaninternal/server/cache/DefaultCacheHolder.lambda$0(Ljava/lang/Class;Lio/ebean/cache/ServerCacheType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lio/ebean/cache/ServerCache; (7)
                  (Ljava/lang/String;)Lio/ebean/cache/ServerCache;
            invokevirtual java.util.concurrent.ConcurrentHashMap.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            checkcast io.ebean.cache.ServerCache
            areturn
        end local 5 // java.lang.String fullKey
        end local 4 // java.lang.String shortName
        end local 3 // java.lang.String collectionProperty
        end local 2 // io.ebean.cache.ServerCacheType type
        end local 1 // java.lang.Class beanType
        end local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    3     0                this  Lio/ebeaninternal/server/cache/DefaultCacheHolder;
            0    3     1            beanType  Ljava/lang/Class<*>;
            0    3     2                type  Lio/ebean/cache/ServerCacheType;
            0    3     3  collectionProperty  Ljava/lang/String;
            1    3     4           shortName  Ljava/lang/String;
            2    3     5             fullKey  Ljava/lang/String;
    Signature: (Ljava/lang/Class<*>;Lio/ebean/cache/ServerCacheType;Ljava/lang/String;)Lio/ebean/cache/ServerCache;
    MethodParameters:
                    Name  Flags
      beanType            
      type                
      collectionProperty  

  private io.ebean.cache.ServerCache createCache(java.lang.Class<?>, io.ebean.cache.ServerCacheType, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/Class;Lio/ebean/cache/ServerCacheType;Ljava/lang/String;Ljava/lang/String;)Lio/ebean/cache/ServerCache;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=9, locals=7, args_size=5
        start local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
        start local 1 // java.lang.Class beanType
        start local 2 // io.ebean.cache.ServerCacheType type
        start local 3 // java.lang.String key
        start local 4 // java.lang.String shortName
         0: .line 86
            aload 0 /* this */
            aload 1 /* beanType */
            aload 2 /* type */
            invokevirtual io.ebeaninternal.server.cache.DefaultCacheHolder.getCacheOptions:(Ljava/lang/Class;Lio/ebean/cache/ServerCacheType;)Lio/ebean/cache/ServerCacheOptions;
            astore 5 /* options */
        start local 5 // io.ebean.cache.ServerCacheOptions options
         1: .line 87
            aload 2 /* type */
            getstatic io.ebean.cache.ServerCacheType.COLLECTION_IDS:Lio/ebean/cache/ServerCacheType;
            if_acmpne 9
         2: .line 88
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         3: .line 90
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.collectIdCaches:Ljava/util/concurrent/ConcurrentHashMap;
            aload 1 /* beanType */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            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;
                  io/ebeaninternal/server/cache/DefaultCacheHolder.lambda$1(Ljava/lang/String;)Ljava/util/Set; (6)
                  (Ljava/lang/String;)Ljava/util/Set;
            invokevirtual java.util.concurrent.ConcurrentHashMap.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            checkcast java.util.Set
            aload 3 /* key */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         4: .line 91
            goto 8
      StackMap locals: io.ebeaninternal.server.cache.DefaultCacheHolder java.lang.Class io.ebean.cache.ServerCacheType java.lang.String java.lang.String io.ebean.cache.ServerCacheOptions
      StackMap stack: java.lang.Throwable
         5: astore 6
         6: .line 92
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
         7: .line 93
            aload 6
            athrow
         8: .line 92
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
         9: .line 95
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.cacheFactory:Lio/ebean/cache/ServerCacheFactory;
            new io.ebean.cache.ServerCacheConfig
            dup
            aload 2 /* type */
            aload 3 /* key */
            aload 4 /* shortName */
            aload 5 /* options */
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.tenantProvider:Lio/ebean/config/CurrentTenantProvider;
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.queryCacheEntryValidate:Lio/ebean/cache/QueryCacheEntryValidate;
            invokespecial io.ebean.cache.ServerCacheConfig.<init>:(Lio/ebean/cache/ServerCacheType;Ljava/lang/String;Ljava/lang/String;Lio/ebean/cache/ServerCacheOptions;Lio/ebean/config/CurrentTenantProvider;Lio/ebean/cache/QueryCacheEntryValidate;)V
            invokeinterface io.ebean.cache.ServerCacheFactory.createCache:(Lio/ebean/cache/ServerCacheConfig;)Lio/ebean/cache/ServerCache;
            areturn
        end local 5 // io.ebean.cache.ServerCacheOptions options
        end local 4 // java.lang.String shortName
        end local 3 // java.lang.String key
        end local 2 // io.ebean.cache.ServerCacheType type
        end local 1 // java.lang.Class beanType
        end local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lio/ebeaninternal/server/cache/DefaultCacheHolder;
            0   10     1   beanType  Ljava/lang/Class<*>;
            0   10     2       type  Lio/ebean/cache/ServerCacheType;
            0   10     3        key  Ljava/lang/String;
            0   10     4  shortName  Ljava/lang/String;
            1   10     5    options  Lio/ebean/cache/ServerCacheOptions;
      Exception table:
        from    to  target  type
           3     5       5  any
    Signature: (Ljava/lang/Class<*>;Lio/ebean/cache/ServerCacheType;Ljava/lang/String;Ljava/lang/String;)Lio/ebean/cache/ServerCache;
    MethodParameters:
           Name  Flags
      beanType   
      type       
      key        
      shortName  

  void clearAll();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
         0: .line 99
            getstatic io.ebeaninternal.server.cache.DefaultCacheHolder.log:Lorg/slf4j/Logger;
            ldc "clearAll"
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;)V
         1: .line 100
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.allCaches:Ljava/util/concurrent/ConcurrentHashMap;
            invokevirtual java.util.concurrent.ConcurrentHashMap.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 2
            goto 4
      StackMap locals: io.ebeaninternal.server.cache.DefaultCacheHolder top java.util.Iterator
      StackMap stack:
         2: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast io.ebean.cache.ServerCache
            astore 1 /* serverCache */
        start local 1 // io.ebean.cache.ServerCache serverCache
         3: .line 101
            aload 1 /* serverCache */
            invokeinterface io.ebean.cache.ServerCache.clear:()V
        end local 1 // io.ebean.cache.ServerCache serverCache
         4: .line 100
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 103
            return
        end local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lio/ebeaninternal/server/cache/DefaultCacheHolder;
            3    4     1  serverCache  Lio/ebean/cache/ServerCache;

  public void clear(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
        start local 1 // java.lang.String name
         0: .line 107
            getstatic io.ebeaninternal.server.cache.DefaultCacheHolder.log:Lorg/slf4j/Logger;
            ldc "clear {}"
            aload 1 /* name */
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 108
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* name */
            getstatic io.ebean.cache.ServerCacheType.QUERY:Lio/ebean/cache/ServerCacheType;
            invokevirtual io.ebeaninternal.server.cache.DefaultCacheHolder.key:(Ljava/lang/String;Lio/ebean/cache/ServerCacheType;)Ljava/lang/String;
            invokevirtual io.ebeaninternal.server.cache.DefaultCacheHolder.clearIfExists:(Ljava/lang/String;)V
         2: .line 109
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* name */
            getstatic io.ebean.cache.ServerCacheType.BEAN:Lio/ebean/cache/ServerCacheType;
            invokevirtual io.ebeaninternal.server.cache.DefaultCacheHolder.key:(Ljava/lang/String;Lio/ebean/cache/ServerCacheType;)Ljava/lang/String;
            invokevirtual io.ebeaninternal.server.cache.DefaultCacheHolder.clearIfExists:(Ljava/lang/String;)V
         3: .line 110
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* name */
            getstatic io.ebean.cache.ServerCacheType.NATURAL_KEY:Lio/ebean/cache/ServerCacheType;
            invokevirtual io.ebeaninternal.server.cache.DefaultCacheHolder.key:(Ljava/lang/String;Lio/ebean/cache/ServerCacheType;)Ljava/lang/String;
            invokevirtual io.ebeaninternal.server.cache.DefaultCacheHolder.clearIfExists:(Ljava/lang/String;)V
         4: .line 111
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.collectIdCaches:Ljava/util/concurrent/ConcurrentHashMap;
            aload 1 /* name */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Set
            astore 2 /* keys */
        start local 2 // java.util.Set keys
         5: .line 112
            aload 2 /* keys */
            ifnull 10
         6: .line 113
            aload 2 /* keys */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 9
      StackMap locals: io.ebeaninternal.server.cache.DefaultCacheHolder java.lang.String java.util.Set top java.util.Iterator
      StackMap stack:
         7: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* collectionIdKey */
        start local 3 // java.lang.String collectionIdKey
         8: .line 114
            aload 0 /* this */
            aload 3 /* collectionIdKey */
            invokevirtual io.ebeaninternal.server.cache.DefaultCacheHolder.clearIfExists:(Ljava/lang/String;)V
        end local 3 // java.lang.String collectionIdKey
         9: .line 113
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        10: .line 117
      StackMap locals: io.ebeaninternal.server.cache.DefaultCacheHolder java.lang.String java.util.Set
      StackMap stack:
            return
        end local 2 // java.util.Set keys
        end local 1 // java.lang.String name
        end local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   11     0             this  Lio/ebeaninternal/server/cache/DefaultCacheHolder;
            0   11     1             name  Ljava/lang/String;
            5   11     2             keys  Ljava/util/Set<Ljava/lang/String;>;
            8    9     3  collectionIdKey  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  private void clearIfExists(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
        start local 1 // java.lang.String fullKey
         0: .line 120
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.allCaches:Ljava/util/concurrent/ConcurrentHashMap;
            aload 1 /* fullKey */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast io.ebean.cache.ServerCache
            astore 2 /* cache */
        start local 2 // io.ebean.cache.ServerCache cache
         1: .line 121
            aload 2 /* cache */
            ifnull 4
         2: .line 122
            getstatic io.ebeaninternal.server.cache.DefaultCacheHolder.log:Lorg/slf4j/Logger;
            ldc "clear cache {}"
            aload 1 /* fullKey */
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;)V
         3: .line 123
            aload 2 /* cache */
            invokeinterface io.ebean.cache.ServerCache.clear:()V
         4: .line 125
      StackMap locals: io.ebean.cache.ServerCache
      StackMap stack:
            return
        end local 2 // io.ebean.cache.ServerCache cache
        end local 1 // java.lang.String fullKey
        end local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lio/ebeaninternal/server/cache/DefaultCacheHolder;
            0    5     1  fullKey  Ljava/lang/String;
            1    5     2    cache  Lio/ebean/cache/ServerCache;
    MethodParameters:
         Name  Flags
      fullKey  

  io.ebean.cache.ServerCacheOptions getCacheOptions(java.lang.Class<?>, io.ebean.cache.ServerCacheType);
    descriptor: (Ljava/lang/Class;Lio/ebean/cache/ServerCacheType;)Lio/ebean/cache/ServerCacheOptions;
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
        start local 1 // java.lang.Class beanType
        start local 2 // io.ebean.cache.ServerCacheType type
         0: .line 131
            aload 2 /* type */
            getstatic io.ebean.cache.ServerCacheType.QUERY:Lio/ebean/cache/ServerCacheType;
            if_acmpne 2
         1: .line 132
            aload 0 /* this */
            aload 1 /* beanType */
            invokevirtual io.ebeaninternal.server.cache.DefaultCacheHolder.getQueryOptions:(Ljava/lang/Class;)Lio/ebean/cache/ServerCacheOptions;
            areturn
         2: .line 134
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* beanType */
            invokevirtual io.ebeaninternal.server.cache.DefaultCacheHolder.getBeanOptions:(Ljava/lang/Class;)Lio/ebean/cache/ServerCacheOptions;
            areturn
        end local 2 // io.ebean.cache.ServerCacheType type
        end local 1 // java.lang.Class beanType
        end local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lio/ebeaninternal/server/cache/DefaultCacheHolder;
            0    3     1  beanType  Ljava/lang/Class<*>;
            0    3     2      type  Lio/ebean/cache/ServerCacheType;
    Signature: (Ljava/lang/Class<*>;Lio/ebean/cache/ServerCacheType;)Lio/ebean/cache/ServerCacheOptions;
    MethodParameters:
          Name  Flags
      beanType  
      type      

  private io.ebean.cache.ServerCacheOptions getQueryOptions(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Lio/ebean/cache/ServerCacheOptions;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
        start local 1 // java.lang.Class cls
         0: .line 138
            aload 1 /* cls */
            ldc Lio/ebean/annotation/CacheQueryTuning;
            invokestatic io.ebean.util.AnnotationUtil.get:(Ljava/lang/reflect/AnnotatedElement;Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast io.ebean.annotation.CacheQueryTuning
            astore 2 /* tuning */
        start local 2 // io.ebean.annotation.CacheQueryTuning tuning
         1: .line 139
            aload 2 /* tuning */
            ifnull 3
         2: .line 140
            new io.ebean.cache.ServerCacheOptions
            dup
            aload 2 /* tuning */
            invokespecial io.ebean.cache.ServerCacheOptions.<init>:(Lio/ebean/annotation/CacheQueryTuning;)V
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.queryDefault:Lio/ebean/cache/ServerCacheOptions;
            invokevirtual io.ebean.cache.ServerCacheOptions.applyDefaults:(Lio/ebean/cache/ServerCacheOptions;)Lio/ebean/cache/ServerCacheOptions;
            areturn
         3: .line 142
      StackMap locals: io.ebean.annotation.CacheQueryTuning
      StackMap stack:
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.queryDefault:Lio/ebean/cache/ServerCacheOptions;
            invokevirtual io.ebean.cache.ServerCacheOptions.copy:()Lio/ebean/cache/ServerCacheOptions;
            areturn
        end local 2 // io.ebean.annotation.CacheQueryTuning tuning
        end local 1 // java.lang.Class cls
        end local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lio/ebeaninternal/server/cache/DefaultCacheHolder;
            0    4     1     cls  Ljava/lang/Class<*>;
            1    4     2  tuning  Lio/ebean/annotation/CacheQueryTuning;
    Signature: (Ljava/lang/Class<*>;)Lio/ebean/cache/ServerCacheOptions;
    MethodParameters:
      Name  Flags
      cls   

  private io.ebean.cache.ServerCacheOptions getBeanOptions(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Lio/ebean/cache/ServerCacheOptions;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
        start local 1 // java.lang.Class cls
         0: .line 147
            aload 1 /* cls */
            ldc Lio/ebean/annotation/Cache;
            invokevirtual java.lang.Class.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast io.ebean.annotation.Cache
            astore 2 /* cache */
        start local 2 // io.ebean.annotation.Cache cache
         1: .line 148
            aload 2 /* cache */
            ifnull 2
            aload 2 /* cache */
            invokeinterface io.ebean.annotation.Cache.nearCache:()Z
            ifeq 2
            iconst_1
            goto 3
      StackMap locals: io.ebean.annotation.Cache
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: istore 3 /* nearCache */
        start local 3 // boolean nearCache
         4: .line 150
            aload 1 /* cls */
            ldc Lio/ebean/annotation/CacheBeanTuning;
            invokevirtual java.lang.Class.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast io.ebean.annotation.CacheBeanTuning
            astore 4 /* tuning */
        start local 4 // io.ebean.annotation.CacheBeanTuning tuning
         5: .line 151
            aload 4 /* tuning */
            ifnull 7
         6: .line 152
            new io.ebean.cache.ServerCacheOptions
            dup
            iload 3 /* nearCache */
            aload 4 /* tuning */
            invokespecial io.ebean.cache.ServerCacheOptions.<init>:(ZLio/ebean/annotation/CacheBeanTuning;)V
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.beanDefault:Lio/ebean/cache/ServerCacheOptions;
            invokevirtual io.ebean.cache.ServerCacheOptions.applyDefaults:(Lio/ebean/cache/ServerCacheOptions;)Lio/ebean/cache/ServerCacheOptions;
            areturn
         7: .line 154
      StackMap locals: int io.ebean.annotation.CacheBeanTuning
      StackMap stack:
            aload 0 /* this */
            getfield io.ebeaninternal.server.cache.DefaultCacheHolder.beanDefault:Lio/ebean/cache/ServerCacheOptions;
            iload 3 /* nearCache */
            invokevirtual io.ebean.cache.ServerCacheOptions.copy:(Z)Lio/ebean/cache/ServerCacheOptions;
            areturn
        end local 4 // io.ebean.annotation.CacheBeanTuning tuning
        end local 3 // boolean nearCache
        end local 2 // io.ebean.annotation.Cache cache
        end local 1 // java.lang.Class cls
        end local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lio/ebeaninternal/server/cache/DefaultCacheHolder;
            0    8     1        cls  Ljava/lang/Class<*>;
            1    8     2      cache  Lio/ebean/annotation/Cache;
            4    8     3  nearCache  Z
            5    8     4     tuning  Lio/ebean/annotation/CacheBeanTuning;
    Signature: (Ljava/lang/Class<*>;)Lio/ebean/cache/ServerCacheOptions;
    MethodParameters:
      Name  Flags
      cls   

  private io.ebean.cache.ServerCache lambda$0(java.lang.Class, io.ebean.cache.ServerCacheType, java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/Class;Lio/ebean/cache/ServerCacheType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lio/ebean/cache/ServerCache;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=5, locals=6, args_size=6
        start local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
        start local 5 // java.lang.String s
         0: .line 82
            aload 0 /* this */
            aload 1
            aload 2
            aload 3
            aload 4
            invokevirtual io.ebeaninternal.server.cache.DefaultCacheHolder.createCache:(Ljava/lang/Class;Lio/ebean/cache/ServerCacheType;Ljava/lang/String;Ljava/lang/String;)Lio/ebean/cache/ServerCache;
            areturn
        end local 5 // java.lang.String s
        end local 0 // io.ebeaninternal.server.cache.DefaultCacheHolder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/ebeaninternal/server/cache/DefaultCacheHolder;
            0    1     5     s  Ljava/lang/String;

  private static java.util.Set lambda$1(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Set;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String s
         0: .line 90
            new java.util.concurrent.ConcurrentSkipListSet
            dup
            invokespecial java.util.concurrent.ConcurrentSkipListSet.<init>:()V
            areturn
        end local 0 // java.lang.String s
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     s  Ljava/lang/String;
}
SourceFile: "DefaultCacheHolder.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles