class org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor implements org.springframework.cglib.proxy.MethodInterceptor, org.springframework.context.annotation.ConfigurationClassEnhancer$ConditionalCallback
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor
  super_class: java.lang.Object
{
  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
         0: .line 306
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;

  public java.lang.Object intercept(java.lang.Object, java.lang.reflect.Method, java.lang.Object[], org.springframework.cglib.proxy.MethodProxy);
    descriptor: (Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/cglib/proxy/MethodProxy;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=5
        start local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
        start local 1 // java.lang.Object enhancedConfigInstance
        start local 2 // java.lang.reflect.Method beanMethod
        start local 3 // java.lang.Object[] beanMethodArgs
        start local 4 // org.springframework.cglib.proxy.MethodProxy cglibMethodProxy
         0: .line 319
            aload 0 /* this */
            aload 1 /* enhancedConfigInstance */
            invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.getBeanFactory:(Ljava/lang/Object;)Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
            astore 5 /* beanFactory */
        start local 5 // org.springframework.beans.factory.config.ConfigurableBeanFactory beanFactory
         1: .line 320
            aload 2 /* beanMethod */
            invokestatic org.springframework.context.annotation.BeanAnnotationHelper.determineBeanNameFor:(Ljava/lang/reflect/Method;)Ljava/lang/String;
            astore 6 /* beanName */
        start local 6 // java.lang.String beanName
         2: .line 323
            aload 2 /* beanMethod */
            invokestatic org.springframework.context.annotation.BeanAnnotationHelper.isScopedProxy:(Ljava/lang/reflect/Method;)Z
            ifeq 6
         3: .line 324
            aload 6 /* beanName */
            invokestatic org.springframework.context.annotation.ScopedProxyCreator.getTargetBeanName:(Ljava/lang/String;)Ljava/lang/String;
            astore 7 /* scopedBeanName */
        start local 7 // java.lang.String scopedBeanName
         4: .line 325
            aload 5 /* beanFactory */
            aload 7 /* scopedBeanName */
            invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.isCurrentlyInCreation:(Ljava/lang/String;)Z
            ifeq 6
         5: .line 326
            aload 7 /* scopedBeanName */
            astore 6 /* beanName */
        end local 7 // java.lang.String scopedBeanName
         6: .line 337
      StackMap locals: org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 5 /* beanFactory */
            new java.lang.StringBuilder
            dup
            ldc "&"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* beanName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.factoryContainsBean:(Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Z
            ifeq 11
         7: .line 338
            aload 0 /* this */
            aload 5 /* beanFactory */
            aload 6 /* beanName */
            invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.factoryContainsBean:(Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Z
            ifeq 11
         8: .line 339
            aload 5 /* beanFactory */
            new java.lang.StringBuilder
            dup
            ldc "&"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* beanName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.getBean:(Ljava/lang/String;)Ljava/lang/Object;
            astore 7 /* factoryBean */
        start local 7 // java.lang.Object factoryBean
         9: .line 340
            aload 7 /* factoryBean */
            instanceof org.springframework.aop.scope.ScopedProxyFactoryBean
            ifne 11
        10: .line 345
            aload 0 /* this */
            aload 7 /* factoryBean */
            aload 2 /* beanMethod */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            aload 5 /* beanFactory */
            aload 6 /* beanName */
            invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.enhanceFactoryBean:(Ljava/lang/Object;Ljava/lang/Class;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
            areturn
        end local 7 // java.lang.Object factoryBean
        11: .line 349
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* beanMethod */
            invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.isCurrentlyInvokedFactoryMethod:(Ljava/lang/reflect/Method;)Z
            ifeq 18
        12: .line 353
            getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isInfoEnabled:()Z
            ifeq 17
        13: .line 354
            ldc Lorg/springframework/beans/factory/config/BeanFactoryPostProcessor;
            aload 2 /* beanMethod */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 17
        14: .line 355
            getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
            ldc "@Bean method %s.%s is non-static and returns an object assignable to Spring's BeanFactoryPostProcessor interface. This will result in a failure to process annotations such as @Autowired, @Resource and @PostConstruct within the method's declaring @Configuration class. Add the 'static' modifier to this method to avoid these container lifecycle issues; see @Bean javadoc for complete details."
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        15: .line 361
            aload 2 /* beanMethod */
            invokevirtual java.lang.reflect.Method.getDeclaringClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 2 /* beanMethod */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            aastore
        16: .line 355
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.info:(Ljava/lang/Object;)V
        17: .line 363
      StackMap locals:
      StackMap stack:
            aload 4 /* cglibMethodProxy */
            aload 1 /* enhancedConfigInstance */
            aload 3 /* beanMethodArgs */
            invokevirtual org.springframework.cglib.proxy.MethodProxy.invokeSuper:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        18: .line 366
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* beanMethod */
            aload 3 /* beanMethodArgs */
            aload 5 /* beanFactory */
            aload 6 /* beanName */
            invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.resolveBeanReference:(Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
            areturn
        end local 6 // java.lang.String beanName
        end local 5 // org.springframework.beans.factory.config.ConfigurableBeanFactory beanFactory
        end local 4 // org.springframework.cglib.proxy.MethodProxy cglibMethodProxy
        end local 3 // java.lang.Object[] beanMethodArgs
        end local 2 // java.lang.reflect.Method beanMethod
        end local 1 // java.lang.Object enhancedConfigInstance
        end local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   19     0                    this  Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
            0   19     1  enhancedConfigInstance  Ljava/lang/Object;
            0   19     2              beanMethod  Ljava/lang/reflect/Method;
            0   19     3          beanMethodArgs  [Ljava/lang/Object;
            0   19     4        cglibMethodProxy  Lorg/springframework/cglib/proxy/MethodProxy;
            1   19     5             beanFactory  Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
            2   19     6                beanName  Ljava/lang/String;
            4    6     7          scopedBeanName  Ljava/lang/String;
            9   11     7             factoryBean  Ljava/lang/Object;
    Exceptions:
      throws java.lang.Throwable
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
                        Name  Flags
      enhancedConfigInstance  
      beanMethod              
      beanMethodArgs          
      cglibMethodProxy        

  private java.lang.Object resolveBeanReference(java.lang.reflect.Method, java.lang.Object[], org.springframework.beans.factory.config.ConfigurableBeanFactory, java.lang.String);
    descriptor: (Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=13, args_size=5
        start local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
        start local 1 // java.lang.reflect.Method beanMethod
        start local 2 // java.lang.Object[] beanMethodArgs
        start local 3 // org.springframework.beans.factory.config.ConfigurableBeanFactory beanFactory
        start local 4 // java.lang.String beanName
         0: .line 376
            aload 3 /* beanFactory */
            aload 4 /* beanName */
            invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.isCurrentlyInCreation:(Ljava/lang/String;)Z
            istore 5 /* alreadyInCreation */
        start local 5 // boolean alreadyInCreation
         1: .line 378
            iload 5 /* alreadyInCreation */
            ifeq 3
         2: .line 379
            aload 3 /* beanFactory */
            aload 4 /* beanName */
            iconst_0
            invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.setCurrentlyInCreation:(Ljava/lang/String;Z)V
         3: .line 381
      StackMap locals: int
      StackMap stack:
            aload 2 /* beanMethodArgs */
            invokestatic org.springframework.util.ObjectUtils.isEmpty:([Ljava/lang/Object;)Z
            ifeq 4
            iconst_0
            goto 5
      StackMap locals:
      StackMap stack:
         4: iconst_1
      StackMap locals:
      StackMap stack: int
         5: istore 6 /* useArgs */
        start local 6 // boolean useArgs
         6: .line 382
            iload 6 /* useArgs */
            ifeq 14
            aload 3 /* beanFactory */
            aload 4 /* beanName */
            invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.isSingleton:(Ljava/lang/String;)Z
            ifeq 14
         7: .line 386
            aload 2 /* beanMethodArgs */
            dup
            astore 10
            arraylength
            istore 9
            iconst_0
            istore 8
            goto 13
      StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.reflect.Method java.lang.Object[] org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String int int top int int java.lang.Object[]
      StackMap stack:
         8: aload 10
            iload 8
            aaload
            astore 7 /* arg */
        start local 7 // java.lang.Object arg
         9: .line 387
            aload 7 /* arg */
            ifnonnull 12
        10: .line 388
            iconst_0
            istore 6 /* useArgs */
        11: .line 389
            goto 14
        end local 7 // java.lang.Object arg
        12: .line 386
      StackMap locals:
      StackMap stack:
            iinc 8 1
      StackMap locals:
      StackMap stack:
        13: iload 8
            iload 9
            if_icmplt 8
        14: .line 393
      StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.reflect.Method java.lang.Object[] org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String int int
      StackMap stack:
            iload 6 /* useArgs */
            ifeq 15
            aload 3 /* beanFactory */
            aload 4 /* beanName */
            aload 2 /* beanMethodArgs */
            invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.getBean:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
            goto 16
        15: .line 394
      StackMap locals:
      StackMap stack:
            aload 3 /* beanFactory */
            aload 4 /* beanName */
            invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.getBean:(Ljava/lang/String;)Ljava/lang/Object;
        16: .line 393
      StackMap locals:
      StackMap stack: java.lang.Object
            astore 7 /* beanInstance */
        start local 7 // java.lang.Object beanInstance
        17: .line 395
            aload 1 /* beanMethod */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            aload 7 /* beanInstance */
            invokestatic org.springframework.util.ClassUtils.isAssignableValue:(Ljava/lang/Class;Ljava/lang/Object;)Z
            ifne 35
        18: .line 397
            aload 7 /* beanInstance */
            aconst_null
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 26
        19: .line 398
            getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 24
        20: .line 399
            getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
            ldc "@Bean method %s.%s called as bean reference for type [%s] returned null bean; resolving to null value."
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        21: .line 401
            aload 1 /* beanMethod */
            invokevirtual java.lang.reflect.Method.getDeclaringClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 1 /* beanMethod */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_2
        22: .line 402
            aload 1 /* beanMethod */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
        23: .line 399
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        24: .line 404
      StackMap locals: java.lang.Object
      StackMap stack:
            aconst_null
            astore 7 /* beanInstance */
        25: .line 405
            goto 35
        26: .line 407
      StackMap locals:
      StackMap stack:
            ldc "@Bean method %s.%s called as bean reference for type [%s] but overridden by non-compatible bean instance of type [%s]."
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
        27: .line 409
            aload 1 /* beanMethod */
            invokevirtual java.lang.reflect.Method.getDeclaringClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 1 /* beanMethod */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_2
        28: .line 410
            aload 1 /* beanMethod */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_3
            aload 7 /* beanInstance */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
        29: .line 407
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 8 /* msg */
        start local 8 // java.lang.String msg
        30: .line 412
            aload 3 /* beanFactory */
            aload 4 /* beanName */
            invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.getMergedBeanDefinition:(Ljava/lang/String;)Lorg/springframework/beans/factory/config/BeanDefinition;
            astore 9 /* beanDefinition */
        start local 9 // org.springframework.beans.factory.config.BeanDefinition beanDefinition
        31: .line 413
            new java.lang.StringBuilder
            dup
            aload 8 /* msg */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " Overriding bean of same name declared in: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 9 /* beanDefinition */
            invokeinterface org.springframework.beans.factory.config.BeanDefinition.getResourceDescription:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 8 /* msg */
        end local 9 // org.springframework.beans.factory.config.BeanDefinition beanDefinition
        32: .line 414
            goto 34
        33: .line 415
      StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.reflect.Method java.lang.Object[] org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String int int java.lang.Object java.lang.String
      StackMap stack: org.springframework.beans.factory.NoSuchBeanDefinitionException
            pop
        34: .line 418
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            aload 8 /* msg */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 8 // java.lang.String msg
        35: .line 421
      StackMap locals:
      StackMap stack:
            invokestatic org.springframework.beans.factory.support.SimpleInstantiationStrategy.getCurrentlyInvokedFactoryMethod:()Ljava/lang/reflect/Method;
            astore 8 /* currentlyInvoked */
        start local 8 // java.lang.reflect.Method currentlyInvoked
        36: .line 422
            aload 8 /* currentlyInvoked */
            ifnull 39
        37: .line 423
            aload 8 /* currentlyInvoked */
            invokestatic org.springframework.context.annotation.BeanAnnotationHelper.determineBeanNameFor:(Ljava/lang/reflect/Method;)Ljava/lang/String;
            astore 9 /* outerBeanName */
        start local 9 // java.lang.String outerBeanName
        38: .line 424
            aload 3 /* beanFactory */
            aload 4 /* beanName */
            aload 9 /* outerBeanName */
            invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.registerDependentBean:(Ljava/lang/String;Ljava/lang/String;)V
        end local 9 // java.lang.String outerBeanName
        39: .line 426
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 7 /* beanInstance */
            astore 12
        40: .line 429
            iload 5 /* alreadyInCreation */
            ifeq 42
        41: .line 430
            aload 3 /* beanFactory */
            aload 4 /* beanName */
            iconst_1
            invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.setCurrentlyInCreation:(Ljava/lang/String;Z)V
        42: .line 426
      StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.reflect.Method java.lang.Object[] org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String int int java.lang.Object java.lang.reflect.Method top top top java.lang.Object
      StackMap stack:
            aload 12
            areturn
        end local 8 // java.lang.reflect.Method currentlyInvoked
        end local 7 // java.lang.Object beanInstance
        end local 6 // boolean useArgs
        43: .line 428
      StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.reflect.Method java.lang.Object[] org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String int
      StackMap stack: java.lang.Throwable
            astore 11
        44: .line 429
            iload 5 /* alreadyInCreation */
            ifeq 46
        45: .line 430
            aload 3 /* beanFactory */
            aload 4 /* beanName */
            iconst_1
            invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.setCurrentlyInCreation:(Ljava/lang/String;Z)V
        46: .line 432
      StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.reflect.Method java.lang.Object[] org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String int top top top top top java.lang.Throwable
      StackMap stack:
            aload 11
            athrow
        end local 5 // boolean alreadyInCreation
        end local 4 // java.lang.String beanName
        end local 3 // org.springframework.beans.factory.config.ConfigurableBeanFactory beanFactory
        end local 2 // java.lang.Object[] beanMethodArgs
        end local 1 // java.lang.reflect.Method beanMethod
        end local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   47     0               this  Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
            0   47     1         beanMethod  Ljava/lang/reflect/Method;
            0   47     2     beanMethodArgs  [Ljava/lang/Object;
            0   47     3        beanFactory  Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
            0   47     4           beanName  Ljava/lang/String;
            1   47     5  alreadyInCreation  Z
            6   43     6            useArgs  Z
            9   12     7                arg  Ljava/lang/Object;
           17   43     7       beanInstance  Ljava/lang/Object;
           30   35     8                msg  Ljava/lang/String;
           31   32     9     beanDefinition  Lorg/springframework/beans/factory/config/BeanDefinition;
           36   43     8   currentlyInvoked  Ljava/lang/reflect/Method;
           38   39     9      outerBeanName  Ljava/lang/String;
      Exception table:
        from    to  target  type
          30    32      33  Class org.springframework.beans.factory.NoSuchBeanDefinitionException
           1    40      43  any
    MethodParameters:
                Name  Flags
      beanMethod      
      beanMethodArgs  
      beanFactory     
      beanName        

  public boolean isMatch(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
        start local 1 // java.lang.reflect.Method candidateMethod
         0: .line 437
            aload 1 /* candidateMethod */
            invokevirtual java.lang.reflect.Method.getDeclaringClass:()Ljava/lang/Class;
            ldc Ljava/lang/Object;
            if_acmpeq 4
         1: .line 438
            aload 1 /* candidateMethod */
            invokestatic org.springframework.context.annotation.ConfigurationClassEnhancer$BeanFactoryAwareMethodInterceptor.isSetBeanFactory:(Ljava/lang/reflect/Method;)Z
            ifne 4
         2: .line 439
            aload 1 /* candidateMethod */
            invokestatic org.springframework.context.annotation.BeanAnnotationHelper.isBeanAnnotated:(Ljava/lang/reflect/Method;)Z
            ifeq 4
         3: .line 437
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         4: iconst_0
            ireturn
        end local 1 // java.lang.reflect.Method candidateMethod
        end local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    5     0             this  Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
            0    5     1  candidateMethod  Ljava/lang/reflect/Method;
    MethodParameters:
                 Name  Flags
      candidateMethod  

  private org.springframework.beans.factory.config.ConfigurableBeanFactory getBeanFactory(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
        start local 1 // java.lang.Object enhancedConfigInstance
         0: .line 443
            aload 1 /* enhancedConfigInstance */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc "$$beanFactory"
            invokestatic org.springframework.util.ReflectionUtils.findField:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 2 /* field */
        start local 2 // java.lang.reflect.Field field
         1: .line 444
            aload 2 /* field */
            ifnull 2
            iconst_1
            goto 3
      StackMap locals: java.lang.reflect.Field
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ldc "Unable to find generated bean factory field"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         4: .line 445
            aload 2 /* field */
            aload 1 /* enhancedConfigInstance */
            invokestatic org.springframework.util.ReflectionUtils.getField:(Ljava/lang/reflect/Field;Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* beanFactory */
        start local 3 // java.lang.Object beanFactory
         5: .line 446
            aload 3 /* beanFactory */
            ifnull 6
            iconst_1
            goto 7
      StackMap locals: java.lang.Object
      StackMap stack:
         6: iconst_0
      StackMap locals:
      StackMap stack: int
         7: ldc "BeanFactory has not been injected into @Configuration class"
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
         8: .line 447
            aload 3 /* beanFactory */
            instanceof org.springframework.beans.factory.config.ConfigurableBeanFactory
         9: .line 448
            ldc "Injected BeanFactory is not a ConfigurableBeanFactory"
        10: .line 447
            invokestatic org.springframework.util.Assert.state:(ZLjava/lang/String;)V
        11: .line 449
            aload 3 /* beanFactory */
            checkcast org.springframework.beans.factory.config.ConfigurableBeanFactory
            areturn
        end local 3 // java.lang.Object beanFactory
        end local 2 // java.lang.reflect.Field field
        end local 1 // java.lang.Object enhancedConfigInstance
        end local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   12     0                    this  Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
            0   12     1  enhancedConfigInstance  Ljava/lang/Object;
            1   12     2                   field  Ljava/lang/reflect/Field;
            5   12     3             beanFactory  Ljava/lang/Object;
    MethodParameters:
                        Name  Flags
      enhancedConfigInstance  

  private boolean factoryContainsBean(org.springframework.beans.factory.config.ConfigurableBeanFactory, java.lang.String);
    descriptor: (Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
        start local 1 // org.springframework.beans.factory.config.ConfigurableBeanFactory beanFactory
        start local 2 // java.lang.String beanName
         0: .line 466
            aload 1 /* beanFactory */
            aload 2 /* beanName */
            invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.containsBean:(Ljava/lang/String;)Z
            ifeq 1
            aload 1 /* beanFactory */
            aload 2 /* beanName */
            invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.isCurrentlyInCreation:(Ljava/lang/String;)Z
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 2 // java.lang.String beanName
        end local 1 // org.springframework.beans.factory.config.ConfigurableBeanFactory beanFactory
        end local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
            0    2     1  beanFactory  Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
            0    2     2     beanName  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      beanFactory  
      beanName     

  private boolean isCurrentlyInvokedFactoryMethod(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
        start local 1 // java.lang.reflect.Method method
         0: .line 476
            invokestatic org.springframework.beans.factory.support.SimpleInstantiationStrategy.getCurrentlyInvokedFactoryMethod:()Ljava/lang/reflect/Method;
            astore 2 /* currentlyInvoked */
        start local 2 // java.lang.reflect.Method currentlyInvoked
         1: .line 477
            aload 2 /* currentlyInvoked */
            ifnull 4
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            aload 2 /* currentlyInvoked */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         2: .line 478
            aload 1 /* method */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            aload 2 /* currentlyInvoked */
            invokevirtual java.lang.reflect.Method.getParameterTypes:()[Ljava/lang/Class;
            invokestatic java.util.Arrays.equals:([Ljava/lang/Object;[Ljava/lang/Object;)Z
            ifeq 4
         3: .line 477
            iconst_1
            ireturn
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
         4: iconst_0
            ireturn
        end local 2 // java.lang.reflect.Method currentlyInvoked
        end local 1 // java.lang.reflect.Method method
        end local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    5     0              this  Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
            0    5     1            method  Ljava/lang/reflect/Method;
            1    5     2  currentlyInvoked  Ljava/lang/reflect/Method;
    MethodParameters:
        Name  Flags
      method  

  private  enhanceFactoryBean(, java.lang.Class<?>, org.springframework.beans.factory.config.ConfigurableBeanFactory, java.lang.String);
    descriptor: (Ljava/lang/Object;Ljava/lang/Class;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
        start local 1 // java.lang.Object factoryBean
        start local 2 // java.lang.Class exposedType
        start local 3 // org.springframework.beans.factory.config.ConfigurableBeanFactory beanFactory
        start local 4 // java.lang.String beanName
         0: .line 492
            aload 1 /* factoryBean */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            astore 5 /* clazz */
        start local 5 // java.lang.Class clazz
         1: .line 493
            aload 5 /* clazz */
            invokevirtual java.lang.Class.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isFinal:(I)Z
            istore 6 /* finalClass */
        start local 6 // boolean finalClass
         2: .line 494
            aload 5 /* clazz */
            ldc "getObject"
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            invokevirtual java.lang.reflect.Method.getModifiers:()I
            invokestatic java.lang.reflect.Modifier.isFinal:(I)Z
            istore 7 /* finalMethod */
        start local 7 // boolean finalMethod
         3: .line 495
            iload 6 /* finalClass */
            ifne 4
            iload 7 /* finalMethod */
            ifeq 27
         4: .line 496
      StackMap locals: java.lang.Class int int
      StackMap stack:
            aload 2 /* exposedType */
            invokevirtual java.lang.Class.isInterface:()Z
            ifeq 15
         5: .line 497
            getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isTraceEnabled:()Z
            ifeq 13
         6: .line 498
            getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Creating interface proxy for FactoryBean '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* beanName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "' of type ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         7: .line 499
            aload 5 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "] for use within another @Bean method because its "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         8: .line 500
            iload 6 /* finalClass */
            ifeq 9
            ldc "implementation class"
            goto 10
      StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.Object java.lang.Class org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String java.lang.Class int int
      StackMap stack: org.apache.commons.logging.Log java.lang.StringBuilder
         9: ldc "getObject() method"
      StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.Object java.lang.Class org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String java.lang.Class int int
      StackMap stack: org.apache.commons.logging.Log java.lang.StringBuilder java.lang.String
        10: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        11: .line 501
            ldc " is final: Otherwise a getObject() call would not be routed to the factory."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        12: .line 498
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
        13: .line 503
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* factoryBean */
            aload 2 /* exposedType */
            aload 3 /* beanFactory */
            aload 4 /* beanName */
            invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.createInterfaceProxyForFactoryBean:(Ljava/lang/Object;Ljava/lang/Class;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
        14: areturn
        15: .line 506
      StackMap locals:
      StackMap stack:
            getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isDebugEnabled:()Z
            ifeq 24
        16: .line 507
            getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Unable to proxy FactoryBean '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* beanName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "' of type ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        17: .line 508
            aload 5 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "] for use within another @Bean method because its "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        18: .line 509
            iload 6 /* finalClass */
            ifeq 19
            ldc "implementation class"
            goto 20
      StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.Object java.lang.Class org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String java.lang.Class int int
      StackMap stack: org.apache.commons.logging.Log java.lang.StringBuilder
        19: ldc "getObject() method"
      StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.Object java.lang.Class org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String java.lang.Class int int
      StackMap stack: org.apache.commons.logging.Log java.lang.StringBuilder java.lang.String
        20: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        21: .line 510
            ldc " is final: A getObject() call will NOT be routed to the factory. "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        22: .line 511
            ldc "Consider declaring the return type as a FactoryBean interface."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        23: .line 507
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;)V
        24: .line 513
      StackMap locals:
      StackMap stack:
            aload 1 /* factoryBean */
        25: areturn
        end local 7 // boolean finalMethod
        end local 6 // boolean finalClass
        end local 5 // java.lang.Class clazz
        26: .line 517
      StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.Object java.lang.Class org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String
      StackMap stack: java.lang.NoSuchMethodException
            pop
        27: .line 521
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* factoryBean */
            aload 3 /* beanFactory */
            aload 4 /* beanName */
            invokevirtual org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.createCglibProxyForFactoryBean:(Ljava/lang/Object;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
            areturn
        end local 4 // java.lang.String beanName
        end local 3 // org.springframework.beans.factory.config.ConfigurableBeanFactory beanFactory
        end local 2 // java.lang.Class exposedType
        end local 1 // java.lang.Object factoryBean
        end local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   28     0         this  Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
            0   28     1  factoryBean  Ljava/lang/Object;
            0   28     2  exposedType  Ljava/lang/Class<*>;
            0   28     3  beanFactory  Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
            0   28     4     beanName  Ljava/lang/String;
            1   26     5        clazz  Ljava/lang/Class<*>;
            2   26     6   finalClass  Z
            3   26     7  finalMethod  Z
      Exception table:
        from    to  target  type
           0    14      26  Class java.lang.NoSuchMethodException
          15    25      26  Class java.lang.NoSuchMethodException
    Signature: (Ljava/lang/Object;Ljava/lang/Class<*>;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
    MethodParameters:
             Name  Flags
      factoryBean  final
      exposedType  
      beanFactory  final
      beanName     final

  private  createInterfaceProxyForFactoryBean(, java.lang.Class<?>, org.springframework.beans.factory.config.ConfigurableBeanFactory, java.lang.String);
    descriptor: (Ljava/lang/Object;Ljava/lang/Class;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
        start local 1 // java.lang.Object factoryBean
        start local 2 // java.lang.Class interfaceType
        start local 3 // org.springframework.beans.factory.config.ConfigurableBeanFactory beanFactory
        start local 4 // java.lang.String beanName
         0: .line 528
            aload 1 /* factoryBean */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 2 /* interfaceType */
            aastore
         1: .line 529
            aload 3 /* beanFactory */
            aload 4 /* beanName */
            aload 1 /* factoryBean */
            invokedynamic invoke(Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/reflect/InvocationHandler;
              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/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
                  org/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor.lambda$0(Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (6)
                  (Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
         2: .line 527
            invokestatic java.lang.reflect.Proxy.newProxyInstance:(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
            areturn
        end local 4 // java.lang.String beanName
        end local 3 // org.springframework.beans.factory.config.ConfigurableBeanFactory beanFactory
        end local 2 // java.lang.Class interfaceType
        end local 1 // java.lang.Object factoryBean
        end local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
            0    3     1    factoryBean  Ljava/lang/Object;
            0    3     2  interfaceType  Ljava/lang/Class<*>;
            0    3     3    beanFactory  Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
            0    3     4       beanName  Ljava/lang/String;
    Signature: (Ljava/lang/Object;Ljava/lang/Class<*>;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
    MethodParameters:
               Name  Flags
      factoryBean    final
      interfaceType  
      beanFactory    final
      beanName       final

  private java.lang.Object createCglibProxyForFactoryBean(java.lang.Object, org.springframework.beans.factory.config.ConfigurableBeanFactory, java.lang.String);
    descriptor: (Ljava/lang/Object;Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=4
        start local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
        start local 1 // java.lang.Object factoryBean
        start local 2 // org.springframework.beans.factory.config.ConfigurableBeanFactory beanFactory
        start local 3 // java.lang.String beanName
         0: .line 540
            new org.springframework.cglib.proxy.Enhancer
            dup
            invokespecial org.springframework.cglib.proxy.Enhancer.<init>:()V
            astore 4 /* enhancer */
        start local 4 // org.springframework.cglib.proxy.Enhancer enhancer
         1: .line 541
            aload 4 /* enhancer */
            aload 1 /* factoryBean */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual org.springframework.cglib.proxy.Enhancer.setSuperclass:(Ljava/lang/Class;)V
         2: .line 542
            aload 4 /* enhancer */
            getstatic org.springframework.cglib.core.SpringNamingPolicy.INSTANCE:Lorg/springframework/cglib/core/SpringNamingPolicy;
            invokevirtual org.springframework.cglib.proxy.Enhancer.setNamingPolicy:(Lorg/springframework/cglib/core/NamingPolicy;)V
         3: .line 543
            aload 4 /* enhancer */
            ldc Lorg/springframework/cglib/proxy/MethodInterceptor;
            invokevirtual org.springframework.cglib.proxy.Enhancer.setCallbackType:(Ljava/lang/Class;)V
         4: .line 547
            aload 4 /* enhancer */
            invokevirtual org.springframework.cglib.proxy.Enhancer.createClass:()Ljava/lang/Class;
            astore 5 /* fbClass */
        start local 5 // java.lang.Class fbClass
         5: .line 548
            aconst_null
            astore 6 /* fbProxy */
        start local 6 // java.lang.Object fbProxy
         6: .line 550
            getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.objenesis:Lorg/springframework/objenesis/SpringObjenesis;
            invokevirtual org.springframework.objenesis.SpringObjenesis.isWorthTrying:()Z
            ifeq 13
         7: .line 552
            getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.objenesis:Lorg/springframework/objenesis/SpringObjenesis;
            aload 5 /* fbClass */
            aload 4 /* enhancer */
            invokevirtual org.springframework.cglib.proxy.Enhancer.getUseCache:()Z
            invokevirtual org.springframework.objenesis.SpringObjenesis.newInstance:(Ljava/lang/Class;Z)Ljava/lang/Object;
            astore 6 /* fbProxy */
         8: .line 553
            goto 13
         9: .line 554
      StackMap locals: org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor java.lang.Object org.springframework.beans.factory.config.ConfigurableBeanFactory java.lang.String org.springframework.cglib.proxy.Enhancer java.lang.Class java.lang.Object
      StackMap stack: org.springframework.objenesis.ObjenesisException
            astore 7 /* ex */
        start local 7 // org.springframework.objenesis.ObjenesisException ex
        10: .line 555
            getstatic org.springframework.context.annotation.ConfigurationClassEnhancer.logger:Lorg/apache/commons/logging/Log;
            ldc "Unable to instantiate enhanced FactoryBean using Objenesis, falling back to regular construction"
        11: .line 556
            aload 7 /* ex */
        12: .line 555
            invokeinterface org.apache.commons.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 7 // org.springframework.objenesis.ObjenesisException ex
        13: .line 560
      StackMap locals:
      StackMap stack:
            aload 6 /* fbProxy */
            ifnonnull 20
        14: .line 562
            aload 5 /* fbClass */
            iconst_0
            anewarray java.lang.Class
            invokestatic org.springframework.util.ReflectionUtils.accessibleConstructor:(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            astore 6 /* fbProxy */
        15: .line 563
            goto 20
        16: .line 564
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7 /* ex */
        start local 7 // java.lang.Throwable ex
        17: .line 565
            new java.lang.IllegalStateException
            dup
            ldc "Unable to instantiate enhanced FactoryBean using Objenesis, and regular FactoryBean instantiation via default constructor fails as well"
        18: .line 566
            aload 7 /* ex */
        19: .line 565
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.lang.Throwable ex
        20: .line 570
      StackMap locals:
      StackMap stack:
            aload 6 /* fbProxy */
            checkcast org.springframework.cglib.proxy.Factory
            iconst_0
            aload 2 /* beanFactory */
            aload 3 /* beanName */
            aload 1 /* factoryBean */
            invokedynamic intercept(Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;Ljava/lang/Object;)Lorg/springframework/cglib/proxy/MethodInterceptor;
              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/reflect/Method;[Ljava/lang/Object;Lorg/springframework/cglib/proxy/MethodProxy;)Ljava/lang/Object;
                  org/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor.lambda$1(Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/cglib/proxy/MethodProxy;)Ljava/lang/Object; (6)
                  (Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/cglib/proxy/MethodProxy;)Ljava/lang/Object;
            invokeinterface org.springframework.cglib.proxy.Factory.setCallback:(ILorg/springframework/cglib/proxy/Callback;)V
        21: .line 577
            aload 6 /* fbProxy */
            areturn
        end local 6 // java.lang.Object fbProxy
        end local 5 // java.lang.Class fbClass
        end local 4 // org.springframework.cglib.proxy.Enhancer enhancer
        end local 3 // java.lang.String beanName
        end local 2 // org.springframework.beans.factory.config.ConfigurableBeanFactory beanFactory
        end local 1 // java.lang.Object factoryBean
        end local 0 // org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   22     0         this  Lorg/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor;
            0   22     1  factoryBean  Ljava/lang/Object;
            0   22     2  beanFactory  Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;
            0   22     3     beanName  Ljava/lang/String;
            1   22     4     enhancer  Lorg/springframework/cglib/proxy/Enhancer;
            5   22     5      fbClass  Ljava/lang/Class<*>;
            6   22     6      fbProxy  Ljava/lang/Object;
           10   13     7           ex  Lorg/springframework/objenesis/ObjenesisException;
           17   20     7           ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           7     8       9  Class org.springframework.objenesis.ObjenesisException
          14    15      16  Class java.lang.Throwable
    MethodParameters:
             Name  Flags
      factoryBean  final
      beanFactory  final
      beanName     final

  private static java.lang.Object lambda$0(org.springframework.beans.factory.config.ConfigurableBeanFactory, java.lang.String, java.lang.Object, java.lang.Object, java.lang.reflect.Method, java.lang.Object[]);
    descriptor: (Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=6, args_size=6
        start local 3 // java.lang.Object proxy
        start local 4 // java.lang.reflect.Method method
        start local 5 // java.lang.Object[] args
         0: .line 530
            aload 4 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            ldc "getObject"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 2
            aload 5 /* args */
            ifnonnull 2
         1: .line 531
            aload 0
            aload 1
            invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.getBean:(Ljava/lang/String;)Ljava/lang/Object;
            areturn
         2: .line 533
      StackMap locals:
      StackMap stack:
            aload 4 /* method */
            aload 2
            aload 5 /* args */
            invokestatic org.springframework.util.ReflectionUtils.invokeMethod:(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 5 // java.lang.Object[] args
        end local 4 // java.lang.reflect.Method method
        end local 3 // java.lang.Object proxy
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     3   proxy  Ljava/lang/Object;
            0    3     4  method  Ljava/lang/reflect/Method;
            0    3     5    args  [Ljava/lang/Object;
    Exceptions:
      throws java.lang.Throwable

  private static java.lang.Object lambda$1(org.springframework.beans.factory.config.ConfigurableBeanFactory, java.lang.String, java.lang.Object, java.lang.Object, java.lang.reflect.Method, java.lang.Object[], org.springframework.cglib.proxy.MethodProxy);
    descriptor: (Lorg/springframework/beans/factory/config/ConfigurableBeanFactory;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/cglib/proxy/MethodProxy;)Ljava/lang/Object;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=7, args_size=7
        start local 3 // java.lang.Object obj
        start local 4 // java.lang.reflect.Method method
        start local 5 // java.lang.Object[] args
        start local 6 // org.springframework.cglib.proxy.MethodProxy proxy
         0: .line 571
            aload 4 /* method */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            ldc "getObject"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 2
            aload 5 /* args */
            arraylength
            ifne 2
         1: .line 572
            aload 0
            aload 1
            invokeinterface org.springframework.beans.factory.config.ConfigurableBeanFactory.getBean:(Ljava/lang/String;)Ljava/lang/Object;
            areturn
         2: .line 574
      StackMap locals:
      StackMap stack:
            aload 6 /* proxy */
            aload 2
            aload 5 /* args */
            invokevirtual org.springframework.cglib.proxy.MethodProxy.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 6 // org.springframework.cglib.proxy.MethodProxy proxy
        end local 5 // java.lang.Object[] args
        end local 4 // java.lang.reflect.Method method
        end local 3 // java.lang.Object obj
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     3     obj  Ljava/lang/Object;
            0    3     4  method  Ljava/lang/reflect/Method;
            0    3     5    args  [Ljava/lang/Object;
            0    3     6   proxy  Lorg/springframework/cglib/proxy/MethodProxy;
    Exceptions:
      throws java.lang.Throwable
}
SourceFile: "ConfigurationClassEnhancer.java"
NestHost: org.springframework.context.annotation.ConfigurationClassEnhancer
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  private BeanFactoryAwareMethodInterceptor = org.springframework.context.annotation.ConfigurationClassEnhancer$BeanFactoryAwareMethodInterceptor of org.springframework.context.annotation.ConfigurationClassEnhancer
  private BeanMethodInterceptor = org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor of org.springframework.context.annotation.ConfigurationClassEnhancer
  private abstract ConditionalCallback = org.springframework.context.annotation.ConfigurationClassEnhancer$ConditionalCallback of org.springframework.context.annotation.ConfigurationClassEnhancer