class org.springframework.cache.interceptor.CacheOperationExpressionEvaluator extends org.springframework.context.expression.CachedExpressionEvaluator
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.springframework.cache.interceptor.CacheOperationExpressionEvaluator
  super_class: org.springframework.context.expression.CachedExpressionEvaluator
{
  public static final java.lang.Object NO_RESULT;
    descriptor: Ljava/lang/Object;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final java.lang.Object RESULT_UNAVAILABLE;
    descriptor: Ljava/lang/Object;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final java.lang.String RESULT_VARIABLE;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "result"

  private final java.util.Map<org.springframework.context.expression.CachedExpressionEvaluator$ExpressionKey, org.springframework.expression.Expression> keyCache;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Lorg/springframework/context/expression/CachedExpressionEvaluator$ExpressionKey;Lorg/springframework/expression/Expression;>;

  private final java.util.Map<org.springframework.context.expression.CachedExpressionEvaluator$ExpressionKey, org.springframework.expression.Expression> conditionCache;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Lorg/springframework/context/expression/CachedExpressionEvaluator$ExpressionKey;Lorg/springframework/expression/Expression;>;

  private final java.util.Map<org.springframework.context.expression.CachedExpressionEvaluator$ExpressionKey, org.springframework.expression.Expression> unlessCache;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Lorg/springframework/context/expression/CachedExpressionEvaluator$ExpressionKey;Lorg/springframework/expression/Expression;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 51
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putstatic org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.NO_RESULT:Ljava/lang/Object;
         1: .line 56
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putstatic org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.RESULT_UNAVAILABLE:Ljava/lang/Object;
         2: .line 61
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.springframework.cache.interceptor.CacheOperationExpressionEvaluator this
         0: .line 46
            aload 0 /* this */
            invokespecial org.springframework.context.expression.CachedExpressionEvaluator.<init>:()V
         1: .line 64
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            bipush 64
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
            putfield org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.keyCache:Ljava/util/Map;
         2: .line 66
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            bipush 64
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
            putfield org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.conditionCache:Ljava/util/Map;
         3: .line 68
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            bipush 64
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
            putfield org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.unlessCache:Ljava/util/Map;
         4: .line 46
            return
        end local 0 // org.springframework.cache.interceptor.CacheOperationExpressionEvaluator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/springframework/cache/interceptor/CacheOperationExpressionEvaluator;

  public org.springframework.expression.EvaluationContext createEvaluationContext(java.util.Collection<? extends org.springframework.cache.Cache>, java.lang.reflect.Method, [], , java.lang.Class<?>, java.lang.reflect.Method, , org.springframework.beans.factory.BeanFactory);
    descriptor: (Ljava/util/Collection;Ljava/lang/reflect/Method;[Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/springframework/beans/factory/BeanFactory;)Lorg/springframework/expression/EvaluationContext;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=11, args_size=9
        start local 0 // org.springframework.cache.interceptor.CacheOperationExpressionEvaluator this
        start local 1 // java.util.Collection caches
        start local 2 // java.lang.reflect.Method method
        start local 3 // java.lang.Object[] args
        start local 4 // java.lang.Object target
        start local 5 // java.lang.Class targetClass
        start local 6 // java.lang.reflect.Method targetMethod
        start local 7 // java.lang.Object result
        start local 8 // org.springframework.beans.factory.BeanFactory beanFactory
         0: .line 86
            new org.springframework.cache.interceptor.CacheExpressionRootObject
            dup
         1: .line 87
            aload 1 /* caches */
            aload 2 /* method */
            aload 3 /* args */
            aload 4 /* target */
            aload 5 /* targetClass */
         2: .line 86
            invokespecial org.springframework.cache.interceptor.CacheExpressionRootObject.<init>:(Ljava/util/Collection;Ljava/lang/reflect/Method;[Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Class;)V
            astore 9 /* rootObject */
        start local 9 // org.springframework.cache.interceptor.CacheExpressionRootObject rootObject
         3: .line 88
            new org.springframework.cache.interceptor.CacheEvaluationContext
            dup
         4: .line 89
            aload 9 /* rootObject */
            aload 6 /* targetMethod */
            aload 3 /* args */
            aload 0 /* this */
            invokevirtual org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.getParameterNameDiscoverer:()Lorg/springframework/core/ParameterNameDiscoverer;
         5: .line 88
            invokespecial org.springframework.cache.interceptor.CacheEvaluationContext.<init>:(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/core/ParameterNameDiscoverer;)V
            astore 10 /* evaluationContext */
        start local 10 // org.springframework.cache.interceptor.CacheEvaluationContext evaluationContext
         6: .line 90
            aload 7 /* result */
            getstatic org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.RESULT_UNAVAILABLE:Ljava/lang/Object;
            if_acmpne 9
         7: .line 91
            aload 10 /* evaluationContext */
            ldc "result"
            invokevirtual org.springframework.cache.interceptor.CacheEvaluationContext.addUnavailableVariable:(Ljava/lang/String;)V
         8: .line 92
            goto 11
         9: .line 93
      StackMap locals: org.springframework.cache.interceptor.CacheExpressionRootObject org.springframework.cache.interceptor.CacheEvaluationContext
      StackMap stack:
            aload 7 /* result */
            getstatic org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.NO_RESULT:Ljava/lang/Object;
            if_acmpeq 11
        10: .line 94
            aload 10 /* evaluationContext */
            ldc "result"
            aload 7 /* result */
            invokevirtual org.springframework.cache.interceptor.CacheEvaluationContext.setVariable:(Ljava/lang/String;Ljava/lang/Object;)V
        11: .line 96
      StackMap locals:
      StackMap stack:
            aload 8 /* beanFactory */
            ifnull 13
        12: .line 97
            aload 10 /* evaluationContext */
            new org.springframework.context.expression.BeanFactoryResolver
            dup
            aload 8 /* beanFactory */
            invokespecial org.springframework.context.expression.BeanFactoryResolver.<init>:(Lorg/springframework/beans/factory/BeanFactory;)V
            invokevirtual org.springframework.cache.interceptor.CacheEvaluationContext.setBeanResolver:(Lorg/springframework/expression/BeanResolver;)V
        13: .line 99
      StackMap locals:
      StackMap stack:
            aload 10 /* evaluationContext */
            areturn
        end local 10 // org.springframework.cache.interceptor.CacheEvaluationContext evaluationContext
        end local 9 // org.springframework.cache.interceptor.CacheExpressionRootObject rootObject
        end local 8 // org.springframework.beans.factory.BeanFactory beanFactory
        end local 7 // java.lang.Object result
        end local 6 // java.lang.reflect.Method targetMethod
        end local 5 // java.lang.Class targetClass
        end local 4 // java.lang.Object target
        end local 3 // java.lang.Object[] args
        end local 2 // java.lang.reflect.Method method
        end local 1 // java.util.Collection caches
        end local 0 // org.springframework.cache.interceptor.CacheOperationExpressionEvaluator this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   14     0               this  Lorg/springframework/cache/interceptor/CacheOperationExpressionEvaluator;
            0   14     1             caches  Ljava/util/Collection<+Lorg/springframework/cache/Cache;>;
            0   14     2             method  Ljava/lang/reflect/Method;
            0   14     3               args  [Ljava/lang/Object;
            0   14     4             target  Ljava/lang/Object;
            0   14     5        targetClass  Ljava/lang/Class<*>;
            0   14     6       targetMethod  Ljava/lang/reflect/Method;
            0   14     7             result  Ljava/lang/Object;
            0   14     8        beanFactory  Lorg/springframework/beans/factory/BeanFactory;
            3   14     9         rootObject  Lorg/springframework/cache/interceptor/CacheExpressionRootObject;
            6   14    10  evaluationContext  Lorg/springframework/cache/interceptor/CacheEvaluationContext;
    Signature: (Ljava/util/Collection<+Lorg/springframework/cache/Cache;>;Ljava/lang/reflect/Method;[Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Class<*>;Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/springframework/beans/factory/BeanFactory;)Lorg/springframework/expression/EvaluationContext;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
      4:
      5:
      6:
        org.springframework.lang.Nullable()
      7:
        org.springframework.lang.Nullable()
    MethodParameters:
              Name  Flags
      caches        
      method        
      args          
      target        
      targetClass   
      targetMethod  
      result        
      beanFactory   

  public java.lang.Object key(java.lang.String, org.springframework.context.expression.AnnotatedElementKey, org.springframework.expression.EvaluationContext);
    descriptor: (Ljava/lang/String;Lorg/springframework/context/expression/AnnotatedElementKey;Lorg/springframework/expression/EvaluationContext;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.springframework.cache.interceptor.CacheOperationExpressionEvaluator this
        start local 1 // java.lang.String keyExpression
        start local 2 // org.springframework.context.expression.AnnotatedElementKey methodKey
        start local 3 // org.springframework.expression.EvaluationContext evalContext
         0: .line 104
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.keyCache:Ljava/util/Map;
            aload 2 /* methodKey */
            aload 1 /* keyExpression */
            invokevirtual org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.getExpression:(Ljava/util/Map;Lorg/springframework/context/expression/AnnotatedElementKey;Ljava/lang/String;)Lorg/springframework/expression/Expression;
            aload 3 /* evalContext */
            invokeinterface org.springframework.expression.Expression.getValue:(Lorg/springframework/expression/EvaluationContext;)Ljava/lang/Object;
            areturn
        end local 3 // org.springframework.expression.EvaluationContext evalContext
        end local 2 // org.springframework.context.expression.AnnotatedElementKey methodKey
        end local 1 // java.lang.String keyExpression
        end local 0 // org.springframework.cache.interceptor.CacheOperationExpressionEvaluator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lorg/springframework/cache/interceptor/CacheOperationExpressionEvaluator;
            0    1     1  keyExpression  Ljava/lang/String;
            0    1     2      methodKey  Lorg/springframework/context/expression/AnnotatedElementKey;
            0    1     3    evalContext  Lorg/springframework/expression/EvaluationContext;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
               Name  Flags
      keyExpression  
      methodKey      
      evalContext    

  public boolean condition(java.lang.String, org.springframework.context.expression.AnnotatedElementKey, org.springframework.expression.EvaluationContext);
    descriptor: (Ljava/lang/String;Lorg/springframework/context/expression/AnnotatedElementKey;Lorg/springframework/expression/EvaluationContext;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.springframework.cache.interceptor.CacheOperationExpressionEvaluator this
        start local 1 // java.lang.String conditionExpression
        start local 2 // org.springframework.context.expression.AnnotatedElementKey methodKey
        start local 3 // org.springframework.expression.EvaluationContext evalContext
         0: .line 108
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.conditionCache:Ljava/util/Map;
            aload 2 /* methodKey */
            aload 1 /* conditionExpression */
            invokevirtual org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.getExpression:(Ljava/util/Map;Lorg/springframework/context/expression/AnnotatedElementKey;Ljava/lang/String;)Lorg/springframework/expression/Expression;
         1: .line 109
            aload 3 /* evalContext */
            ldc Ljava/lang/Boolean;
         2: .line 108
            invokeinterface org.springframework.expression.Expression.getValue:(Lorg/springframework/expression/EvaluationContext;Ljava/lang/Class;)Ljava/lang/Object;
            invokevirtual java.lang.Boolean.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 3 // org.springframework.expression.EvaluationContext evalContext
        end local 2 // org.springframework.context.expression.AnnotatedElementKey methodKey
        end local 1 // java.lang.String conditionExpression
        end local 0 // org.springframework.cache.interceptor.CacheOperationExpressionEvaluator this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    3     0                 this  Lorg/springframework/cache/interceptor/CacheOperationExpressionEvaluator;
            0    3     1  conditionExpression  Ljava/lang/String;
            0    3     2            methodKey  Lorg/springframework/context/expression/AnnotatedElementKey;
            0    3     3          evalContext  Lorg/springframework/expression/EvaluationContext;
    MethodParameters:
                     Name  Flags
      conditionExpression  
      methodKey            
      evalContext          

  public boolean unless(java.lang.String, org.springframework.context.expression.AnnotatedElementKey, org.springframework.expression.EvaluationContext);
    descriptor: (Ljava/lang/String;Lorg/springframework/context/expression/AnnotatedElementKey;Lorg/springframework/expression/EvaluationContext;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.springframework.cache.interceptor.CacheOperationExpressionEvaluator this
        start local 1 // java.lang.String unlessExpression
        start local 2 // org.springframework.context.expression.AnnotatedElementKey methodKey
        start local 3 // org.springframework.expression.EvaluationContext evalContext
         0: .line 113
            getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.unlessCache:Ljava/util/Map;
            aload 2 /* methodKey */
            aload 1 /* unlessExpression */
            invokevirtual org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.getExpression:(Ljava/util/Map;Lorg/springframework/context/expression/AnnotatedElementKey;Ljava/lang/String;)Lorg/springframework/expression/Expression;
         1: .line 114
            aload 3 /* evalContext */
            ldc Ljava/lang/Boolean;
         2: .line 113
            invokeinterface org.springframework.expression.Expression.getValue:(Lorg/springframework/expression/EvaluationContext;Ljava/lang/Class;)Ljava/lang/Object;
            invokevirtual java.lang.Boolean.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 3 // org.springframework.expression.EvaluationContext evalContext
        end local 2 // org.springframework.context.expression.AnnotatedElementKey methodKey
        end local 1 // java.lang.String unlessExpression
        end local 0 // org.springframework.cache.interceptor.CacheOperationExpressionEvaluator this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    3     0              this  Lorg/springframework/cache/interceptor/CacheOperationExpressionEvaluator;
            0    3     1  unlessExpression  Ljava/lang/String;
            0    3     2         methodKey  Lorg/springframework/context/expression/AnnotatedElementKey;
            0    3     3       evalContext  Lorg/springframework/expression/EvaluationContext;
    MethodParameters:
                  Name  Flags
      unlessExpression  
      methodKey         
      evalContext       

  void clear();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.cache.interceptor.CacheOperationExpressionEvaluator this
         0: .line 121
            aload 0 /* this */
            getfield org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.keyCache:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         1: .line 122
            aload 0 /* this */
            getfield org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.conditionCache:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         2: .line 123
            aload 0 /* this */
            getfield org.springframework.cache.interceptor.CacheOperationExpressionEvaluator.unlessCache:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         3: .line 124
            return
        end local 0 // org.springframework.cache.interceptor.CacheOperationExpressionEvaluator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/springframework/cache/interceptor/CacheOperationExpressionEvaluator;
}
SourceFile: "CacheOperationExpressionEvaluator.java"
InnerClasses:
  protected ExpressionKey = org.springframework.context.expression.CachedExpressionEvaluator$ExpressionKey of org.springframework.context.expression.CachedExpressionEvaluator