public class org.springframework.data.mapping.PreferredConstructor$Parameter<T, P extends org.springframework.data.mapping.PersistentProperty<P>>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.data.mapping.PreferredConstructor$Parameter
  super_class: java.lang.Object
{
  private final java.lang.String name;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private final org.springframework.data.util.TypeInformation<T> type;
    descriptor: Lorg/springframework/data/util/TypeInformation;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/springframework/data/util/TypeInformation<TT;>;

  private final java.lang.String key;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.springframework.data.mapping.PersistentEntity<T, P> entity;
    descriptor: Lorg/springframework/data/mapping/PersistentEntity;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/springframework/data/mapping/PersistentEntity<TT;TP;>;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private final org.springframework.data.util.Lazy<java.lang.Boolean> enclosingClassCache;
    descriptor: Lorg/springframework/data/util/Lazy;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/springframework/data/util/Lazy<Ljava/lang/Boolean;>;

  private final org.springframework.data.util.Lazy<java.lang.Boolean> hasSpelExpression;
    descriptor: Lorg/springframework/data/util/Lazy;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/springframework/data/util/Lazy<Ljava/lang/Boolean;>;

  public void <init>(java.lang.String, org.springframework.data.util.TypeInformation<T>, java.lang.annotation.Annotation[], org.springframework.data.mapping.PersistentEntity<T, P>);
    descriptor: (Ljava/lang/String;Lorg/springframework/data/util/TypeInformation;[Ljava/lang/annotation/Annotation;Lorg/springframework/data/mapping/PersistentEntity;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
        start local 1 // java.lang.String name
        start local 2 // org.springframework.data.util.TypeInformation type
        start local 3 // java.lang.annotation.Annotation[] annotations
        start local 4 // org.springframework.data.mapping.PersistentEntity entity
         0: .line 210
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 213
            aload 2 /* type */
            ldc "Type must not be null!"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         2: .line 214
            aload 3 /* annotations */
            ldc "Annotations must not be null!"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         3: .line 216
            aload 0 /* this */
            aload 1 /* name */
            putfield org.springframework.data.mapping.PreferredConstructor$Parameter.name:Ljava/lang/String;
         4: .line 217
            aload 0 /* this */
            aload 2 /* type */
            putfield org.springframework.data.mapping.PreferredConstructor$Parameter.type:Lorg/springframework/data/util/TypeInformation;
         5: .line 218
            aload 0 /* this */
            aload 3 /* annotations */
            invokestatic org.springframework.data.mapping.PreferredConstructor$Parameter.getValue:([Ljava/lang/annotation/Annotation;)Ljava/lang/String;
            putfield org.springframework.data.mapping.PreferredConstructor$Parameter.key:Ljava/lang/String;
         6: .line 219
            aload 0 /* this */
            aload 4 /* entity */
            putfield org.springframework.data.mapping.PreferredConstructor$Parameter.entity:Lorg/springframework/data/mapping/PersistentEntity;
         7: .line 221
            aload 0 /* this */
            aload 4 /* entity */
            aload 2 /* type */
            invokedynamic get(Lorg/springframework/data/mapping/PersistentEntity;Lorg/springframework/data/util/TypeInformation;)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/mapping/PreferredConstructor$Parameter.lambda$0(Lorg/springframework/data/mapping/PersistentEntity;Lorg/springframework/data/util/TypeInformation;)Ljava/lang/Boolean; (6)
                  ()Ljava/lang/Boolean;
            invokestatic org.springframework.data.util.Lazy.of:(Ljava/util/function/Supplier;)Lorg/springframework/data/util/Lazy;
            putfield org.springframework.data.mapping.PreferredConstructor$Parameter.enclosingClassCache:Lorg/springframework/data/util/Lazy;
         8: .line 231
            aload 0 /* this */
            aload 0 /* this */
            invokedynamic get(Lorg/springframework/data/mapping/PreferredConstructor$Parameter;)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/mapping/PreferredConstructor$Parameter.lambda$1()Ljava/lang/Boolean; (7)
                  ()Ljava/lang/Boolean;
            invokestatic org.springframework.data.util.Lazy.of:(Ljava/util/function/Supplier;)Lorg/springframework/data/util/Lazy;
            putfield org.springframework.data.mapping.PreferredConstructor$Parameter.hasSpelExpression:Lorg/springframework/data/util/Lazy;
         9: .line 232
            return
        end local 4 // org.springframework.data.mapping.PersistentEntity entity
        end local 3 // java.lang.annotation.Annotation[] annotations
        end local 2 // org.springframework.data.util.TypeInformation type
        end local 1 // java.lang.String name
        end local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   10     0         this  Lorg/springframework/data/mapping/PreferredConstructor$Parameter<TT;TP;>;
            0   10     1         name  Ljava/lang/String;
            0   10     2         type  Lorg/springframework/data/util/TypeInformation<TT;>;
            0   10     3  annotations  [Ljava/lang/annotation/Annotation;
            0   10     4       entity  Lorg/springframework/data/mapping/PersistentEntity<TT;TP;>;
    Signature: (Ljava/lang/String;Lorg/springframework/data/util/TypeInformation<TT;>;[Ljava/lang/annotation/Annotation;Lorg/springframework/data/mapping/PersistentEntity<TT;TP;>;)V
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
      1:
      2:
      3:
        org.springframework.lang.Nullable()
    MethodParameters:
             Name  Flags
      name         
      type         
      annotations  
      entity       

  private static java.lang.String getValue(java.lang.annotation.Annotation[]);
    descriptor: ([Ljava/lang/annotation/Annotation;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.annotation.Annotation[] annotations
         0: .line 236
            aload 0 /* annotations */
            invokestatic java.util.Arrays.stream:([Ljava/lang/Object;)Ljava/util/stream/Stream;
         1: .line 237
            invokedynamic test()Ljava/util/function/Predicate;
              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;)Z
                  org/springframework/data/mapping/PreferredConstructor$Parameter.lambda$2(Ljava/lang/annotation/Annotation;)Z (6)
                  (Ljava/lang/annotation/Annotation;)Z
            invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
         2: .line 238
            invokeinterface java.util.stream.Stream.findFirst:()Ljava/util/Optional;
            invokedynamic apply()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/mapping/PreferredConstructor$Parameter.lambda$3(Ljava/lang/annotation/Annotation;)Ljava/lang/String; (6)
                  (Ljava/lang/annotation/Annotation;)Ljava/lang/String;
            invokevirtual java.util.Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional;
         3: .line 239
            invokedynamic test()Ljava/util/function/Predicate;
              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;)Z
                  org/springframework/util/StringUtils.hasText(Ljava/lang/String;)Z (6)
                  (Ljava/lang/String;)Z
            invokevirtual java.util.Optional.filter:(Ljava/util/function/Predicate;)Ljava/util/Optional;
            aconst_null
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
         4: .line 236
            areturn
        end local 0 // java.lang.annotation.Annotation[] annotations
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0  annotations  [Ljava/lang/annotation/Annotation;
    MethodParameters:
             Name  Flags
      annotations  

  public java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
         0: .line 249
            aload 0 /* this */
            getfield org.springframework.data.mapping.PreferredConstructor$Parameter.name:Ljava/lang/String;
            areturn
        end local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/data/mapping/PreferredConstructor$Parameter<TT;TP;>;
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  public org.springframework.data.util.TypeInformation<T> getType();
    descriptor: ()Lorg/springframework/data/util/TypeInformation;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
         0: .line 258
            aload 0 /* this */
            getfield org.springframework.data.mapping.PreferredConstructor$Parameter.type:Lorg/springframework/data/util/TypeInformation;
            areturn
        end local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/data/mapping/PreferredConstructor$Parameter<TT;TP;>;
    Signature: ()Lorg/springframework/data/util/TypeInformation<TT;>;

  public java.lang.Class<T> getRawType();
    descriptor: ()Ljava/lang/Class;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
         0: .line 267
            aload 0 /* this */
            getfield org.springframework.data.mapping.PreferredConstructor$Parameter.type:Lorg/springframework/data/util/TypeInformation;
            invokeinterface org.springframework.data.util.TypeInformation.getType:()Ljava/lang/Class;
            areturn
        end local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/data/mapping/PreferredConstructor$Parameter<TT;TP;>;
    Signature: ()Ljava/lang/Class<TT;>;

  public java.lang.String getSpelExpression();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
         0: .line 276
            aload 0 /* this */
            getfield org.springframework.data.mapping.PreferredConstructor$Parameter.key:Ljava/lang/String;
            areturn
        end local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/data/mapping/PreferredConstructor$Parameter<TT;TP;>;

  public boolean hasSpelExpression();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
         0: .line 285
            aload 0 /* this */
            getfield org.springframework.data.mapping.PreferredConstructor$Parameter.hasSpelExpression:Lorg/springframework/data/util/Lazy;
            invokevirtual org.springframework.data.util.Lazy.get:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ireturn
        end local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/data/mapping/PreferredConstructor$Parameter<TT;TP;>;

  boolean maps(org.springframework.data.mapping.PersistentProperty<?>);
    descriptor: (Lorg/springframework/data/mapping/PersistentProperty;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
        start local 1 // org.springframework.data.mapping.PersistentProperty property
         0: .line 296
            aload 0 /* this */
            getfield org.springframework.data.mapping.PreferredConstructor$Parameter.entity:Lorg/springframework/data/mapping/PersistentEntity;
            astore 2 /* entity */
        start local 2 // org.springframework.data.mapping.PersistentEntity entity
         1: .line 297
            aload 0 /* this */
            getfield org.springframework.data.mapping.PreferredConstructor$Parameter.name:Ljava/lang/String;
            astore 3 /* name */
        start local 3 // java.lang.String name
         2: .line 299
            aload 2 /* entity */
            ifnonnull 3
            aconst_null
            goto 5
      StackMap locals: org.springframework.data.mapping.PersistentEntity java.lang.String
      StackMap stack:
         3: aload 3 /* name */
            ifnonnull 4
            aconst_null
            goto 5
      StackMap locals:
      StackMap stack:
         4: aload 2 /* entity */
            aload 3 /* name */
            invokeinterface org.springframework.data.mapping.PersistentEntity.getPersistentProperty:(Ljava/lang/String;)Lorg/springframework/data/mapping/PersistentProperty;
      StackMap locals:
      StackMap stack: org.springframework.data.mapping.PersistentProperty
         5: astore 4 /* referencedProperty */
        start local 4 // org.springframework.data.mapping.PersistentProperty referencedProperty
         6: .line 301
            aload 1 /* property */
            ifnull 7
            aload 1 /* property */
            aload 4 /* referencedProperty */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 7
            iconst_1
            ireturn
      StackMap locals: org.springframework.data.mapping.PersistentProperty
      StackMap stack:
         7: iconst_0
            ireturn
        end local 4 // org.springframework.data.mapping.PersistentProperty referencedProperty
        end local 3 // java.lang.String name
        end local 2 // org.springframework.data.mapping.PersistentEntity entity
        end local 1 // org.springframework.data.mapping.PersistentProperty property
        end local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    8     0                this  Lorg/springframework/data/mapping/PreferredConstructor$Parameter<TT;TP;>;
            0    8     1            property  Lorg/springframework/data/mapping/PersistentProperty<*>;
            1    8     2              entity  Lorg/springframework/data/mapping/PersistentEntity<TT;TP;>;
            2    8     3                name  Ljava/lang/String;
            6    8     4  referencedProperty  TP;
    Signature: (Lorg/springframework/data/mapping/PersistentProperty<*>;)Z
    MethodParameters:
          Name  Flags
      property  

  private boolean isEnclosingClassParameter();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
         0: .line 305
            aload 0 /* this */
            getfield org.springframework.data.mapping.PreferredConstructor$Parameter.enclosingClassCache:Lorg/springframework/data/util/Lazy;
            invokevirtual org.springframework.data.util.Lazy.get:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ireturn
        end local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/data/mapping/PreferredConstructor$Parameter<TT;TP;>;

  private static java.lang.Boolean lambda$0(org.springframework.data.mapping.PersistentEntity, org.springframework.data.util.TypeInformation);
    descriptor: (Lorg/springframework/data/mapping/PersistentEntity;Lorg/springframework/data/util/TypeInformation;)Ljava/lang/Boolean;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=3, args_size=2
         0: .line 223
            aload 0
            ifnonnull 2
         1: .line 224
            new java.lang.IllegalStateException
            dup
            invokespecial java.lang.IllegalStateException.<init>:()V
            athrow
         2: .line 227
      StackMap locals:
      StackMap stack:
            aload 0
            invokeinterface org.springframework.data.mapping.PersistentEntity.getType:()Ljava/lang/Class;
            astore 2 /* owningType */
        start local 2 // java.lang.Class owningType
         3: .line 228
            aload 2 /* owningType */
            invokevirtual java.lang.Class.isMemberClass:()Z
            ifeq 4
            aload 1
            invokeinterface org.springframework.data.util.TypeInformation.getType:()Ljava/lang/Class;
            aload 2 /* owningType */
            invokevirtual java.lang.Class.getEnclosingClass:()Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 4
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
      StackMap locals: java.lang.Class
      StackMap stack:
         4: iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
        end local 2 // java.lang.Class owningType
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            3    5     2  owningType  Ljava/lang/Class<TT;>;

  private java.lang.Boolean lambda$1();
    descriptor: ()Ljava/lang/Boolean;
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
         0: .line 231
            aload 0 /* this */
            invokevirtual org.springframework.data.mapping.PreferredConstructor$Parameter.getSpelExpression:()Ljava/lang/String;
            invokestatic org.springframework.util.StringUtils.hasText:(Ljava/lang/String;)Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
        end local 0 // org.springframework.data.mapping.PreferredConstructor$Parameter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/data/mapping/PreferredConstructor$Parameter<TT;TP;>;

  private static boolean lambda$2(java.lang.annotation.Annotation);
    descriptor: (Ljava/lang/annotation/Annotation;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.annotation.Annotation it
         0: .line 237
            aload 0 /* it */
            invokeinterface java.lang.annotation.Annotation.annotationType:()Ljava/lang/Class;
            ldc Lorg/springframework/beans/factory/annotation/Value;
            if_acmpne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: ireturn
        end local 0 // java.lang.annotation.Annotation it
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0    it  Ljava/lang/annotation/Annotation;

  private static java.lang.String lambda$3(java.lang.annotation.Annotation);
    descriptor: (Ljava/lang/annotation/Annotation;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.annotation.Annotation it
         0: .line 238
            aload 0 /* it */
            checkcast org.springframework.beans.factory.annotation.Value
            invokeinterface org.springframework.beans.factory.annotation.Value.value:()Ljava/lang/String;
            areturn
        end local 0 // java.lang.annotation.Annotation it
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    it  Ljava/lang/annotation/Annotation;
}
Signature: <T:Ljava/lang/Object;P::Lorg/springframework/data/mapping/PersistentProperty<TP;>;>Ljava/lang/Object;
SourceFile: "PreferredConstructor.java"
NestHost: org.springframework.data.mapping.PreferredConstructor
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public Parameter = org.springframework.data.mapping.PreferredConstructor$Parameter of org.springframework.data.mapping.PreferredConstructor