public class org.springframework.beans.factory.annotation.InjectionMetadata
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.beans.factory.annotation.InjectionMetadata
  super_class: java.lang.Object
{
  private static final org.apache.commons.logging.Log logger;
    descriptor: Lorg/apache/commons/logging/Log;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.lang.Class<?> targetClass;
    descriptor: Ljava/lang/Class;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/Class<*>;

  private final java.util.Collection<org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement> injectedElements;
    descriptor: Ljava/util/Collection;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Collection<Lorg/springframework/beans/factory/annotation/InjectionMetadata$InjectedElement;>;

  private volatile java.util.Set<org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement> checkedElements;
    descriptor: Ljava/util/Set;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: Ljava/util/Set<Lorg/springframework/beans/factory/annotation/InjectionMetadata$InjectedElement;>;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 50
            ldc Lorg/springframework/beans/factory/annotation/InjectionMetadata;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putstatic org.springframework.beans.factory.annotation.InjectionMetadata.logger:Lorg/apache/commons/logging/Log;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.lang.Class<?>, java.util.Collection<org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement>);
    descriptor: (Ljava/lang/Class;Ljava/util/Collection;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.springframework.beans.factory.annotation.InjectionMetadata this
        start local 1 // java.lang.Class targetClass
        start local 2 // java.util.Collection elements
         0: .line 60
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 61
            aload 0 /* this */
            aload 1 /* targetClass */
            putfield org.springframework.beans.factory.annotation.InjectionMetadata.targetClass:Ljava/lang/Class;
         2: .line 62
            aload 0 /* this */
            aload 2 /* elements */
            putfield org.springframework.beans.factory.annotation.InjectionMetadata.injectedElements:Ljava/util/Collection;
         3: .line 63
            return
        end local 2 // java.util.Collection elements
        end local 1 // java.lang.Class targetClass
        end local 0 // org.springframework.beans.factory.annotation.InjectionMetadata this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lorg/springframework/beans/factory/annotation/InjectionMetadata;
            0    4     1  targetClass  Ljava/lang/Class<*>;
            0    4     2     elements  Ljava/util/Collection<Lorg/springframework/beans/factory/annotation/InjectionMetadata$InjectedElement;>;
    Signature: (Ljava/lang/Class<*>;Ljava/util/Collection<Lorg/springframework/beans/factory/annotation/InjectionMetadata$InjectedElement;>;)V
    MethodParameters:
             Name  Flags
      targetClass  
      elements     

  public void checkConfigMembers(org.springframework.beans.factory.support.RootBeanDefinition);
    descriptor: (Lorg/springframework/beans/factory/support/RootBeanDefinition;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // org.springframework.beans.factory.annotation.InjectionMetadata this
        start local 1 // org.springframework.beans.factory.support.RootBeanDefinition beanDefinition
         0: .line 67
            new java.util.LinkedHashSet
            dup
            aload 0 /* this */
            getfield org.springframework.beans.factory.annotation.InjectionMetadata.injectedElements:Ljava/util/Collection;
            invokeinterface java.util.Collection.size:()I
            invokespecial java.util.LinkedHashSet.<init>:(I)V
            astore 2 /* checkedElements */
        start local 2 // java.util.Set checkedElements
         1: .line 68
            aload 0 /* this */
            getfield org.springframework.beans.factory.annotation.InjectionMetadata.injectedElements:Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 9
      StackMap locals: org.springframework.beans.factory.annotation.InjectionMetadata org.springframework.beans.factory.support.RootBeanDefinition java.util.Set top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement
            astore 3 /* element */
        start local 3 // org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement element
         3: .line 69
            aload 3 /* element */
            invokevirtual org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.getMember:()Ljava/lang/reflect/Member;
            astore 5 /* member */
        start local 5 // java.lang.reflect.Member member
         4: .line 70
            aload 1 /* beanDefinition */
            aload 5 /* member */
            invokevirtual org.springframework.beans.factory.support.RootBeanDefinition.isExternallyManagedConfigMember:(Ljava/lang/reflect/Member;)Z
            ifne 9
         5: .line 71
            aload 1 /* beanDefinition */
            aload 5 /* member */
            invokevirtual org.springframework.beans.factory.support.RootBeanDefinition.registerExternallyManagedConfigMember:(Ljava/lang/reflect/Member;)V
         6: .line 72
            aload 2 /* checkedElements */
            aload 3 /* element */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         7: .line 73
            getstatic org.springframework.beans.factory.annotation.InjectionMetadata.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isTraceEnabled:()Z
            ifeq 9
         8: .line 74
            getstatic org.springframework.beans.factory.annotation.InjectionMetadata.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Registered injected element on class ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.beans.factory.annotation.InjectionMetadata.targetClass:Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "]: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* element */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
        end local 5 // java.lang.reflect.Member member
        end local 3 // org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement element
         9: .line 68
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
        10: .line 78
            aload 0 /* this */
            aload 2 /* checkedElements */
            putfield org.springframework.beans.factory.annotation.InjectionMetadata.checkedElements:Ljava/util/Set;
        11: .line 79
            return
        end local 2 // java.util.Set checkedElements
        end local 1 // org.springframework.beans.factory.support.RootBeanDefinition beanDefinition
        end local 0 // org.springframework.beans.factory.annotation.InjectionMetadata this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   12     0             this  Lorg/springframework/beans/factory/annotation/InjectionMetadata;
            0   12     1   beanDefinition  Lorg/springframework/beans/factory/support/RootBeanDefinition;
            1   12     2  checkedElements  Ljava/util/Set<Lorg/springframework/beans/factory/annotation/InjectionMetadata$InjectedElement;>;
            3    9     3          element  Lorg/springframework/beans/factory/annotation/InjectionMetadata$InjectedElement;
            4    9     5           member  Ljava/lang/reflect/Member;
    MethodParameters:
                Name  Flags
      beanDefinition  

  public void inject(java.lang.Object, java.lang.String, org.springframework.beans.PropertyValues);
    descriptor: (Ljava/lang/Object;Ljava/lang/String;Lorg/springframework/beans/PropertyValues;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=4
        start local 0 // org.springframework.beans.factory.annotation.InjectionMetadata this
        start local 1 // java.lang.Object target
        start local 2 // java.lang.String beanName
        start local 3 // org.springframework.beans.PropertyValues pvs
         0: .line 82
            aload 0 /* this */
            getfield org.springframework.beans.factory.annotation.InjectionMetadata.checkedElements:Ljava/util/Set;
            astore 4 /* checkedElements */
        start local 4 // java.util.Collection checkedElements
         1: .line 84
            aload 4 /* checkedElements */
            ifnull 2
            aload 4 /* checkedElements */
            goto 3
      StackMap locals: java.util.Collection
      StackMap stack:
         2: aload 0 /* this */
            getfield org.springframework.beans.factory.annotation.InjectionMetadata.injectedElements:Ljava/util/Collection;
         3: .line 83
      StackMap locals:
      StackMap stack: java.util.Collection
            astore 5 /* elementsToIterate */
        start local 5 // java.util.Collection elementsToIterate
         4: .line 85
            aload 5 /* elementsToIterate */
            invokeinterface java.util.Collection.isEmpty:()Z
            ifne 11
         5: .line 86
            aload 5 /* elementsToIterate */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 7
            goto 10
      StackMap locals: org.springframework.beans.factory.annotation.InjectionMetadata java.lang.Object java.lang.String org.springframework.beans.PropertyValues java.util.Collection java.util.Collection top java.util.Iterator
      StackMap stack:
         6: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement
            astore 6 /* element */
        start local 6 // org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement element
         7: .line 87
            getstatic org.springframework.beans.factory.annotation.InjectionMetadata.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isTraceEnabled:()Z
            ifeq 9
         8: .line 88
            getstatic org.springframework.beans.factory.annotation.InjectionMetadata.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Processing injected element of bean '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* beanName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "': "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* element */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
         9: .line 90
      StackMap locals: org.springframework.beans.factory.annotation.InjectionMetadata java.lang.Object java.lang.String org.springframework.beans.PropertyValues java.util.Collection java.util.Collection org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement java.util.Iterator
      StackMap stack:
            aload 6 /* element */
            aload 1 /* target */
            aload 2 /* beanName */
            aload 3 /* pvs */
            invokevirtual org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject:(Ljava/lang/Object;Ljava/lang/String;Lorg/springframework/beans/PropertyValues;)V
        end local 6 // org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement element
        10: .line 86
      StackMap locals: org.springframework.beans.factory.annotation.InjectionMetadata java.lang.Object java.lang.String org.springframework.beans.PropertyValues java.util.Collection java.util.Collection top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        11: .line 93
      StackMap locals: org.springframework.beans.factory.annotation.InjectionMetadata java.lang.Object java.lang.String org.springframework.beans.PropertyValues java.util.Collection java.util.Collection
      StackMap stack:
            return
        end local 5 // java.util.Collection elementsToIterate
        end local 4 // java.util.Collection checkedElements
        end local 3 // org.springframework.beans.PropertyValues pvs
        end local 2 // java.lang.String beanName
        end local 1 // java.lang.Object target
        end local 0 // org.springframework.beans.factory.annotation.InjectionMetadata this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   12     0               this  Lorg/springframework/beans/factory/annotation/InjectionMetadata;
            0   12     1             target  Ljava/lang/Object;
            0   12     2           beanName  Ljava/lang/String;
            0   12     3                pvs  Lorg/springframework/beans/PropertyValues;
            1   12     4    checkedElements  Ljava/util/Collection<Lorg/springframework/beans/factory/annotation/InjectionMetadata$InjectedElement;>;
            4   12     5  elementsToIterate  Ljava/util/Collection<Lorg/springframework/beans/factory/annotation/InjectionMetadata$InjectedElement;>;
            7   10     6            element  Lorg/springframework/beans/factory/annotation/InjectionMetadata$InjectedElement;
    Exceptions:
      throws java.lang.Throwable
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
      2:
        org.springframework.lang.Nullable()
    MethodParameters:
          Name  Flags
      target    
      beanName  
      pvs       

  public void clear(org.springframework.beans.PropertyValues);
    descriptor: (Lorg/springframework/beans/PropertyValues;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // org.springframework.beans.factory.annotation.InjectionMetadata this
        start local 1 // org.springframework.beans.PropertyValues pvs
         0: .line 100
            aload 0 /* this */
            getfield org.springframework.beans.factory.annotation.InjectionMetadata.checkedElements:Ljava/util/Set;
            astore 2 /* checkedElements */
        start local 2 // java.util.Collection checkedElements
         1: .line 102
            aload 2 /* checkedElements */
            ifnull 2
            aload 2 /* checkedElements */
            goto 3
      StackMap locals: java.util.Collection
      StackMap stack:
         2: aload 0 /* this */
            getfield org.springframework.beans.factory.annotation.InjectionMetadata.injectedElements:Ljava/util/Collection;
         3: .line 101
      StackMap locals:
      StackMap stack: java.util.Collection
            astore 3 /* elementsToIterate */
        start local 3 // java.util.Collection elementsToIterate
         4: .line 103
            aload 3 /* elementsToIterate */
            invokeinterface java.util.Collection.isEmpty:()Z
            ifne 9
         5: .line 104
            aload 3 /* elementsToIterate */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 5
            goto 8
      StackMap locals: org.springframework.beans.factory.annotation.InjectionMetadata org.springframework.beans.PropertyValues java.util.Collection java.util.Collection top java.util.Iterator
      StackMap stack:
         6: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement
            astore 4 /* element */
        start local 4 // org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement element
         7: .line 105
            aload 4 /* element */
            aload 1 /* pvs */
            invokevirtual org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.clearPropertySkipping:(Lorg/springframework/beans/PropertyValues;)V
        end local 4 // org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement element
         8: .line 104
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
         9: .line 108
      StackMap locals: org.springframework.beans.factory.annotation.InjectionMetadata org.springframework.beans.PropertyValues java.util.Collection java.util.Collection
      StackMap stack:
            return
        end local 3 // java.util.Collection elementsToIterate
        end local 2 // java.util.Collection checkedElements
        end local 1 // org.springframework.beans.PropertyValues pvs
        end local 0 // org.springframework.beans.factory.annotation.InjectionMetadata this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   10     0               this  Lorg/springframework/beans/factory/annotation/InjectionMetadata;
            0   10     1                pvs  Lorg/springframework/beans/PropertyValues;
            1   10     2    checkedElements  Ljava/util/Collection<Lorg/springframework/beans/factory/annotation/InjectionMetadata$InjectedElement;>;
            4   10     3  elementsToIterate  Ljava/util/Collection<Lorg/springframework/beans/factory/annotation/InjectionMetadata$InjectedElement;>;
            7    8     4            element  Lorg/springframework/beans/factory/annotation/InjectionMetadata$InjectedElement;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
      Name  Flags
      pvs   

  public static boolean needsRefresh(org.springframework.beans.factory.annotation.InjectionMetadata, java.lang.Class<?>);
    descriptor: (Lorg/springframework/beans/factory/annotation/InjectionMetadata;Ljava/lang/Class;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.beans.factory.annotation.InjectionMetadata metadata
        start local 1 // java.lang.Class clazz
         0: .line 112
            aload 0 /* metadata */
            ifnull 1
            aload 0 /* metadata */
            getfield org.springframework.beans.factory.annotation.InjectionMetadata.targetClass:Ljava/lang/Class;
            aload 1 /* clazz */
            if_acmpne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 1 // java.lang.Class clazz
        end local 0 // org.springframework.beans.factory.annotation.InjectionMetadata metadata
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0  metadata  Lorg/springframework/beans/factory/annotation/InjectionMetadata;
            0    2     1     clazz  Ljava/lang/Class<*>;
    Signature: (Lorg/springframework/beans/factory/annotation/InjectionMetadata;Ljava/lang/Class<*>;)Z
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
    MethodParameters:
          Name  Flags
      metadata  
      clazz     
}
SourceFile: "InjectionMetadata.java"
NestMembers:
  org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement
InnerClasses:
  public abstract InjectedElement = org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement of org.springframework.beans.factory.annotation.InjectionMetadata