class org.springframework.data.spel.EvaluationContextExtensionInformation
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.springframework.data.spel.EvaluationContextExtensionInformation
  super_class: java.lang.Object
{
  private final org.springframework.data.spel.EvaluationContextExtensionInformation$ExtensionTypeInformation extensionTypeInformation;
    descriptor: Lorg/springframework/data/spel/EvaluationContextExtensionInformation$ExtensionTypeInformation;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Optional<org.springframework.data.spel.EvaluationContextExtensionInformation$RootObjectInformation> rootObjectInformation;
    descriptor: Ljava/util/Optional;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Optional<Lorg/springframework/data/spel/EvaluationContextExtensionInformation$RootObjectInformation;>;

  public void <init>(java.lang.Class<? extends org.springframework.data.spel.spi.EvaluationContextExtension>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.springframework.data.spel.EvaluationContextExtensionInformation this
        start local 1 // java.lang.Class type
         0: .line 72
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 74
            aload 1 /* type */
            ldc "Extension type must not be null!"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         2: .line 76
            aload 1 /* type */
            ldc "getRootObject"
            iconst_0
            anewarray java.lang.Class
            invokestatic org.springframework.data.util.ReflectionUtils.findRequiredMethod:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
         3: .line 77
            invokevirtual java.lang.reflect.Method.getReturnType:()Ljava/lang/Class;
         4: .line 76
            astore 2 /* rootObjectType */
        start local 2 // java.lang.Class rootObjectType
         5: .line 79
            aload 0 /* this */
         6: .line 80
            ldc Ljava/lang/Object;
            aload 2 /* rootObjectType */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 7
            aconst_null
            goto 8
      StackMap locals: org.springframework.data.spel.EvaluationContextExtensionInformation java.lang.Class java.lang.Class
      StackMap stack: org.springframework.data.spel.EvaluationContextExtensionInformation
         7: new org.springframework.data.spel.EvaluationContextExtensionInformation$RootObjectInformation
            dup
            aload 2 /* rootObjectType */
            invokespecial org.springframework.data.spel.EvaluationContextExtensionInformation$RootObjectInformation.<init>:(Ljava/lang/Class;)V
      StackMap locals: org.springframework.data.spel.EvaluationContextExtensionInformation java.lang.Class java.lang.Class
      StackMap stack: org.springframework.data.spel.EvaluationContextExtensionInformation org.springframework.data.spel.EvaluationContextExtensionInformation$RootObjectInformation
         8: invokestatic java.util.Optional.ofNullable:(Ljava/lang/Object;)Ljava/util/Optional;
         9: .line 79
            putfield org.springframework.data.spel.EvaluationContextExtensionInformation.rootObjectInformation:Ljava/util/Optional;
        10: .line 81
            aload 0 /* this */
            new org.springframework.data.spel.EvaluationContextExtensionInformation$ExtensionTypeInformation
            dup
            aload 1 /* type */
            invokespecial org.springframework.data.spel.EvaluationContextExtensionInformation$ExtensionTypeInformation.<init>:(Ljava/lang/Class;)V
            putfield org.springframework.data.spel.EvaluationContextExtensionInformation.extensionTypeInformation:Lorg/springframework/data/spel/EvaluationContextExtensionInformation$ExtensionTypeInformation;
        11: .line 82
            return
        end local 2 // java.lang.Class rootObjectType
        end local 1 // java.lang.Class type
        end local 0 // org.springframework.data.spel.EvaluationContextExtensionInformation this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   12     0            this  Lorg/springframework/data/spel/EvaluationContextExtensionInformation;
            0   12     1            type  Ljava/lang/Class<+Lorg/springframework/data/spel/spi/EvaluationContextExtension;>;
            5   12     2  rootObjectType  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<+Lorg/springframework/data/spel/spi/EvaluationContextExtension;>;)V
    MethodParameters:
      Name  Flags
      type  

  public org.springframework.data.spel.EvaluationContextExtensionInformation$ExtensionTypeInformation getExtensionTypeInformation();
    descriptor: ()Lorg/springframework/data/spel/EvaluationContextExtensionInformation$ExtensionTypeInformation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.data.spel.EvaluationContextExtensionInformation this
         0: .line 90
            aload 0 /* this */
            getfield org.springframework.data.spel.EvaluationContextExtensionInformation.extensionTypeInformation:Lorg/springframework/data/spel/EvaluationContextExtensionInformation$ExtensionTypeInformation;
            areturn
        end local 0 // org.springframework.data.spel.EvaluationContextExtensionInformation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/data/spel/EvaluationContextExtensionInformation;

  public org.springframework.data.spel.EvaluationContextExtensionInformation$RootObjectInformation getRootObjectInformation(java.util.Optional<java.lang.Object>);
    descriptor: (Ljava/util/Optional;)Lorg/springframework/data/spel/EvaluationContextExtensionInformation$RootObjectInformation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.data.spel.EvaluationContextExtensionInformation this
        start local 1 // java.util.Optional target
         0: .line 102
            aload 1 /* target */
            aload 0 /* this */
            invokedynamic apply(Lorg/springframework/data/spel/EvaluationContextExtensionInformation;)Ljava/util/function/Function;
              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/Object;
                  org/springframework/data/spel/EvaluationContextExtensionInformation.lambda$0(Ljava/lang/Object;)Lorg/springframework/data/spel/EvaluationContextExtensionInformation$RootObjectInformation; (7)
                  (Ljava/lang/Object;)Lorg/springframework/data/spel/EvaluationContextExtensionInformation$RootObjectInformation;
            invokevirtual java.util.Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional;
         1: .line 103
            getstatic org.springframework.data.spel.EvaluationContextExtensionInformation$RootObjectInformation.NONE:Lorg/springframework/data/spel/EvaluationContextExtensionInformation$RootObjectInformation;
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.springframework.data.spel.EvaluationContextExtensionInformation$RootObjectInformation
         2: .line 102
            areturn
        end local 1 // java.util.Optional target
        end local 0 // org.springframework.data.spel.EvaluationContextExtensionInformation this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/springframework/data/spel/EvaluationContextExtensionInformation;
            0    3     1  target  Ljava/util/Optional<Ljava/lang/Object;>;
    Signature: (Ljava/util/Optional<Ljava/lang/Object;>;)Lorg/springframework/data/spel/EvaluationContextExtensionInformation$RootObjectInformation;
    MethodParameters:
        Name  Flags
      target  

  private static java.util.Map<java.lang.String, java.lang.Object> discoverDeclaredProperties(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Ljava/util/Map;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.Class type
         0: .line 277
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 1 /* map */
        start local 1 // java.util.Map map
         1: .line 279
            aload 0 /* type */
            aload 1 /* map */
            invokedynamic doWith(Ljava/util/Map;)Lorg/springframework/util/ReflectionUtils$FieldCallback;
              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/reflect/Field;)V
                  org/springframework/data/spel/EvaluationContextExtensionInformation.lambda$2(Ljava/util/Map;Ljava/lang/reflect/Field;)V (6)
                  (Ljava/lang/reflect/Field;)V
         2: .line 280
            getstatic org.springframework.data.spel.EvaluationContextExtensionInformation$ExtensionTypeInformation$PublicMethodAndFieldFilter.STATIC:Lorg/springframework/data/spel/EvaluationContextExtensionInformation$ExtensionTypeInformation$PublicMethodAndFieldFilter;
         3: .line 279
            invokestatic org.springframework.util.ReflectionUtils.doWithFields:(Ljava/lang/Class;Lorg/springframework/util/ReflectionUtils$FieldCallback;Lorg/springframework/util/ReflectionUtils$FieldFilter;)V
         4: .line 282
            aload 1 /* map */
            invokeinterface java.util.Map.isEmpty:()Z
            ifeq 5
            invokestatic java.util.Collections.emptyMap:()Ljava/util/Map;
            goto 6
      StackMap locals: java.util.Map
      StackMap stack:
         5: aload 1 /* map */
            invokestatic java.util.Collections.unmodifiableMap:(Ljava/util/Map;)Ljava/util/Map;
      StackMap locals:
      StackMap stack: java.util.Map
         6: areturn
        end local 1 // java.util.Map map
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  type  Ljava/lang/Class<*>;
            1    7     1   map  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
    Signature: (Ljava/lang/Class<*>;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
    MethodParameters:
      Name  Flags
      type  

  private org.springframework.data.spel.EvaluationContextExtensionInformation$RootObjectInformation lambda$0(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lorg/springframework/data/spel/EvaluationContextExtensionInformation$RootObjectInformation;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.data.spel.EvaluationContextExtensionInformation this
        start local 1 // java.lang.Object it
         0: .line 102
            aload 0 /* this */
            getfield org.springframework.data.spel.EvaluationContextExtensionInformation.rootObjectInformation:Ljava/util/Optional;
            aload 1 /* it */
            invokedynamic get(Ljava/lang/Object;)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/data/spel/EvaluationContextExtensionInformation.lambda$1(Ljava/lang/Object;)Lorg/springframework/data/spel/EvaluationContextExtensionInformation$RootObjectInformation; (6)
                  ()Lorg/springframework/data/spel/EvaluationContextExtensionInformation$RootObjectInformation;
            invokevirtual java.util.Optional.orElseGet:(Ljava/util/function/Supplier;)Ljava/lang/Object;
            checkcast org.springframework.data.spel.EvaluationContextExtensionInformation$RootObjectInformation
            areturn
        end local 1 // java.lang.Object it
        end local 0 // org.springframework.data.spel.EvaluationContextExtensionInformation this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/data/spel/EvaluationContextExtensionInformation;
            0    1     1    it  Ljava/lang/Object;

  private static void lambda$2(java.util.Map, java.lang.reflect.Field);
    descriptor: (Ljava/util/Map;Ljava/lang/reflect/Field;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=2, args_size=2
        start local 1 // java.lang.reflect.Field field
         0: .line 279
            aload 0
            aload 1 /* field */
            invokevirtual java.lang.reflect.Field.getName:()Ljava/lang/String;
            aload 1 /* field */
            aconst_null
            invokevirtual java.lang.reflect.Field.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            return
        end local 1 // java.lang.reflect.Field field
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     1  field  Ljava/lang/reflect/Field;
    Exceptions:
      throws java.lang.IllegalArgumentException, java.lang.IllegalAccessException

  private static org.springframework.data.spel.EvaluationContextExtensionInformation$RootObjectInformation lambda$1(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Lorg/springframework/data/spel/EvaluationContextExtensionInformation$RootObjectInformation;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 102
            new org.springframework.data.spel.EvaluationContextExtensionInformation$RootObjectInformation
            dup
            aload 0
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokespecial org.springframework.data.spel.EvaluationContextExtensionInformation$RootObjectInformation.<init>:(Ljava/lang/Class;)V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "EvaluationContextExtensionInformation.java"
NestMembers:
  org.springframework.data.spel.EvaluationContextExtensionInformation$ExtensionTypeInformation  org.springframework.data.spel.EvaluationContextExtensionInformation$ExtensionTypeInformation$PublicMethodAndFieldFilter  org.springframework.data.spel.EvaluationContextExtensionInformation$RootObjectInformation
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public ExtensionTypeInformation = org.springframework.data.spel.EvaluationContextExtensionInformation$ExtensionTypeInformation of org.springframework.data.spel.EvaluationContextExtensionInformation
  PublicMethodAndFieldFilter = org.springframework.data.spel.EvaluationContextExtensionInformation$ExtensionTypeInformation$PublicMethodAndFieldFilter of org.springframework.data.spel.EvaluationContextExtensionInformation$ExtensionTypeInformation
  RootObjectInformation = org.springframework.data.spel.EvaluationContextExtensionInformation$RootObjectInformation of org.springframework.data.spel.EvaluationContextExtensionInformation
  public abstract FieldCallback = org.springframework.util.ReflectionUtils$FieldCallback of org.springframework.util.ReflectionUtils
  public abstract FieldFilter = org.springframework.util.ReflectionUtils$FieldFilter of org.springframework.util.ReflectionUtils