class org.springframework.core.annotation.MapAnnotationAttributeExtractor extends org.springframework.core.annotation.AbstractAliasAwareAnnotationAttributeExtractor<java.util.Map<java.lang.String, java.lang.Object>>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.springframework.core.annotation.MapAnnotationAttributeExtractor
  super_class: org.springframework.core.annotation.AbstractAliasAwareAnnotationAttributeExtractor
{
  void <init>(java.util.Map<java.lang.String, java.lang.Object>, java.lang.Class<? extends java.lang.annotation.Annotation>, java.lang.reflect.AnnotatedElement);
    descriptor: (Ljava/util/Map;Ljava/lang/Class;Ljava/lang/reflect/AnnotatedElement;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.springframework.core.annotation.MapAnnotationAttributeExtractor this
        start local 1 // java.util.Map attributes
        start local 2 // java.lang.Class annotationType
        start local 3 // java.lang.reflect.AnnotatedElement annotatedElement
         0: .line 58
            aload 0 /* this */
            aload 2 /* annotationType */
            aload 3 /* annotatedElement */
            aload 1 /* attributes */
            aload 2 /* annotationType */
            invokestatic org.springframework.core.annotation.MapAnnotationAttributeExtractor.enrichAndValidateAttributes:(Ljava/util/Map;Ljava/lang/Class;)Ljava/util/Map;
            invokespecial org.springframework.core.annotation.AbstractAliasAwareAnnotationAttributeExtractor.<init>:(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 59
            return
        end local 3 // java.lang.reflect.AnnotatedElement annotatedElement
        end local 2 // java.lang.Class annotationType
        end local 1 // java.util.Map attributes
        end local 0 // org.springframework.core.annotation.MapAnnotationAttributeExtractor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    2     0              this  Lorg/springframework/core/annotation/MapAnnotationAttributeExtractor;
            0    2     1        attributes  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            0    2     2    annotationType  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
            0    2     3  annotatedElement  Ljava/lang/reflect/AnnotatedElement;
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;Ljava/lang/reflect/AnnotatedElement;)V
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        org.springframework.lang.Nullable()
    MethodParameters:
                  Name  Flags
      attributes        
      annotationType    
      annotatedElement  

  protected java.lang.Object getRawAttributeValue(java.lang.reflect.Method);
    descriptor: (Ljava/lang/reflect/Method;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.core.annotation.MapAnnotationAttributeExtractor this
        start local 1 // java.lang.reflect.Method attributeMethod
         0: .line 65
            aload 0 /* this */
            aload 1 /* attributeMethod */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            invokevirtual org.springframework.core.annotation.MapAnnotationAttributeExtractor.getRawAttributeValue:(Ljava/lang/String;)Ljava/lang/Object;
            areturn
        end local 1 // java.lang.reflect.Method attributeMethod
        end local 0 // org.springframework.core.annotation.MapAnnotationAttributeExtractor this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0             this  Lorg/springframework/core/annotation/MapAnnotationAttributeExtractor;
            0    1     1  attributeMethod  Ljava/lang/reflect/Method;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
                 Name  Flags
      attributeMethod  

  protected java.lang.Object getRawAttributeValue(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.core.annotation.MapAnnotationAttributeExtractor this
        start local 1 // java.lang.String attributeName
         0: .line 71
            aload 0 /* this */
            invokevirtual org.springframework.core.annotation.MapAnnotationAttributeExtractor.getSource:()Ljava/lang/Object;
            checkcast java.util.Map
            aload 1 /* attributeName */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 1 // java.lang.String attributeName
        end local 0 // org.springframework.core.annotation.MapAnnotationAttributeExtractor this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Lorg/springframework/core/annotation/MapAnnotationAttributeExtractor;
            0    1     1  attributeName  Ljava/lang/String;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()
    MethodParameters:
               Name  Flags
      attributeName  

  private static java.util.Map<java.lang.String, java.lang.Object> enrichAndValidateAttributes(java.util.Map<java.lang.String, java.lang.Object>, java.lang.Class<? extends java.lang.annotation.Annotation>);
    descriptor: (Ljava/util/Map;Ljava/lang/Class;)Ljava/util/Map;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=13, args_size=2
        start local 0 // java.util.Map originalAttributes
        start local 1 // java.lang.Class annotationType
         0: .line 93
            new java.util.LinkedHashMap
            dup
            aload 0 /* originalAttributes */
            invokespecial java.util.LinkedHashMap.<init>:(Ljava/util/Map;)V
            astore 2 /* attributes */
        start local 2 // java.util.Map attributes
         1: .line 94
            aload 1 /* annotationType */
            invokestatic org.springframework.core.annotation.AnnotationUtils.getAttributeAliasMap:(Ljava/lang/Class;)Ljava/util/Map;
            astore 3 /* attributeAliasMap */
        start local 3 // java.util.Map attributeAliasMap
         2: .line 96
            aload 1 /* annotationType */
            invokestatic org.springframework.core.annotation.AnnotationUtils.getAttributeMethods:(Ljava/lang/Class;)Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 50
      StackMap locals: java.util.Map java.lang.Class java.util.Map java.util.Map top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.reflect.Method
            astore 4 /* attributeMethod */
        start local 4 // java.lang.reflect.Method attributeMethod
         4: .line 97
            aload 4 /* attributeMethod */
            invokevirtual java.lang.reflect.Method.getName:()Ljava/lang/String;
            astore 6 /* attributeName */
        start local 6 // java.lang.String attributeName
         5: .line 98
            aload 2 /* attributes */
            aload 6 /* attributeName */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 7 /* attributeValue */
        start local 7 // java.lang.Object attributeValue
         6: .line 101
            aload 7 /* attributeValue */
            ifnonnull 17
         7: .line 102
            aload 3 /* attributeAliasMap */
            aload 6 /* attributeName */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 8 /* aliasNames */
        start local 8 // java.util.List aliasNames
         8: .line 103
            aload 8 /* aliasNames */
            ifnull 17
         9: .line 104
            aload 8 /* aliasNames */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 16
      StackMap locals: java.util.Map java.lang.Class java.util.Map java.util.Map java.lang.reflect.Method java.util.Iterator java.lang.String java.lang.Object java.util.List top java.util.Iterator
      StackMap stack:
        10: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 9 /* aliasName */
        start local 9 // java.lang.String aliasName
        11: .line 105
            aload 2 /* attributes */
            aload 9 /* aliasName */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 11 /* aliasValue */
        start local 11 // java.lang.Object aliasValue
        12: .line 106
            aload 11 /* aliasValue */
            ifnull 16
        13: .line 107
            aload 11 /* aliasValue */
            astore 7 /* attributeValue */
        14: .line 108
            aload 2 /* attributes */
            aload 6 /* attributeName */
            aload 7 /* attributeValue */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        15: .line 109
            goto 17
        end local 11 // java.lang.Object aliasValue
        end local 9 // java.lang.String aliasName
        16: .line 104
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 10
        end local 8 // java.util.List aliasNames
        17: .line 116
      StackMap locals: java.util.Map java.lang.Class java.util.Map java.util.Map java.lang.reflect.Method java.util.Iterator java.lang.String java.lang.Object
      StackMap stack:
            aload 7 /* attributeValue */
            ifnonnull 22
        18: .line 117
            aload 1 /* annotationType */
            aload 6 /* attributeName */
            invokestatic org.springframework.core.annotation.AnnotationUtils.getDefaultValue:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
            astore 8 /* defaultValue */
        start local 8 // java.lang.Object defaultValue
        19: .line 118
            aload 8 /* defaultValue */
            ifnull 22
        20: .line 119
            aload 8 /* defaultValue */
            astore 7 /* attributeValue */
        21: .line 120
            aload 2 /* attributes */
            aload 6 /* attributeName */
            aload 7 /* attributeValue */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 8 // java.lang.Object defaultValue
        22: .line 125
      StackMap locals:
      StackMap stack:
            aload 7 /* attributeValue */
            aload 2 /* attributes */
            aload 6 /* attributeName */
            aload 1 /* annotationType */
            invokedynamic get(Ljava/util/Map;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/function/Supplier;
              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;
                  org/springframework/core/annotation/MapAnnotationAttributeExtractor.lambda$0(Ljava/util/Map;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/String; (6)
                  ()Ljava/lang/String;
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/util/function/Supplier;)V
        23: .line 130
            aload 4 /* attributeMethod */
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
            astore 8 /* requiredReturnType */
        start local 8 // java.lang.Class requiredReturnType
        24: .line 131
            aload 7 /* attributeValue */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            astore 9 /* actualReturnType */
        start local 9 // java.lang.Class actualReturnType
        25: .line 133
            aload 8 /* requiredReturnType */
            aload 9 /* actualReturnType */
            invokestatic org.springframework.util.ClassUtils.isAssignable:(Ljava/lang/Class;Ljava/lang/Class;)Z
            ifne 50
        26: .line 134
            iconst_0
            istore 10 /* converted */
        start local 10 // boolean converted
        27: .line 137
            aload 8 /* requiredReturnType */
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 33
            aload 8 /* requiredReturnType */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            aload 9 /* actualReturnType */
            if_acmpne 33
        28: .line 138
            aload 8 /* requiredReturnType */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            iconst_1
            invokestatic java.lang.reflect.Array.newInstance:(Ljava/lang/Class;I)Ljava/lang/Object;
            astore 11 /* array */
        start local 11 // java.lang.Object array
        29: .line 139
            aload 11 /* array */
            iconst_0
            aload 7 /* attributeValue */
            invokestatic java.lang.reflect.Array.set:(Ljava/lang/Object;ILjava/lang/Object;)V
        30: .line 140
            aload 2 /* attributes */
            aload 6 /* attributeName */
            aload 11 /* array */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        31: .line 141
            iconst_1
            istore 10 /* converted */
        end local 11 // java.lang.Object array
        32: .line 142
            goto 49
        33: .line 145
      StackMap locals: java.lang.Class java.lang.Class int
      StackMap stack:
            ldc Ljava/lang/annotation/Annotation;
            aload 8 /* requiredReturnType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 41
        34: .line 146
            ldc Ljava/util/Map;
            aload 9 /* actualReturnType */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 41
        35: .line 148
            aload 8 /* requiredReturnType */
        36: .line 147
            astore 11 /* nestedAnnotationType */
        start local 11 // java.lang.Class nestedAnnotationType
        37: .line 149
            aload 7 /* attributeValue */
            checkcast java.util.Map
            astore 12 /* map */
        start local 12 // java.util.Map map
        38: .line 150
            aload 2 /* attributes */
            aload 6 /* attributeName */
            aload 12 /* map */
            aload 11 /* nestedAnnotationType */
            aconst_null
            invokestatic org.springframework.core.annotation.AnnotationUtils.synthesizeAnnotation:(Ljava/util/Map;Ljava/lang/Class;Ljava/lang/reflect/AnnotatedElement;)Ljava/lang/annotation/Annotation;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        39: .line 151
            iconst_1
            istore 10 /* converted */
        end local 12 // java.util.Map map
        end local 11 // java.lang.Class nestedAnnotationType
        40: .line 152
            goto 49
        41: .line 155
      StackMap locals:
      StackMap stack:
            aload 8 /* requiredReturnType */
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 49
            aload 9 /* actualReturnType */
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 49
        42: .line 156
            ldc Ljava/lang/annotation/Annotation;
            aload 8 /* requiredReturnType */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 49
        43: .line 157
            ldc Ljava/util/Map;
            aload 9 /* actualReturnType */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 49
        44: .line 159
            aload 8 /* requiredReturnType */
            invokevirtual java.lang.Class.getComponentType:()Ljava/lang/Class;
        45: .line 158
            astore 11 /* nestedAnnotationType */
        start local 11 // java.lang.Class nestedAnnotationType
        46: .line 160
            aload 7 /* attributeValue */
            checkcast java.util.Map[]
            astore 12 /* maps */
        start local 12 // java.util.Map[] maps
        47: .line 161
            aload 2 /* attributes */
            aload 6 /* attributeName */
            aload 12 /* maps */
            aload 11 /* nestedAnnotationType */
            invokestatic org.springframework.core.annotation.AnnotationUtils.synthesizeAnnotationArray:([Ljava/util/Map;Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        48: .line 162
            iconst_1
            istore 10 /* converted */
        end local 12 // java.util.Map[] maps
        end local 11 // java.lang.Class nestedAnnotationType
        49: .line 165
      StackMap locals:
      StackMap stack:
            iload 10 /* converted */
            aload 2 /* attributes */
            aload 9 /* actualReturnType */
            aload 6 /* attributeName */
            aload 8 /* requiredReturnType */
            aload 1 /* annotationType */
            invokedynamic get(Ljava/util/Map;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/function/Supplier;
              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;
                  org/springframework/core/annotation/MapAnnotationAttributeExtractor.lambda$1(Ljava/util/Map;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/String; (6)
                  ()Ljava/lang/String;
            invokestatic org.springframework.util.Assert.isTrue:(ZLjava/util/function/Supplier;)V
        end local 10 // boolean converted
        end local 9 // java.lang.Class actualReturnType
        end local 8 // java.lang.Class requiredReturnType
        end local 7 // java.lang.Object attributeValue
        end local 6 // java.lang.String attributeName
        end local 4 // java.lang.reflect.Method attributeMethod
        50: .line 96
      StackMap locals: java.util.Map java.lang.Class java.util.Map java.util.Map top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        51: .line 173
            aload 2 /* attributes */
            areturn
        end local 3 // java.util.Map attributeAliasMap
        end local 2 // java.util.Map attributes
        end local 1 // java.lang.Class annotationType
        end local 0 // java.util.Map originalAttributes
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   52     0    originalAttributes  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            0   52     1        annotationType  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
            1   52     2            attributes  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
            2   52     3     attributeAliasMap  Ljava/util/Map<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
            4   50     4       attributeMethod  Ljava/lang/reflect/Method;
            5   50     6         attributeName  Ljava/lang/String;
            6   50     7        attributeValue  Ljava/lang/Object;
            8   17     8            aliasNames  Ljava/util/List<Ljava/lang/String;>;
           11   16     9             aliasName  Ljava/lang/String;
           12   16    11            aliasValue  Ljava/lang/Object;
           19   22     8          defaultValue  Ljava/lang/Object;
           24   50     8    requiredReturnType  Ljava/lang/Class<*>;
           25   50     9      actualReturnType  Ljava/lang/Class<*>;
           27   50    10             converted  Z
           29   32    11                 array  Ljava/lang/Object;
           37   40    11  nestedAnnotationType  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
           38   40    12                   map  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
           46   49    11  nestedAnnotationType  Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;
           47   49    12                  maps  [Ljava/util/Map;
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;Ljava/lang/Class<+Ljava/lang/annotation/Annotation;>;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
    MethodParameters:
                    Name  Flags
      originalAttributes  
      annotationType      

  private static java.lang.String lambda$0(java.util.Map, java.lang.String, java.lang.Class);
    descriptor: (Ljava/util/Map;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=5, locals=3, args_size=3
         0: .line 126
            ldc "Attributes map %s returned null for required attribute '%s' defined by annotation type [%s]."
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         1: .line 127
            aload 0
            aastore
            dup
            iconst_1
            aload 1
            aastore
            dup
            iconst_2
            aload 2
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
         2: .line 125
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         3: .line 127
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.lang.String lambda$1(java.util.Map, java.lang.Class, java.lang.String, java.lang.Class, java.lang.Class);
    descriptor: (Ljava/util/Map;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=5, locals=5, args_size=5
         0: .line 166
            ldc "Attributes map %s returned a value of type [%s] for attribute '%s', but a value of type [%s] is required as defined by annotation type [%s]."
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
         1: .line 168
            aload 0
            aastore
            dup
            iconst_1
            aload 1
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_2
            aload 2
            aastore
            dup
            iconst_3
            aload 3
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_4
         2: .line 169
            aload 4
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
         3: .line 165
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         4: .line 169
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Lorg/springframework/core/annotation/AbstractAliasAwareAnnotationAttributeExtractor<Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;>;
SourceFile: "MapAnnotationAttributeExtractor.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles