class org.springframework.cache.config.CacheAdviceParser extends org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.springframework.cache.config.CacheAdviceParser
  super_class: org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser
{
  private static final java.lang.String CACHEABLE_ELEMENT;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "cacheable"

  private static final java.lang.String CACHE_EVICT_ELEMENT;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "cache-evict"

  private static final java.lang.String CACHE_PUT_ELEMENT;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "cache-put"

  private static final java.lang.String METHOD_ATTRIBUTE;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "method"

  private static final java.lang.String DEFS_ELEMENT;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "caching"

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.cache.config.CacheAdviceParser this
         0: .line 51
            aload 0 /* this */
            invokespecial org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser.<init>:()V
            return
        end local 0 // org.springframework.cache.config.CacheAdviceParser this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/cache/config/CacheAdviceParser;

  protected java.lang.Class<?> getBeanClass(org.w3c.dom.Element);
    descriptor: (Lorg/w3c/dom/Element;)Ljava/lang/Class;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.springframework.cache.config.CacheAdviceParser this
        start local 1 // org.w3c.dom.Element element
         0: .line 66
            ldc Lorg/springframework/cache/interceptor/CacheInterceptor;
            areturn
        end local 1 // org.w3c.dom.Element element
        end local 0 // org.springframework.cache.config.CacheAdviceParser this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/springframework/cache/config/CacheAdviceParser;
            0    1     1  element  Lorg/w3c/dom/Element;
    Signature: (Lorg/w3c/dom/Element;)Ljava/lang/Class<*>;
    MethodParameters:
         Name  Flags
      element  

  protected void doParse(org.w3c.dom.Element, org.springframework.beans.factory.xml.ParserContext, org.springframework.beans.factory.support.BeanDefinitionBuilder);
    descriptor: (Lorg/w3c/dom/Element;Lorg/springframework/beans/factory/xml/ParserContext;Lorg/springframework/beans/factory/support/BeanDefinitionBuilder;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // org.springframework.cache.config.CacheAdviceParser this
        start local 1 // org.w3c.dom.Element element
        start local 2 // org.springframework.beans.factory.xml.ParserContext parserContext
        start local 3 // org.springframework.beans.factory.support.BeanDefinitionBuilder builder
         0: .line 71
            aload 3 /* builder */
            ldc "cacheManager"
            aload 1 /* element */
            invokestatic org.springframework.cache.config.CacheNamespaceHandler.extractCacheManager:(Lorg/w3c/dom/Element;)Ljava/lang/String;
            invokevirtual org.springframework.beans.factory.support.BeanDefinitionBuilder.addPropertyReference:(Ljava/lang/String;Ljava/lang/String;)Lorg/springframework/beans/factory/support/BeanDefinitionBuilder;
            pop
         1: .line 72
            aload 1 /* element */
            aload 3 /* builder */
            invokevirtual org.springframework.beans.factory.support.BeanDefinitionBuilder.getBeanDefinition:()Lorg/springframework/beans/factory/support/AbstractBeanDefinition;
            invokestatic org.springframework.cache.config.CacheNamespaceHandler.parseKeyGenerator:(Lorg/w3c/dom/Element;Lorg/springframework/beans/factory/config/BeanDefinition;)Lorg/springframework/beans/factory/config/BeanDefinition;
            pop
         2: .line 74
            aload 1 /* element */
            ldc "caching"
            invokestatic org.springframework.util.xml.DomUtils.getChildElementsByTagName:(Lorg/w3c/dom/Element;Ljava/lang/String;)Ljava/util/List;
            astore 4 /* cacheDefs */
        start local 4 // java.util.List cacheDefs
         3: .line 75
            aload 4 /* cacheDefs */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 7
         4: .line 77
            aload 0 /* this */
            aload 4 /* cacheDefs */
            aload 2 /* parserContext */
            invokevirtual org.springframework.cache.config.CacheAdviceParser.parseDefinitionsSources:(Ljava/util/List;Lorg/springframework/beans/factory/xml/ParserContext;)Ljava/util/List;
            astore 5 /* attributeSourceDefinitions */
        start local 5 // java.util.List attributeSourceDefinitions
         5: .line 78
            aload 3 /* builder */
            ldc "cacheOperationSources"
            aload 5 /* attributeSourceDefinitions */
            invokevirtual org.springframework.beans.factory.support.BeanDefinitionBuilder.addPropertyValue:(Ljava/lang/String;Ljava/lang/Object;)Lorg/springframework/beans/factory/support/BeanDefinitionBuilder;
            pop
        end local 5 // java.util.List attributeSourceDefinitions
         6: .line 79
            goto 10
         7: .line 82
      StackMap locals: java.util.List
      StackMap stack:
            aload 3 /* builder */
            ldc "cacheOperationSources"
         8: .line 83
            new org.springframework.beans.factory.support.RootBeanDefinition
            dup
            ldc "org.springframework.cache.annotation.AnnotationCacheOperationSource"
            invokespecial org.springframework.beans.factory.support.RootBeanDefinition.<init>:(Ljava/lang/String;)V
         9: .line 82
            invokevirtual org.springframework.beans.factory.support.BeanDefinitionBuilder.addPropertyValue:(Ljava/lang/String;Ljava/lang/Object;)Lorg/springframework/beans/factory/support/BeanDefinitionBuilder;
            pop
        10: .line 85
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.util.List cacheDefs
        end local 3 // org.springframework.beans.factory.support.BeanDefinitionBuilder builder
        end local 2 // org.springframework.beans.factory.xml.ParserContext parserContext
        end local 1 // org.w3c.dom.Element element
        end local 0 // org.springframework.cache.config.CacheAdviceParser this
      LocalVariableTable:
        Start  End  Slot                        Name  Signature
            0   11     0                        this  Lorg/springframework/cache/config/CacheAdviceParser;
            0   11     1                     element  Lorg/w3c/dom/Element;
            0   11     2               parserContext  Lorg/springframework/beans/factory/xml/ParserContext;
            0   11     3                     builder  Lorg/springframework/beans/factory/support/BeanDefinitionBuilder;
            3   11     4                   cacheDefs  Ljava/util/List<Lorg/w3c/dom/Element;>;
            5    6     5  attributeSourceDefinitions  Ljava/util/List<Lorg/springframework/beans/factory/support/RootBeanDefinition;>;
    MethodParameters:
               Name  Flags
      element        
      parserContext  
      builder        

  private java.util.List<org.springframework.beans.factory.support.RootBeanDefinition> parseDefinitionsSources(java.util.List<org.w3c.dom.Element>, org.springframework.beans.factory.xml.ParserContext);
    descriptor: (Ljava/util/List;Lorg/springframework/beans/factory/xml/ParserContext;)Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.springframework.cache.config.CacheAdviceParser this
        start local 1 // java.util.List definitions
        start local 2 // org.springframework.beans.factory.xml.ParserContext parserContext
         0: .line 88
            new org.springframework.beans.factory.support.ManagedList
            dup
            aload 1 /* definitions */
            invokeinterface java.util.List.size:()I
            invokespecial org.springframework.beans.factory.support.ManagedList.<init>:(I)V
            astore 3 /* defs */
        start local 3 // org.springframework.beans.factory.support.ManagedList defs
         1: .line 91
            aload 1 /* definitions */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 4
      StackMap locals: org.springframework.cache.config.CacheAdviceParser java.util.List org.springframework.beans.factory.xml.ParserContext org.springframework.beans.factory.support.ManagedList top java.util.Iterator
      StackMap stack:
         2: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.w3c.dom.Element
            astore 4 /* element */
        start local 4 // org.w3c.dom.Element element
         3: .line 92
            aload 3 /* defs */
            aload 0 /* this */
            aload 4 /* element */
            aload 2 /* parserContext */
            invokevirtual org.springframework.cache.config.CacheAdviceParser.parseDefinitionSource:(Lorg/w3c/dom/Element;Lorg/springframework/beans/factory/xml/ParserContext;)Lorg/springframework/beans/factory/support/RootBeanDefinition;
            invokevirtual org.springframework.beans.factory.support.ManagedList.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // org.w3c.dom.Element element
         4: .line 91
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 95
            aload 3 /* defs */
            areturn
        end local 3 // org.springframework.beans.factory.support.ManagedList defs
        end local 2 // org.springframework.beans.factory.xml.ParserContext parserContext
        end local 1 // java.util.List definitions
        end local 0 // org.springframework.cache.config.CacheAdviceParser this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           this  Lorg/springframework/cache/config/CacheAdviceParser;
            0    6     1    definitions  Ljava/util/List<Lorg/w3c/dom/Element;>;
            0    6     2  parserContext  Lorg/springframework/beans/factory/xml/ParserContext;
            1    6     3           defs  Lorg/springframework/beans/factory/support/ManagedList<Lorg/springframework/beans/factory/support/RootBeanDefinition;>;
            3    4     4        element  Lorg/w3c/dom/Element;
    Signature: (Ljava/util/List<Lorg/w3c/dom/Element;>;Lorg/springframework/beans/factory/xml/ParserContext;)Ljava/util/List<Lorg/springframework/beans/factory/support/RootBeanDefinition;>;
    MethodParameters:
               Name  Flags
      definitions    
      parserContext  

  private org.springframework.beans.factory.support.RootBeanDefinition parseDefinitionSource(org.w3c.dom.Element, org.springframework.beans.factory.xml.ParserContext);
    descriptor: (Lorg/w3c/dom/Element;Lorg/springframework/beans/factory/xml/ParserContext;)Lorg/springframework/beans/factory/support/RootBeanDefinition;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=15, args_size=3
        start local 0 // org.springframework.cache.config.CacheAdviceParser this
        start local 1 // org.w3c.dom.Element definition
        start local 2 // org.springframework.beans.factory.xml.ParserContext parserContext
         0: .line 99
            new org.springframework.cache.config.CacheAdviceParser$Props
            dup
            aload 1 /* definition */
            invokespecial org.springframework.cache.config.CacheAdviceParser$Props.<init>:(Lorg/w3c/dom/Element;)V
            astore 3 /* prop */
        start local 3 // org.springframework.cache.config.CacheAdviceParser$Props prop
         1: .line 102
            new org.springframework.beans.factory.support.ManagedMap
            dup
            invokespecial org.springframework.beans.factory.support.ManagedMap.<init>:()V
            astore 4 /* cacheOpMap */
        start local 4 // org.springframework.beans.factory.support.ManagedMap cacheOpMap
         2: .line 103
            aload 4 /* cacheOpMap */
            aload 2 /* parserContext */
            aload 1 /* definition */
            invokevirtual org.springframework.beans.factory.xml.ParserContext.extractSource:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual org.springframework.beans.factory.support.ManagedMap.setSource:(Ljava/lang/Object;)V
         3: .line 105
            aload 1 /* definition */
            ldc "cacheable"
            invokestatic org.springframework.util.xml.DomUtils.getChildElementsByTagName:(Lorg/w3c/dom/Element;Ljava/lang/String;)Ljava/util/List;
            astore 5 /* cacheableCacheMethods */
        start local 5 // java.util.List cacheableCacheMethods
         4: .line 107
            aload 5 /* cacheableCacheMethods */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 19
      StackMap locals: org.springframework.cache.config.CacheAdviceParser org.w3c.dom.Element org.springframework.beans.factory.xml.ParserContext org.springframework.cache.config.CacheAdviceParser$Props org.springframework.beans.factory.support.ManagedMap java.util.List top java.util.Iterator
      StackMap stack:
         5: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.w3c.dom.Element
            astore 6 /* opElement */
        start local 6 // org.w3c.dom.Element opElement
         6: .line 108
            aload 3 /* prop */
            aload 6 /* opElement */
            aload 2 /* parserContext */
            invokevirtual org.springframework.beans.factory.xml.ParserContext.getReaderContext:()Lorg/springframework/beans/factory/xml/XmlReaderContext;
            invokevirtual org.springframework.cache.config.CacheAdviceParser$Props.merge:(Lorg/w3c/dom/Element;Lorg/springframework/beans/factory/parsing/ReaderContext;)Ljava/lang/String;
            astore 8 /* name */
        start local 8 // java.lang.String name
         7: .line 109
            new org.springframework.beans.factory.config.TypedStringValue
            dup
            aload 8 /* name */
            invokespecial org.springframework.beans.factory.config.TypedStringValue.<init>:(Ljava/lang/String;)V
            astore 9 /* nameHolder */
        start local 9 // org.springframework.beans.factory.config.TypedStringValue nameHolder
         8: .line 110
            aload 9 /* nameHolder */
            aload 2 /* parserContext */
            aload 6 /* opElement */
            invokevirtual org.springframework.beans.factory.xml.ParserContext.extractSource:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual org.springframework.beans.factory.config.TypedStringValue.setSource:(Ljava/lang/Object;)V
         9: .line 111
            aload 3 /* prop */
            aload 6 /* opElement */
        10: .line 112
            aload 2 /* parserContext */
            invokevirtual org.springframework.beans.factory.xml.ParserContext.getReaderContext:()Lorg/springframework/beans/factory/xml/XmlReaderContext;
            new org.springframework.cache.interceptor.CacheableOperation$Builder
            dup
            invokespecial org.springframework.cache.interceptor.CacheableOperation$Builder.<init>:()V
        11: .line 111
            invokevirtual org.springframework.cache.config.CacheAdviceParser$Props.merge:(Lorg/w3c/dom/Element;Lorg/springframework/beans/factory/parsing/ReaderContext;Lorg/springframework/cache/interceptor/CacheOperation$Builder;)Lorg/springframework/cache/interceptor/CacheOperation$Builder;
            checkcast org.springframework.cache.interceptor.CacheableOperation$Builder
            astore 10 /* builder */
        start local 10 // org.springframework.cache.interceptor.CacheableOperation$Builder builder
        12: .line 113
            aload 10 /* builder */
            aload 6 /* opElement */
            ldc "unless"
            ldc ""
            invokestatic org.springframework.cache.config.CacheAdviceParser.getAttributeValue:(Lorg/w3c/dom/Element;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual org.springframework.cache.interceptor.CacheableOperation$Builder.setUnless:(Ljava/lang/String;)V
        13: .line 114
            aload 10 /* builder */
            aload 6 /* opElement */
            ldc "sync"
            ldc "false"
            invokestatic org.springframework.cache.config.CacheAdviceParser.getAttributeValue:(Lorg/w3c/dom/Element;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.Boolean.valueOf:(Ljava/lang/String;)Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokevirtual org.springframework.cache.interceptor.CacheableOperation$Builder.setSync:(Z)V
        14: .line 116
            aload 4 /* cacheOpMap */
            aload 9 /* nameHolder */
            invokevirtual org.springframework.beans.factory.support.ManagedMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Collection
            astore 11 /* col */
        start local 11 // java.util.Collection col
        15: .line 117
            aload 11 /* col */
            ifnonnull 18
        16: .line 118
            new java.util.ArrayList
            dup
            iconst_2
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 11 /* col */
        17: .line 119
            aload 4 /* cacheOpMap */
            aload 9 /* nameHolder */
            aload 11 /* col */
            invokevirtual org.springframework.beans.factory.support.ManagedMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        18: .line 121
      StackMap locals: org.springframework.cache.config.CacheAdviceParser org.w3c.dom.Element org.springframework.beans.factory.xml.ParserContext org.springframework.cache.config.CacheAdviceParser$Props org.springframework.beans.factory.support.ManagedMap java.util.List org.w3c.dom.Element java.util.Iterator java.lang.String org.springframework.beans.factory.config.TypedStringValue org.springframework.cache.interceptor.CacheableOperation$Builder java.util.Collection
      StackMap stack:
            aload 11 /* col */
            aload 10 /* builder */
            invokevirtual org.springframework.cache.interceptor.CacheableOperation$Builder.build:()Lorg/springframework/cache/interceptor/CacheableOperation;
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        end local 11 // java.util.Collection col
        end local 10 // org.springframework.cache.interceptor.CacheableOperation$Builder builder
        end local 9 // org.springframework.beans.factory.config.TypedStringValue nameHolder
        end local 8 // java.lang.String name
        end local 6 // org.w3c.dom.Element opElement
        19: .line 107
      StackMap locals: org.springframework.cache.config.CacheAdviceParser org.w3c.dom.Element org.springframework.beans.factory.xml.ParserContext org.springframework.cache.config.CacheAdviceParser$Props org.springframework.beans.factory.support.ManagedMap java.util.List top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        20: .line 124
            aload 1 /* definition */
            ldc "cache-evict"
            invokestatic org.springframework.util.xml.DomUtils.getChildElementsByTagName:(Lorg/w3c/dom/Element;Ljava/lang/String;)Ljava/util/List;
            astore 6 /* evictCacheMethods */
        start local 6 // java.util.List evictCacheMethods
        21: .line 126
            aload 6 /* evictCacheMethods */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 8
            goto 40
      StackMap locals: org.springframework.cache.config.CacheAdviceParser org.w3c.dom.Element org.springframework.beans.factory.xml.ParserContext org.springframework.cache.config.CacheAdviceParser$Props org.springframework.beans.factory.support.ManagedMap java.util.List java.util.List top java.util.Iterator
      StackMap stack:
        22: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.w3c.dom.Element
            astore 7 /* opElement */
        start local 7 // org.w3c.dom.Element opElement
        23: .line 127
            aload 3 /* prop */
            aload 7 /* opElement */
            aload 2 /* parserContext */
            invokevirtual org.springframework.beans.factory.xml.ParserContext.getReaderContext:()Lorg/springframework/beans/factory/xml/XmlReaderContext;
            invokevirtual org.springframework.cache.config.CacheAdviceParser$Props.merge:(Lorg/w3c/dom/Element;Lorg/springframework/beans/factory/parsing/ReaderContext;)Ljava/lang/String;
            astore 9 /* name */
        start local 9 // java.lang.String name
        24: .line 128
            new org.springframework.beans.factory.config.TypedStringValue
            dup
            aload 9 /* name */
            invokespecial org.springframework.beans.factory.config.TypedStringValue.<init>:(Ljava/lang/String;)V
            astore 10 /* nameHolder */
        start local 10 // org.springframework.beans.factory.config.TypedStringValue nameHolder
        25: .line 129
            aload 10 /* nameHolder */
            aload 2 /* parserContext */
            aload 7 /* opElement */
            invokevirtual org.springframework.beans.factory.xml.ParserContext.extractSource:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual org.springframework.beans.factory.config.TypedStringValue.setSource:(Ljava/lang/Object;)V
        26: .line 130
            aload 3 /* prop */
            aload 7 /* opElement */
        27: .line 131
            aload 2 /* parserContext */
            invokevirtual org.springframework.beans.factory.xml.ParserContext.getReaderContext:()Lorg/springframework/beans/factory/xml/XmlReaderContext;
            new org.springframework.cache.interceptor.CacheEvictOperation$Builder
            dup
            invokespecial org.springframework.cache.interceptor.CacheEvictOperation$Builder.<init>:()V
        28: .line 130
            invokevirtual org.springframework.cache.config.CacheAdviceParser$Props.merge:(Lorg/w3c/dom/Element;Lorg/springframework/beans/factory/parsing/ReaderContext;Lorg/springframework/cache/interceptor/CacheOperation$Builder;)Lorg/springframework/cache/interceptor/CacheOperation$Builder;
            checkcast org.springframework.cache.interceptor.CacheEvictOperation$Builder
            astore 11 /* builder */
        start local 11 // org.springframework.cache.interceptor.CacheEvictOperation$Builder builder
        29: .line 133
            aload 7 /* opElement */
            ldc "all-entries"
            invokeinterface org.w3c.dom.Element.getAttribute:(Ljava/lang/String;)Ljava/lang/String;
            astore 12 /* wide */
        start local 12 // java.lang.String wide
        30: .line 134
            aload 12 /* wide */
            invokestatic org.springframework.util.StringUtils.hasText:(Ljava/lang/String;)Z
            ifeq 32
        31: .line 135
            aload 11 /* builder */
            aload 12 /* wide */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokestatic java.lang.Boolean.valueOf:(Ljava/lang/String;)Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokevirtual org.springframework.cache.interceptor.CacheEvictOperation$Builder.setCacheWide:(Z)V
        32: .line 138
      StackMap locals: org.springframework.cache.config.CacheAdviceParser org.w3c.dom.Element org.springframework.beans.factory.xml.ParserContext org.springframework.cache.config.CacheAdviceParser$Props org.springframework.beans.factory.support.ManagedMap java.util.List java.util.List org.w3c.dom.Element java.util.Iterator java.lang.String org.springframework.beans.factory.config.TypedStringValue org.springframework.cache.interceptor.CacheEvictOperation$Builder java.lang.String
      StackMap stack:
            aload 7 /* opElement */
            ldc "before-invocation"
            invokeinterface org.w3c.dom.Element.getAttribute:(Ljava/lang/String;)Ljava/lang/String;
            astore 13 /* after */
        start local 13 // java.lang.String after
        33: .line 139
            aload 13 /* after */
            invokestatic org.springframework.util.StringUtils.hasText:(Ljava/lang/String;)Z
            ifeq 35
        34: .line 140
            aload 11 /* builder */
            aload 13 /* after */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokestatic java.lang.Boolean.valueOf:(Ljava/lang/String;)Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
            invokevirtual org.springframework.cache.interceptor.CacheEvictOperation$Builder.setBeforeInvocation:(Z)V
        35: .line 143
      StackMap locals: java.lang.String
      StackMap stack:
            aload 4 /* cacheOpMap */
            aload 10 /* nameHolder */
            invokevirtual org.springframework.beans.factory.support.ManagedMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Collection
            astore 14 /* col */
        start local 14 // java.util.Collection col
        36: .line 144
            aload 14 /* col */
            ifnonnull 39
        37: .line 145
            new java.util.ArrayList
            dup
            iconst_2
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 14 /* col */
        38: .line 146
            aload 4 /* cacheOpMap */
            aload 10 /* nameHolder */
            aload 14 /* col */
            invokevirtual org.springframework.beans.factory.support.ManagedMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        39: .line 148
      StackMap locals: java.util.Collection
      StackMap stack:
            aload 14 /* col */
            aload 11 /* builder */
            invokevirtual org.springframework.cache.interceptor.CacheEvictOperation$Builder.build:()Lorg/springframework/cache/interceptor/CacheEvictOperation;
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        end local 14 // java.util.Collection col
        end local 13 // java.lang.String after
        end local 12 // java.lang.String wide
        end local 11 // org.springframework.cache.interceptor.CacheEvictOperation$Builder builder
        end local 10 // org.springframework.beans.factory.config.TypedStringValue nameHolder
        end local 9 // java.lang.String name
        end local 7 // org.w3c.dom.Element opElement
        40: .line 126
      StackMap locals: org.springframework.cache.config.CacheAdviceParser org.w3c.dom.Element org.springframework.beans.factory.xml.ParserContext org.springframework.cache.config.CacheAdviceParser$Props org.springframework.beans.factory.support.ManagedMap java.util.List java.util.List top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 22
        41: .line 151
            aload 1 /* definition */
            ldc "cache-put"
            invokestatic org.springframework.util.xml.DomUtils.getChildElementsByTagName:(Lorg/w3c/dom/Element;Ljava/lang/String;)Ljava/util/List;
            astore 7 /* putCacheMethods */
        start local 7 // java.util.List putCacheMethods
        42: .line 153
            aload 7 /* putCacheMethods */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9
            goto 56
      StackMap locals: org.springframework.cache.config.CacheAdviceParser org.w3c.dom.Element org.springframework.beans.factory.xml.ParserContext org.springframework.cache.config.CacheAdviceParser$Props org.springframework.beans.factory.support.ManagedMap java.util.List java.util.List java.util.List top java.util.Iterator
      StackMap stack:
        43: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.w3c.dom.Element
            astore 8 /* opElement */
        start local 8 // org.w3c.dom.Element opElement
        44: .line 154
            aload 3 /* prop */
            aload 8 /* opElement */
            aload 2 /* parserContext */
            invokevirtual org.springframework.beans.factory.xml.ParserContext.getReaderContext:()Lorg/springframework/beans/factory/xml/XmlReaderContext;
            invokevirtual org.springframework.cache.config.CacheAdviceParser$Props.merge:(Lorg/w3c/dom/Element;Lorg/springframework/beans/factory/parsing/ReaderContext;)Ljava/lang/String;
            astore 10 /* name */
        start local 10 // java.lang.String name
        45: .line 155
            new org.springframework.beans.factory.config.TypedStringValue
            dup
            aload 10 /* name */
            invokespecial org.springframework.beans.factory.config.TypedStringValue.<init>:(Ljava/lang/String;)V
            astore 11 /* nameHolder */
        start local 11 // org.springframework.beans.factory.config.TypedStringValue nameHolder
        46: .line 156
            aload 11 /* nameHolder */
            aload 2 /* parserContext */
            aload 8 /* opElement */
            invokevirtual org.springframework.beans.factory.xml.ParserContext.extractSource:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual org.springframework.beans.factory.config.TypedStringValue.setSource:(Ljava/lang/Object;)V
        47: .line 157
            aload 3 /* prop */
            aload 8 /* opElement */
        48: .line 158
            aload 2 /* parserContext */
            invokevirtual org.springframework.beans.factory.xml.ParserContext.getReaderContext:()Lorg/springframework/beans/factory/xml/XmlReaderContext;
            new org.springframework.cache.interceptor.CachePutOperation$Builder
            dup
            invokespecial org.springframework.cache.interceptor.CachePutOperation$Builder.<init>:()V
        49: .line 157
            invokevirtual org.springframework.cache.config.CacheAdviceParser$Props.merge:(Lorg/w3c/dom/Element;Lorg/springframework/beans/factory/parsing/ReaderContext;Lorg/springframework/cache/interceptor/CacheOperation$Builder;)Lorg/springframework/cache/interceptor/CacheOperation$Builder;
            checkcast org.springframework.cache.interceptor.CachePutOperation$Builder
            astore 12 /* builder */
        start local 12 // org.springframework.cache.interceptor.CachePutOperation$Builder builder
        50: .line 159
            aload 12 /* builder */
            aload 8 /* opElement */
            ldc "unless"
            ldc ""
            invokestatic org.springframework.cache.config.CacheAdviceParser.getAttributeValue:(Lorg/w3c/dom/Element;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual org.springframework.cache.interceptor.CachePutOperation$Builder.setUnless:(Ljava/lang/String;)V
        51: .line 161
            aload 4 /* cacheOpMap */
            aload 11 /* nameHolder */
            invokevirtual org.springframework.beans.factory.support.ManagedMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Collection
            astore 13 /* col */
        start local 13 // java.util.Collection col
        52: .line 162
            aload 13 /* col */
            ifnonnull 55
        53: .line 163
            new java.util.ArrayList
            dup
            iconst_2
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 13 /* col */
        54: .line 164
            aload 4 /* cacheOpMap */
            aload 11 /* nameHolder */
            aload 13 /* col */
            invokevirtual org.springframework.beans.factory.support.ManagedMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        55: .line 166
      StackMap locals: org.springframework.cache.config.CacheAdviceParser org.w3c.dom.Element org.springframework.beans.factory.xml.ParserContext org.springframework.cache.config.CacheAdviceParser$Props org.springframework.beans.factory.support.ManagedMap java.util.List java.util.List java.util.List org.w3c.dom.Element java.util.Iterator java.lang.String org.springframework.beans.factory.config.TypedStringValue org.springframework.cache.interceptor.CachePutOperation$Builder java.util.Collection
      StackMap stack:
            aload 13 /* col */
            aload 12 /* builder */
            invokevirtual org.springframework.cache.interceptor.CachePutOperation$Builder.build:()Lorg/springframework/cache/interceptor/CachePutOperation;
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        end local 13 // java.util.Collection col
        end local 12 // org.springframework.cache.interceptor.CachePutOperation$Builder builder
        end local 11 // org.springframework.beans.factory.config.TypedStringValue nameHolder
        end local 10 // java.lang.String name
        end local 8 // org.w3c.dom.Element opElement
        56: .line 153
      StackMap locals: org.springframework.cache.config.CacheAdviceParser org.w3c.dom.Element org.springframework.beans.factory.xml.ParserContext org.springframework.cache.config.CacheAdviceParser$Props org.springframework.beans.factory.support.ManagedMap java.util.List java.util.List java.util.List top java.util.Iterator
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 43
        57: .line 169
            new org.springframework.beans.factory.support.RootBeanDefinition
            dup
            ldc Lorg/springframework/cache/interceptor/NameMatchCacheOperationSource;
            invokespecial org.springframework.beans.factory.support.RootBeanDefinition.<init>:(Ljava/lang/Class;)V
            astore 8 /* attributeSourceDefinition */
        start local 8 // org.springframework.beans.factory.support.RootBeanDefinition attributeSourceDefinition
        58: .line 170
            aload 8 /* attributeSourceDefinition */
            aload 2 /* parserContext */
            aload 1 /* definition */
            invokevirtual org.springframework.beans.factory.xml.ParserContext.extractSource:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual org.springframework.beans.factory.support.RootBeanDefinition.setSource:(Ljava/lang/Object;)V
        59: .line 171
            aload 8 /* attributeSourceDefinition */
            invokevirtual org.springframework.beans.factory.support.RootBeanDefinition.getPropertyValues:()Lorg/springframework/beans/MutablePropertyValues;
            ldc "nameMap"
            aload 4 /* cacheOpMap */
            invokevirtual org.springframework.beans.MutablePropertyValues.add:(Ljava/lang/String;Ljava/lang/Object;)Lorg/springframework/beans/MutablePropertyValues;
            pop
        60: .line 172
            aload 8 /* attributeSourceDefinition */
            areturn
        end local 8 // org.springframework.beans.factory.support.RootBeanDefinition attributeSourceDefinition
        end local 7 // java.util.List putCacheMethods
        end local 6 // java.util.List evictCacheMethods
        end local 5 // java.util.List cacheableCacheMethods
        end local 4 // org.springframework.beans.factory.support.ManagedMap cacheOpMap
        end local 3 // org.springframework.cache.config.CacheAdviceParser$Props prop
        end local 2 // org.springframework.beans.factory.xml.ParserContext parserContext
        end local 1 // org.w3c.dom.Element definition
        end local 0 // org.springframework.cache.config.CacheAdviceParser this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   61     0                       this  Lorg/springframework/cache/config/CacheAdviceParser;
            0   61     1                 definition  Lorg/w3c/dom/Element;
            0   61     2              parserContext  Lorg/springframework/beans/factory/xml/ParserContext;
            1   61     3                       prop  Lorg/springframework/cache/config/CacheAdviceParser$Props;
            2   61     4                 cacheOpMap  Lorg/springframework/beans/factory/support/ManagedMap<Lorg/springframework/beans/factory/config/TypedStringValue;Ljava/util/Collection<Lorg/springframework/cache/interceptor/CacheOperation;>;>;
            4   61     5      cacheableCacheMethods  Ljava/util/List<Lorg/w3c/dom/Element;>;
            6   19     6                  opElement  Lorg/w3c/dom/Element;
            7   19     8                       name  Ljava/lang/String;
            8   19     9                 nameHolder  Lorg/springframework/beans/factory/config/TypedStringValue;
           12   19    10                    builder  Lorg/springframework/cache/interceptor/CacheableOperation$Builder;
           15   19    11                        col  Ljava/util/Collection<Lorg/springframework/cache/interceptor/CacheOperation;>;
           21   61     6          evictCacheMethods  Ljava/util/List<Lorg/w3c/dom/Element;>;
           23   40     7                  opElement  Lorg/w3c/dom/Element;
           24   40     9                       name  Ljava/lang/String;
           25   40    10                 nameHolder  Lorg/springframework/beans/factory/config/TypedStringValue;
           29   40    11                    builder  Lorg/springframework/cache/interceptor/CacheEvictOperation$Builder;
           30   40    12                       wide  Ljava/lang/String;
           33   40    13                      after  Ljava/lang/String;
           36   40    14                        col  Ljava/util/Collection<Lorg/springframework/cache/interceptor/CacheOperation;>;
           42   61     7            putCacheMethods  Ljava/util/List<Lorg/w3c/dom/Element;>;
           44   56     8                  opElement  Lorg/w3c/dom/Element;
           45   56    10                       name  Ljava/lang/String;
           46   56    11                 nameHolder  Lorg/springframework/beans/factory/config/TypedStringValue;
           50   56    12                    builder  Lorg/springframework/cache/interceptor/CachePutOperation$Builder;
           52   56    13                        col  Ljava/util/Collection<Lorg/springframework/cache/interceptor/CacheOperation;>;
           58   61     8  attributeSourceDefinition  Lorg/springframework/beans/factory/support/RootBeanDefinition;
    MethodParameters:
               Name  Flags
      definition     
      parserContext  

  private static java.lang.String getAttributeValue(org.w3c.dom.Element, java.lang.String, java.lang.String);
    descriptor: (Lorg/w3c/dom/Element;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.w3c.dom.Element element
        start local 1 // java.lang.String attributeName
        start local 2 // java.lang.String defaultValue
         0: .line 177
            aload 0 /* element */
            aload 1 /* attributeName */
            invokeinterface org.w3c.dom.Element.getAttribute:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* attribute */
        start local 3 // java.lang.String attribute
         1: .line 178
            aload 3 /* attribute */
            invokestatic org.springframework.util.StringUtils.hasText:(Ljava/lang/String;)Z
            ifeq 3
         2: .line 179
            aload 3 /* attribute */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            areturn
         3: .line 181
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* defaultValue */
            areturn
        end local 3 // java.lang.String attribute
        end local 2 // java.lang.String defaultValue
        end local 1 // java.lang.String attributeName
        end local 0 // org.w3c.dom.Element element
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0        element  Lorg/w3c/dom/Element;
            0    4     1  attributeName  Ljava/lang/String;
            0    4     2   defaultValue  Ljava/lang/String;
            1    4     3      attribute  Ljava/lang/String;
    MethodParameters:
               Name  Flags
      element        
      attributeName  
      defaultValue   
}
SourceFile: "CacheAdviceParser.java"
NestMembers:
  org.springframework.cache.config.CacheAdviceParser$Props
InnerClasses:
  private Props = org.springframework.cache.config.CacheAdviceParser$Props of org.springframework.cache.config.CacheAdviceParser
  public Builder = org.springframework.cache.interceptor.CacheEvictOperation$Builder of org.springframework.cache.interceptor.CacheEvictOperation
  public abstract Builder = org.springframework.cache.interceptor.CacheOperation$Builder of org.springframework.cache.interceptor.CacheOperation
  public Builder = org.springframework.cache.interceptor.CachePutOperation$Builder of org.springframework.cache.interceptor.CachePutOperation
  public Builder = org.springframework.cache.interceptor.CacheableOperation$Builder of org.springframework.cache.interceptor.CacheableOperation