public class org.springframework.cache.caffeine.CaffeineCache extends org.springframework.cache.support.AbstractValueAdaptingCache
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.cache.caffeine.CaffeineCache
  super_class: org.springframework.cache.support.AbstractValueAdaptingCache
{
  private final java.lang.String name;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.github.benmanes.caffeine.cache.Cache<java.lang.Object, java.lang.Object> cache;
    descriptor: Lcom/github/benmanes/caffeine/cache/Cache;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/github/benmanes/caffeine/cache/Cache<Ljava/lang/Object;Ljava/lang/Object;>;

  public void <init>(java.lang.String, com.github.benmanes.caffeine.cache.Cache<java.lang.Object, java.lang.Object>);
    descriptor: (Ljava/lang/String;Lcom/github/benmanes/caffeine/cache/Cache;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.springframework.cache.caffeine.CaffeineCache this
        start local 1 // java.lang.String name
        start local 2 // com.github.benmanes.caffeine.cache.Cache cache
         0: .line 53
            aload 0 /* this */
            aload 1 /* name */
            aload 2 /* cache */
            iconst_1
            invokespecial org.springframework.cache.caffeine.CaffeineCache.<init>:(Ljava/lang/String;Lcom/github/benmanes/caffeine/cache/Cache;Z)V
         1: .line 54
            return
        end local 2 // com.github.benmanes.caffeine.cache.Cache cache
        end local 1 // java.lang.String name
        end local 0 // org.springframework.cache.caffeine.CaffeineCache this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lorg/springframework/cache/caffeine/CaffeineCache;
            0    2     1   name  Ljava/lang/String;
            0    2     2  cache  Lcom/github/benmanes/caffeine/cache/Cache<Ljava/lang/Object;Ljava/lang/Object;>;
    Signature: (Ljava/lang/String;Lcom/github/benmanes/caffeine/cache/Cache<Ljava/lang/Object;Ljava/lang/Object;>;)V
    MethodParameters:
       Name  Flags
      name   
      cache  

  public void <init>(java.lang.String, com.github.benmanes.caffeine.cache.Cache<java.lang.Object, java.lang.Object>, );
    descriptor: (Ljava/lang/String;Lcom/github/benmanes/caffeine/cache/Cache;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.springframework.cache.caffeine.CaffeineCache this
        start local 1 // java.lang.String name
        start local 2 // com.github.benmanes.caffeine.cache.Cache cache
        start local 3 // boolean allowNullValues
         0: .line 67
            aload 0 /* this */
            iload 3 /* allowNullValues */
            invokespecial org.springframework.cache.support.AbstractValueAdaptingCache.<init>:(Z)V
         1: .line 68
            aload 1 /* name */
            ldc "Name must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         2: .line 69
            aload 2 /* cache */
            ldc "Cache must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         3: .line 70
            aload 0 /* this */
            aload 1 /* name */
            putfield org.springframework.cache.caffeine.CaffeineCache.name:Ljava/lang/String;
         4: .line 71
            aload 0 /* this */
            aload 2 /* cache */
            putfield org.springframework.cache.caffeine.CaffeineCache.cache:Lcom/github/benmanes/caffeine/cache/Cache;
         5: .line 72
            return
        end local 3 // boolean allowNullValues
        end local 2 // com.github.benmanes.caffeine.cache.Cache cache
        end local 1 // java.lang.String name
        end local 0 // org.springframework.cache.caffeine.CaffeineCache this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0             this  Lorg/springframework/cache/caffeine/CaffeineCache;
            0    6     1             name  Ljava/lang/String;
            0    6     2            cache  Lcom/github/benmanes/caffeine/cache/Cache<Ljava/lang/Object;Ljava/lang/Object;>;
            0    6     3  allowNullValues  Z
    Signature: (Ljava/lang/String;Lcom/github/benmanes/caffeine/cache/Cache<Ljava/lang/Object;Ljava/lang/Object;>;Z)V
    MethodParameters:
                 Name  Flags
      name             
      cache            
      allowNullValues  

  public final java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.cache.caffeine.CaffeineCache this
         0: .line 77
            aload 0 /* this */
            getfield org.springframework.cache.caffeine.CaffeineCache.name:Ljava/lang/String;
            areturn
        end local 0 // org.springframework.cache.caffeine.CaffeineCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/cache/caffeine/CaffeineCache;

  public final com.github.benmanes.caffeine.cache.Cache<java.lang.Object, java.lang.Object> getNativeCache();
    descriptor: ()Lcom/github/benmanes/caffeine/cache/Cache;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.cache.caffeine.CaffeineCache this
         0: .line 82
            aload 0 /* this */
            getfield org.springframework.cache.caffeine.CaffeineCache.cache:Lcom/github/benmanes/caffeine/cache/Cache;
            areturn
        end local 0 // org.springframework.cache.caffeine.CaffeineCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/cache/caffeine/CaffeineCache;
    Signature: ()Lcom/github/benmanes/caffeine/cache/Cache<Ljava/lang/Object;Ljava/lang/Object;>;

  public org.springframework.cache.Cache$ValueWrapper get(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lorg/springframework/cache/Cache$ValueWrapper;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.springframework.cache.caffeine.CaffeineCache this
        start local 1 // java.lang.Object key
         0: .line 88
            aload 0 /* this */
            getfield org.springframework.cache.caffeine.CaffeineCache.cache:Lcom/github/benmanes/caffeine/cache/Cache;
            instanceof com.github.benmanes.caffeine.cache.LoadingCache
            ifeq 3
         1: .line 89
            aload 0 /* this */
            getfield org.springframework.cache.caffeine.CaffeineCache.cache:Lcom/github/benmanes/caffeine/cache/Cache;
            checkcast com.github.benmanes.caffeine.cache.LoadingCache
            aload 1 /* key */
            invokeinterface com.github.benmanes.caffeine.cache.LoadingCache.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 2 /* value */
        start local 2 // java.lang.Object value
         2: .line 90
            aload 0 /* this */
            aload 2 /* value */
            invokevirtual org.springframework.cache.caffeine.CaffeineCache.toValueWrapper:(Ljava/lang/Object;)Lorg/springframework/cache/Cache$ValueWrapper;
            areturn
        end local 2 // java.lang.Object value
         3: .line 92
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* key */
            invokespecial org.springframework.cache.support.AbstractValueAdaptingCache.get:(Ljava/lang/Object;)Lorg/springframework/cache/Cache$ValueWrapper;
            areturn
        end local 1 // java.lang.Object key
        end local 0 // org.springframework.cache.caffeine.CaffeineCache this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/springframework/cache/caffeine/CaffeineCache;
            0    4     1    key  Ljava/lang/Object;
            2    3     2  value  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
      Name  Flags
      key   

  public <T> T get(, java.util.concurrent.Callable<T>);
    descriptor: (Ljava/lang/Object;Ljava/util/concurrent/Callable;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // org.springframework.cache.caffeine.CaffeineCache this
        start local 1 // java.lang.Object key
        start local 2 // java.util.concurrent.Callable valueLoader
         0: .line 99
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.cache.caffeine.CaffeineCache.cache:Lcom/github/benmanes/caffeine/cache/Cache;
            aload 1 /* key */
            new org.springframework.cache.caffeine.CaffeineCache$LoadFunction
            dup
            aload 0 /* this */
            aload 2 /* valueLoader */
            invokespecial org.springframework.cache.caffeine.CaffeineCache$LoadFunction.<init>:(Lorg/springframework/cache/caffeine/CaffeineCache;Ljava/util/concurrent/Callable;)V
            invokeinterface com.github.benmanes.caffeine.cache.Cache.get:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            invokevirtual org.springframework.cache.caffeine.CaffeineCache.fromStoreValue:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 2 // java.util.concurrent.Callable valueLoader
        end local 1 // java.lang.Object key
        end local 0 // org.springframework.cache.caffeine.CaffeineCache this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lorg/springframework/cache/caffeine/CaffeineCache;
            0    1     1          key  Ljava/lang/Object;
            0    1     2  valueLoader  Ljava/util/concurrent/Callable<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Object;Ljava/util/concurrent/Callable<TT;>;)TT;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
             Name  Flags
      key          
      valueLoader  final

  protected java.lang.Object lookup(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.cache.caffeine.CaffeineCache this
        start local 1 // java.lang.Object key
         0: .line 105
            aload 0 /* this */
            getfield org.springframework.cache.caffeine.CaffeineCache.cache:Lcom/github/benmanes/caffeine/cache/Cache;
            aload 1 /* key */
            invokeinterface com.github.benmanes.caffeine.cache.Cache.getIfPresent:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 1 // java.lang.Object key
        end local 0 // org.springframework.cache.caffeine.CaffeineCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/cache/caffeine/CaffeineCache;
            0    1     1   key  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
      Name  Flags
      key   

  public void put(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.springframework.cache.caffeine.CaffeineCache this
        start local 1 // java.lang.Object key
        start local 2 // java.lang.Object value
         0: .line 110
            aload 0 /* this */
            getfield org.springframework.cache.caffeine.CaffeineCache.cache:Lcom/github/benmanes/caffeine/cache/Cache;
            aload 1 /* key */
            aload 0 /* this */
            aload 2 /* value */
            invokevirtual org.springframework.cache.caffeine.CaffeineCache.toStoreValue:(Ljava/lang/Object;)Ljava/lang/Object;
            invokeinterface com.github.benmanes.caffeine.cache.Cache.put:(Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 111
            return
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object key
        end local 0 // org.springframework.cache.caffeine.CaffeineCache this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lorg/springframework/cache/caffeine/CaffeineCache;
            0    2     1    key  Ljava/lang/Object;
            0    2     2  value  Ljava/lang/Object;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
       Name  Flags
      key    
      value  

  public org.springframework.cache.Cache$ValueWrapper putIfAbsent(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Lorg/springframework/cache/Cache$ValueWrapper;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.springframework.cache.caffeine.CaffeineCache this
        start local 1 // java.lang.Object key
        start local 2 // java.lang.Object value
         0: .line 116
            new org.springframework.cache.caffeine.CaffeineCache$PutIfAbsentFunction
            dup
            aload 0 /* this */
            aload 2 /* value */
            invokespecial org.springframework.cache.caffeine.CaffeineCache$PutIfAbsentFunction.<init>:(Lorg/springframework/cache/caffeine/CaffeineCache;Ljava/lang/Object;)V
            astore 3 /* callable */
        start local 3 // org.springframework.cache.caffeine.CaffeineCache$PutIfAbsentFunction callable
         1: .line 117
            aload 0 /* this */
            getfield org.springframework.cache.caffeine.CaffeineCache.cache:Lcom/github/benmanes/caffeine/cache/Cache;
            aload 1 /* key */
            aload 3 /* callable */
            invokeinterface com.github.benmanes.caffeine.cache.Cache.get:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
            astore 4 /* result */
        start local 4 // java.lang.Object result
         2: .line 118
            aload 3 /* callable */
            getfield org.springframework.cache.caffeine.CaffeineCache$PutIfAbsentFunction.called:Z
            ifeq 3
            aconst_null
            goto 4
      StackMap locals: org.springframework.cache.caffeine.CaffeineCache$PutIfAbsentFunction java.lang.Object
      StackMap stack:
         3: aload 0 /* this */
            aload 4 /* result */
            invokevirtual org.springframework.cache.caffeine.CaffeineCache.toValueWrapper:(Ljava/lang/Object;)Lorg/springframework/cache/Cache$ValueWrapper;
      StackMap locals:
      StackMap stack: org.springframework.cache.Cache$ValueWrapper
         4: areturn
        end local 4 // java.lang.Object result
        end local 3 // org.springframework.cache.caffeine.CaffeineCache$PutIfAbsentFunction callable
        end local 2 // java.lang.Object value
        end local 1 // java.lang.Object key
        end local 0 // org.springframework.cache.caffeine.CaffeineCache this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lorg/springframework/cache/caffeine/CaffeineCache;
            0    5     1       key  Ljava/lang/Object;
            0    5     2     value  Ljava/lang/Object;
            1    5     3  callable  Lorg/springframework/cache/caffeine/CaffeineCache$PutIfAbsentFunction;
            2    5     4    result  Ljava/lang/Object;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
       Name  Flags
      key    
      value  final

  public void evict(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.cache.caffeine.CaffeineCache this
        start local 1 // java.lang.Object key
         0: .line 123
            aload 0 /* this */
            getfield org.springframework.cache.caffeine.CaffeineCache.cache:Lcom/github/benmanes/caffeine/cache/Cache;
            aload 1 /* key */
            invokeinterface com.github.benmanes.caffeine.cache.Cache.invalidate:(Ljava/lang/Object;)V
         1: .line 124
            return
        end local 1 // java.lang.Object key
        end local 0 // org.springframework.cache.caffeine.CaffeineCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/cache/caffeine/CaffeineCache;
            0    2     1   key  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      key   

  public void clear();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.cache.caffeine.CaffeineCache this
         0: .line 128
            aload 0 /* this */
            getfield org.springframework.cache.caffeine.CaffeineCache.cache:Lcom/github/benmanes/caffeine/cache/Cache;
            invokeinterface com.github.benmanes.caffeine.cache.Cache.invalidateAll:()V
         1: .line 129
            return
        end local 0 // org.springframework.cache.caffeine.CaffeineCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/cache/caffeine/CaffeineCache;

  public java.lang.Object getNativeCache();
    descriptor: ()Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual org.springframework.cache.caffeine.CaffeineCache.getNativeCache:()Lcom/github/benmanes/caffeine/cache/Cache;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static java.lang.Object access$1(org.springframework.cache.caffeine.CaffeineCache, java.lang.Object);
    descriptor: (Lorg/springframework/cache/caffeine/CaffeineCache;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual org.springframework.cache.caffeine.CaffeineCache.toStoreValue:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "CaffeineCache.java"
NestMembers:
  org.springframework.cache.caffeine.CaffeineCache$LoadFunction  org.springframework.cache.caffeine.CaffeineCache$PutIfAbsentFunction
InnerClasses:
  public abstract ValueWrapper = org.springframework.cache.Cache$ValueWrapper of org.springframework.cache.Cache
  private LoadFunction = org.springframework.cache.caffeine.CaffeineCache$LoadFunction of org.springframework.cache.caffeine.CaffeineCache
  private PutIfAbsentFunction = org.springframework.cache.caffeine.CaffeineCache$PutIfAbsentFunction of org.springframework.cache.caffeine.CaffeineCache