class org.springframework.boot.context.properties.migrator.PropertyMigration
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.springframework.boot.context.properties.migrator.PropertyMigration
  super_class: java.lang.Object
{
  public static final java.util.Comparator<org.springframework.boot.context.properties.migrator.PropertyMigration> COMPARATOR;
    descriptor: Ljava/util/Comparator;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Comparator<Lorg/springframework/boot/context/properties/migrator/PropertyMigration;>;

  private final org.springframework.boot.context.properties.source.ConfigurationProperty property;
    descriptor: Lorg/springframework/boot/context/properties/source/ConfigurationProperty;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty metadata;
    descriptor: Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty replacementMetadata;
    descriptor: Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean compatibleType;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 38
            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/boot/context/properties/migrator/PropertyMigration.lambda$0(Lorg/springframework/boot/context/properties/migrator/PropertyMigration;)Ljava/lang/String; (6)
                  (Lorg/springframework/boot/context/properties/migrator/PropertyMigration;)Ljava/lang/String;
            invokestatic java.util.Comparator.comparing:(Ljava/util/function/Function;)Ljava/util/Comparator;
         1: .line 37
            putstatic org.springframework.boot.context.properties.migrator.PropertyMigration.COMPARATOR:Ljava/util/Comparator;
         2: .line 38
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(org.springframework.boot.context.properties.source.ConfigurationProperty, org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty, org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty);
    descriptor: (Lorg/springframework/boot/context/properties/source/ConfigurationProperty;Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.springframework.boot.context.properties.migrator.PropertyMigration this
        start local 1 // org.springframework.boot.context.properties.source.ConfigurationProperty property
        start local 2 // org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty metadata
        start local 3 // org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty replacementMetadata
         0: .line 50
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 52
            aload 0 /* this */
            aload 1 /* property */
            putfield org.springframework.boot.context.properties.migrator.PropertyMigration.property:Lorg/springframework/boot/context/properties/source/ConfigurationProperty;
         2: .line 53
            aload 0 /* this */
            aload 1 /* property */
            invokestatic org.springframework.boot.context.properties.migrator.PropertyMigration.determineLineNumber:(Lorg/springframework/boot/context/properties/source/ConfigurationProperty;)Ljava/lang/Integer;
            putfield org.springframework.boot.context.properties.migrator.PropertyMigration.lineNumber:Ljava/lang/Integer;
         3: .line 54
            aload 0 /* this */
            aload 2 /* metadata */
            putfield org.springframework.boot.context.properties.migrator.PropertyMigration.metadata:Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;
         4: .line 55
            aload 0 /* this */
            aload 3 /* replacementMetadata */
            putfield org.springframework.boot.context.properties.migrator.PropertyMigration.replacementMetadata:Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;
         5: .line 56
            aload 0 /* this */
            aload 2 /* metadata */
            aload 3 /* replacementMetadata */
            invokestatic org.springframework.boot.context.properties.migrator.PropertyMigration.determineCompatibleType:(Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;)Z
            putfield org.springframework.boot.context.properties.migrator.PropertyMigration.compatibleType:Z
         6: .line 57
            return
        end local 3 // org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty replacementMetadata
        end local 2 // org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty metadata
        end local 1 // org.springframework.boot.context.properties.source.ConfigurationProperty property
        end local 0 // org.springframework.boot.context.properties.migrator.PropertyMigration this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    7     0                 this  Lorg/springframework/boot/context/properties/migrator/PropertyMigration;
            0    7     1             property  Lorg/springframework/boot/context/properties/source/ConfigurationProperty;
            0    7     2             metadata  Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;
            0    7     3  replacementMetadata  Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;
    MethodParameters:
                     Name  Flags
      property             
      metadata             
      replacementMetadata  

  private static java.lang.Integer determineLineNumber(org.springframework.boot.context.properties.source.ConfigurationProperty);
    descriptor: (Lorg/springframework/boot/context/properties/source/ConfigurationProperty;)Ljava/lang/Integer;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.springframework.boot.context.properties.source.ConfigurationProperty property
         0: .line 60
            aload 0 /* property */
            invokevirtual org.springframework.boot.context.properties.source.ConfigurationProperty.getOrigin:()Lorg/springframework/boot/origin/Origin;
            astore 1 /* origin */
        start local 1 // org.springframework.boot.origin.Origin origin
         1: .line 61
            aload 1 /* origin */
            instanceof org.springframework.boot.origin.TextResourceOrigin
            ifeq 5
         2: .line 62
            aload 1 /* origin */
            checkcast org.springframework.boot.origin.TextResourceOrigin
            astore 2 /* textOrigin */
        start local 2 // org.springframework.boot.origin.TextResourceOrigin textOrigin
         3: .line 63
            aload 2 /* textOrigin */
            invokevirtual org.springframework.boot.origin.TextResourceOrigin.getLocation:()Lorg/springframework/boot/origin/TextResourceOrigin$Location;
            ifnull 5
         4: .line 64
            aload 2 /* textOrigin */
            invokevirtual org.springframework.boot.origin.TextResourceOrigin.getLocation:()Lorg/springframework/boot/origin/TextResourceOrigin$Location;
            invokevirtual org.springframework.boot.origin.TextResourceOrigin$Location.getLine:()I
            iconst_1
            iadd
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            areturn
        end local 2 // org.springframework.boot.origin.TextResourceOrigin textOrigin
         5: .line 67
      StackMap locals: org.springframework.boot.origin.Origin
      StackMap stack:
            aconst_null
            areturn
        end local 1 // org.springframework.boot.origin.Origin origin
        end local 0 // org.springframework.boot.context.properties.source.ConfigurationProperty property
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0    property  Lorg/springframework/boot/context/properties/source/ConfigurationProperty;
            1    6     1      origin  Lorg/springframework/boot/origin/Origin;
            3    5     2  textOrigin  Lorg/springframework/boot/origin/TextResourceOrigin;
    MethodParameters:
          Name  Flags
      property  

  private static boolean determineCompatibleType(org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty, org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty);
    descriptor: (Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty metadata
        start local 1 // org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty replacementMetadata
         0: .line 72
            aload 0 /* metadata */
            invokevirtual org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty.getType:()Ljava/lang/String;
            astore 2 /* currentType */
        start local 2 // java.lang.String currentType
         1: .line 73
            aload 1 /* replacementMetadata */
            invokestatic org.springframework.boot.context.properties.migrator.PropertyMigration.determineReplacementType:(Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;)Ljava/lang/String;
            astore 3 /* replacementType */
        start local 3 // java.lang.String replacementType
         2: .line 74
            aload 3 /* replacementType */
            ifnull 3
            aload 2 /* currentType */
            ifnonnull 4
         3: .line 75
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            iconst_0
            ireturn
         4: .line 77
      StackMap locals:
      StackMap stack:
            aload 3 /* replacementType */
            aload 2 /* currentType */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 78
            iconst_1
            ireturn
         6: .line 80
      StackMap locals:
      StackMap stack:
            aload 3 /* replacementType */
            ldc Ljava/time/Duration;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 9
         7: .line 81
            aload 2 /* currentType */
            ldc Ljava/lang/Long;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 8
            aload 2 /* currentType */
            ldc Ljava/lang/Integer;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 9
         8: .line 82
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         9: .line 84
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 3 // java.lang.String replacementType
        end local 2 // java.lang.String currentType
        end local 1 // org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty replacementMetadata
        end local 0 // org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty metadata
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   10     0             metadata  Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;
            0   10     1  replacementMetadata  Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;
            1   10     2          currentType  Ljava/lang/String;
            2   10     3      replacementType  Ljava/lang/String;
    MethodParameters:
                     Name  Flags
      metadata             
      replacementMetadata  

  private static java.lang.String determineReplacementType(org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty);
    descriptor: (Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty replacementMetadata
         0: .line 88
            aload 0 /* replacementMetadata */
            ifnull 1
            aload 0 /* replacementMetadata */
            invokevirtual org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty.getType:()Ljava/lang/String;
            ifnonnull 2
         1: .line 89
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 91
      StackMap locals:
      StackMap stack:
            aload 0 /* replacementMetadata */
            invokevirtual org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty.getType:()Ljava/lang/String;
            astore 1 /* candidate */
        start local 1 // java.lang.String candidate
         3: .line 92
            aload 1 /* candidate */
            ldc Ljava/util/Map;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 7
         4: .line 93
            aload 1 /* candidate */
            bipush 44
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 2 /* lastComma */
        start local 2 // int lastComma
         5: .line 94
            iload 2 /* lastComma */
            iconst_m1
            if_icmpeq 7
         6: .line 95
            aload 1 /* candidate */
            iload 2 /* lastComma */
            iconst_1
            iadd
            aload 1 /* candidate */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            areturn
        end local 2 // int lastComma
         7: .line 98
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* candidate */
            areturn
        end local 1 // java.lang.String candidate
        end local 0 // org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty replacementMetadata
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    8     0  replacementMetadata  Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;
            3    8     1            candidate  Ljava/lang/String;
            5    7     2            lastComma  I
    MethodParameters:
                     Name  Flags
      replacementMetadata  

  org.springframework.boot.context.properties.source.ConfigurationProperty getProperty();
    descriptor: ()Lorg/springframework/boot/context/properties/source/ConfigurationProperty;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.boot.context.properties.migrator.PropertyMigration this
         0: .line 102
            aload 0 /* this */
            getfield org.springframework.boot.context.properties.migrator.PropertyMigration.property:Lorg/springframework/boot/context/properties/source/ConfigurationProperty;
            areturn
        end local 0 // org.springframework.boot.context.properties.migrator.PropertyMigration this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/boot/context/properties/migrator/PropertyMigration;

  java.lang.Integer getLineNumber();
    descriptor: ()Ljava/lang/Integer;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.boot.context.properties.migrator.PropertyMigration this
         0: .line 106
            aload 0 /* this */
            getfield org.springframework.boot.context.properties.migrator.PropertyMigration.lineNumber:Ljava/lang/Integer;
            areturn
        end local 0 // org.springframework.boot.context.properties.migrator.PropertyMigration this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/boot/context/properties/migrator/PropertyMigration;

  org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty getMetadata();
    descriptor: ()Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.boot.context.properties.migrator.PropertyMigration this
         0: .line 110
            aload 0 /* this */
            getfield org.springframework.boot.context.properties.migrator.PropertyMigration.metadata:Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;
            areturn
        end local 0 // org.springframework.boot.context.properties.migrator.PropertyMigration this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/boot/context/properties/migrator/PropertyMigration;

  boolean isCompatibleType();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.boot.context.properties.migrator.PropertyMigration this
         0: .line 114
            aload 0 /* this */
            getfield org.springframework.boot.context.properties.migrator.PropertyMigration.compatibleType:Z
            ireturn
        end local 0 // org.springframework.boot.context.properties.migrator.PropertyMigration this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/boot/context/properties/migrator/PropertyMigration;

  java.lang.String determineReason();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.springframework.boot.context.properties.migrator.PropertyMigration this
         0: .line 118
            aload 0 /* this */
            getfield org.springframework.boot.context.properties.migrator.PropertyMigration.compatibleType:Z
            ifeq 2
         1: .line 119
            new java.lang.StringBuilder
            dup
            ldc "Replacement: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.boot.context.properties.migrator.PropertyMigration.metadata:Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;
            invokevirtual org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty.getDeprecation:()Lorg/springframework/boot/configurationmetadata/Deprecation;
            invokevirtual org.springframework.boot.configurationmetadata.Deprecation.getReplacement:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
         2: .line 121
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.boot.context.properties.migrator.PropertyMigration.metadata:Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;
            invokevirtual org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty.getDeprecation:()Lorg/springframework/boot/configurationmetadata/Deprecation;
            astore 1 /* deprecation */
        start local 1 // org.springframework.boot.configurationmetadata.Deprecation deprecation
         3: .line 122
            aload 1 /* deprecation */
            invokevirtual org.springframework.boot.configurationmetadata.Deprecation.getShortReason:()Ljava/lang/String;
            invokestatic org.springframework.util.StringUtils.hasText:(Ljava/lang/String;)Z
            ifeq 5
         4: .line 123
            new java.lang.StringBuilder
            dup
            ldc "Reason: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* deprecation */
            invokevirtual org.springframework.boot.configurationmetadata.Deprecation.getShortReason:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
         5: .line 125
      StackMap locals: org.springframework.boot.configurationmetadata.Deprecation
      StackMap stack:
            aload 1 /* deprecation */
            invokevirtual org.springframework.boot.configurationmetadata.Deprecation.getReplacement:()Ljava/lang/String;
            invokestatic org.springframework.util.StringUtils.hasText:(Ljava/lang/String;)Z
            ifeq 11
         6: .line 126
            aload 0 /* this */
            getfield org.springframework.boot.context.properties.migrator.PropertyMigration.replacementMetadata:Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;
            ifnull 10
         7: .line 127
            ldc "Reason: Replacement key '%s' uses an incompatible target type"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         8: .line 128
            aload 1 /* deprecation */
            invokevirtual org.springframework.boot.configurationmetadata.Deprecation.getReplacement:()Ljava/lang/String;
            aastore
         9: .line 127
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            areturn
        10: .line 130
      StackMap locals:
      StackMap stack:
            ldc "Reason: No metadata found for replacement key '%s'"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* deprecation */
            invokevirtual org.springframework.boot.configurationmetadata.Deprecation.getReplacement:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            areturn
        11: .line 132
      StackMap locals:
      StackMap stack:
            ldc "Reason: none"
            areturn
        end local 1 // org.springframework.boot.configurationmetadata.Deprecation deprecation
        end local 0 // org.springframework.boot.context.properties.migrator.PropertyMigration this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0         this  Lorg/springframework/boot/context/properties/migrator/PropertyMigration;
            3   12     1  deprecation  Lorg/springframework/boot/configurationmetadata/Deprecation;

  private static java.lang.String lambda$0(org.springframework.boot.context.properties.migrator.PropertyMigration);
    descriptor: (Lorg/springframework/boot/context/properties/migrator/PropertyMigration;)Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.boot.context.properties.migrator.PropertyMigration property
         0: .line 38
            aload 0 /* property */
            invokevirtual org.springframework.boot.context.properties.migrator.PropertyMigration.getMetadata:()Lorg/springframework/boot/configurationmetadata/ConfigurationMetadataProperty;
            invokevirtual org.springframework.boot.configurationmetadata.ConfigurationMetadataProperty.getId:()Ljava/lang/String;
            areturn
        end local 0 // org.springframework.boot.context.properties.migrator.PropertyMigration property
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  property  Lorg/springframework/boot/context/properties/migrator/PropertyMigration;
}
SourceFile: "PropertyMigration.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public final Location = org.springframework.boot.origin.TextResourceOrigin$Location of org.springframework.boot.origin.TextResourceOrigin