public class org.springframework.util.PropertyPlaceholderHelper
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.util.PropertyPlaceholderHelper
  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 static final java.util.Map<java.lang.String, java.lang.String> wellKnownSimplePrefixes;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;

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

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

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

  private final java.lang.String valueSeparator;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 42
            ldc Lorg/springframework/util/PropertyPlaceholderHelper;
            invokestatic org.apache.commons.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
            putstatic org.springframework.util.PropertyPlaceholderHelper.logger:Lorg/apache/commons/logging/Log;
         1: .line 44
            new java.util.HashMap
            dup
            iconst_4
            invokespecial java.util.HashMap.<init>:(I)V
            putstatic org.springframework.util.PropertyPlaceholderHelper.wellKnownSimplePrefixes:Ljava/util/Map;
         2: .line 47
            getstatic org.springframework.util.PropertyPlaceholderHelper.wellKnownSimplePrefixes:Ljava/util/Map;
            ldc "}"
            ldc "{"
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 48
            getstatic org.springframework.util.PropertyPlaceholderHelper.wellKnownSimplePrefixes:Ljava/util/Map;
            ldc "]"
            ldc "["
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 49
            getstatic org.springframework.util.PropertyPlaceholderHelper.wellKnownSimplePrefixes:Ljava/util/Map;
            ldc ")"
            ldc "("
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 50
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.springframework.util.PropertyPlaceholderHelper this
        start local 1 // java.lang.String placeholderPrefix
        start local 2 // java.lang.String placeholderSuffix
         0: .line 72
            aload 0 /* this */
            aload 1 /* placeholderPrefix */
            aload 2 /* placeholderSuffix */
            aconst_null
            iconst_1
            invokespecial org.springframework.util.PropertyPlaceholderHelper.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
         1: .line 73
            return
        end local 2 // java.lang.String placeholderSuffix
        end local 1 // java.lang.String placeholderPrefix
        end local 0 // org.springframework.util.PropertyPlaceholderHelper this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    2     0               this  Lorg/springframework/util/PropertyPlaceholderHelper;
            0    2     1  placeholderPrefix  Ljava/lang/String;
            0    2     2  placeholderSuffix  Ljava/lang/String;
    MethodParameters:
                   Name  Flags
      placeholderPrefix  
      placeholderSuffix  

  public void <init>(java.lang.String, java.lang.String, java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=6, args_size=5
        start local 0 // org.springframework.util.PropertyPlaceholderHelper this
        start local 1 // java.lang.String placeholderPrefix
        start local 2 // java.lang.String placeholderSuffix
        start local 3 // java.lang.String valueSeparator
        start local 4 // boolean ignoreUnresolvablePlaceholders
         0: .line 84
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 87
            aload 1 /* placeholderPrefix */
            ldc "'placeholderPrefix' must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         2: .line 88
            aload 2 /* placeholderSuffix */
            ldc "'placeholderSuffix' must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         3: .line 89
            aload 0 /* this */
            aload 1 /* placeholderPrefix */
            putfield org.springframework.util.PropertyPlaceholderHelper.placeholderPrefix:Ljava/lang/String;
         4: .line 90
            aload 0 /* this */
            aload 2 /* placeholderSuffix */
            putfield org.springframework.util.PropertyPlaceholderHelper.placeholderSuffix:Ljava/lang/String;
         5: .line 91
            getstatic org.springframework.util.PropertyPlaceholderHelper.wellKnownSimplePrefixes:Ljava/util/Map;
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.placeholderSuffix:Ljava/lang/String;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* simplePrefixForSuffix */
        start local 5 // java.lang.String simplePrefixForSuffix
         6: .line 92
            aload 5 /* simplePrefixForSuffix */
            ifnull 9
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.placeholderPrefix:Ljava/lang/String;
            aload 5 /* simplePrefixForSuffix */
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 9
         7: .line 93
            aload 0 /* this */
            aload 5 /* simplePrefixForSuffix */
            putfield org.springframework.util.PropertyPlaceholderHelper.simplePrefix:Ljava/lang/String;
         8: .line 94
            goto 10
         9: .line 96
      StackMap locals: org.springframework.util.PropertyPlaceholderHelper java.lang.String java.lang.String java.lang.String int java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.placeholderPrefix:Ljava/lang/String;
            putfield org.springframework.util.PropertyPlaceholderHelper.simplePrefix:Ljava/lang/String;
        10: .line 98
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* valueSeparator */
            putfield org.springframework.util.PropertyPlaceholderHelper.valueSeparator:Ljava/lang/String;
        11: .line 99
            aload 0 /* this */
            iload 4 /* ignoreUnresolvablePlaceholders */
            putfield org.springframework.util.PropertyPlaceholderHelper.ignoreUnresolvablePlaceholders:Z
        12: .line 100
            return
        end local 5 // java.lang.String simplePrefixForSuffix
        end local 4 // boolean ignoreUnresolvablePlaceholders
        end local 3 // java.lang.String valueSeparator
        end local 2 // java.lang.String placeholderSuffix
        end local 1 // java.lang.String placeholderPrefix
        end local 0 // org.springframework.util.PropertyPlaceholderHelper this
      LocalVariableTable:
        Start  End  Slot                            Name  Signature
            0   13     0                            this  Lorg/springframework/util/PropertyPlaceholderHelper;
            0   13     1               placeholderPrefix  Ljava/lang/String;
            0   13     2               placeholderSuffix  Ljava/lang/String;
            0   13     3                  valueSeparator  Ljava/lang/String;
            0   13     4  ignoreUnresolvablePlaceholders  Z
            6   13     5           simplePrefixForSuffix  Ljava/lang/String;
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        org.springframework.lang.Nullable()
      3:
    MethodParameters:
                                Name  Flags
      placeholderPrefix               
      placeholderSuffix               
      valueSeparator                  
      ignoreUnresolvablePlaceholders  

  public java.lang.String replacePlaceholders(java.lang.String, java.util.Properties);
    descriptor: (Ljava/lang/String;Ljava/util/Properties;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.springframework.util.PropertyPlaceholderHelper this
        start local 1 // java.lang.String value
        start local 2 // java.util.Properties properties
         0: .line 111
            aload 2 /* properties */
            ldc "'properties' must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 112
            aload 0 /* this */
            aload 1 /* value */
            aload 2 /* properties */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic resolvePlaceholder(Ljava/util/Properties;)Lorg/springframework/util/PropertyPlaceholderHelper$PlaceholderResolver;
              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/String;)Ljava/lang/String;
                  java/util/Properties.getProperty(Ljava/lang/String;)Ljava/lang/String; (5)
                  (Ljava/lang/String;)Ljava/lang/String;
            invokevirtual org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders:(Ljava/lang/String;Lorg/springframework/util/PropertyPlaceholderHelper$PlaceholderResolver;)Ljava/lang/String;
            areturn
        end local 2 // java.util.Properties properties
        end local 1 // java.lang.String value
        end local 0 // org.springframework.util.PropertyPlaceholderHelper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/springframework/util/PropertyPlaceholderHelper;
            0    2     1       value  Ljava/lang/String;
            0    2     2  properties  Ljava/util/Properties;
    MethodParameters:
            Name  Flags
      value       
      properties  final

  public java.lang.String replacePlaceholders(java.lang.String, org.springframework.util.PropertyPlaceholderHelper$PlaceholderResolver);
    descriptor: (Ljava/lang/String;Lorg/springframework/util/PropertyPlaceholderHelper$PlaceholderResolver;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.springframework.util.PropertyPlaceholderHelper this
        start local 1 // java.lang.String value
        start local 2 // org.springframework.util.PropertyPlaceholderHelper$PlaceholderResolver placeholderResolver
         0: .line 123
            aload 1 /* value */
            ldc "'value' must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         1: .line 124
            aload 0 /* this */
            aload 1 /* value */
            aload 2 /* placeholderResolver */
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            invokevirtual org.springframework.util.PropertyPlaceholderHelper.parseStringValue:(Ljava/lang/String;Lorg/springframework/util/PropertyPlaceholderHelper$PlaceholderResolver;Ljava/util/Set;)Ljava/lang/String;
            areturn
        end local 2 // org.springframework.util.PropertyPlaceholderHelper$PlaceholderResolver placeholderResolver
        end local 1 // java.lang.String value
        end local 0 // org.springframework.util.PropertyPlaceholderHelper this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    2     0                 this  Lorg/springframework/util/PropertyPlaceholderHelper;
            0    2     1                value  Ljava/lang/String;
            0    2     2  placeholderResolver  Lorg/springframework/util/PropertyPlaceholderHelper$PlaceholderResolver;
    MethodParameters:
                     Name  Flags
      value                
      placeholderResolver  

  protected java.lang.String parseStringValue(java.lang.String, org.springframework.util.PropertyPlaceholderHelper$PlaceholderResolver, java.util.Set<java.lang.String>);
    descriptor: (Ljava/lang/String;Lorg/springframework/util/PropertyPlaceholderHelper$PlaceholderResolver;Ljava/util/Set;)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=13, args_size=4
        start local 0 // org.springframework.util.PropertyPlaceholderHelper this
        start local 1 // java.lang.String value
        start local 2 // org.springframework.util.PropertyPlaceholderHelper$PlaceholderResolver placeholderResolver
        start local 3 // java.util.Set visitedPlaceholders
         0: .line 130
            new java.lang.StringBuilder
            dup
            aload 1 /* value */
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 4 /* result */
        start local 4 // java.lang.StringBuilder result
         1: .line 132
            aload 1 /* value */
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.placeholderPrefix:Ljava/lang/String;
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 5 /* startIndex */
        start local 5 // int startIndex
         2: .line 133
            goto 37
         3: .line 134
      StackMap locals: java.lang.StringBuilder int
      StackMap stack:
            aload 0 /* this */
            aload 4 /* result */
            iload 5 /* startIndex */
            invokevirtual org.springframework.util.PropertyPlaceholderHelper.findPlaceholderEndIndex:(Ljava/lang/CharSequence;I)I
            istore 6 /* endIndex */
        start local 6 // int endIndex
         4: .line 135
            iload 6 /* endIndex */
            iconst_m1
            if_icmpeq 36
         5: .line 136
            aload 4 /* result */
            iload 5 /* startIndex */
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.placeholderPrefix:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iadd
            iload 6 /* endIndex */
            invokevirtual java.lang.StringBuilder.substring:(II)Ljava/lang/String;
            astore 7 /* placeholder */
        start local 7 // java.lang.String placeholder
         6: .line 137
            aload 7 /* placeholder */
            astore 8 /* originalPlaceholder */
        start local 8 // java.lang.String originalPlaceholder
         7: .line 138
            aload 3 /* visitedPlaceholders */
            aload 8 /* originalPlaceholder */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            ifne 11
         8: .line 139
            new java.lang.IllegalArgumentException
            dup
         9: .line 140
            new java.lang.StringBuilder
            dup
            ldc "Circular placeholder reference '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 8 /* originalPlaceholder */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "' in property definitions"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 139
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 143
      StackMap locals: int java.lang.String java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 7 /* placeholder */
            aload 2 /* placeholderResolver */
            aload 3 /* visitedPlaceholders */
            invokevirtual org.springframework.util.PropertyPlaceholderHelper.parseStringValue:(Ljava/lang/String;Lorg/springframework/util/PropertyPlaceholderHelper$PlaceholderResolver;Ljava/util/Set;)Ljava/lang/String;
            astore 7 /* placeholder */
        12: .line 145
            aload 2 /* placeholderResolver */
            aload 7 /* placeholder */
            invokeinterface org.springframework.util.PropertyPlaceholderHelper$PlaceholderResolver.resolvePlaceholder:(Ljava/lang/String;)Ljava/lang/String;
            astore 9 /* propVal */
        start local 9 // java.lang.String propVal
        13: .line 146
            aload 9 /* propVal */
            ifnonnull 21
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.valueSeparator:Ljava/lang/String;
            ifnull 21
        14: .line 147
            aload 7 /* placeholder */
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.valueSeparator:Ljava/lang/String;
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 10 /* separatorIndex */
        start local 10 // int separatorIndex
        15: .line 148
            iload 10 /* separatorIndex */
            iconst_m1
            if_icmpeq 21
        16: .line 149
            aload 7 /* placeholder */
            iconst_0
            iload 10 /* separatorIndex */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 11 /* actualPlaceholder */
        start local 11 // java.lang.String actualPlaceholder
        17: .line 150
            aload 7 /* placeholder */
            iload 10 /* separatorIndex */
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.valueSeparator:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 12 /* defaultValue */
        start local 12 // java.lang.String defaultValue
        18: .line 151
            aload 2 /* placeholderResolver */
            aload 11 /* actualPlaceholder */
            invokeinterface org.springframework.util.PropertyPlaceholderHelper$PlaceholderResolver.resolvePlaceholder:(Ljava/lang/String;)Ljava/lang/String;
            astore 9 /* propVal */
        19: .line 152
            aload 9 /* propVal */
            ifnonnull 21
        20: .line 153
            aload 12 /* defaultValue */
            astore 9 /* propVal */
        end local 12 // java.lang.String defaultValue
        end local 11 // java.lang.String actualPlaceholder
        end local 10 // int separatorIndex
        21: .line 157
      StackMap locals: java.lang.String
      StackMap stack:
            aload 9 /* propVal */
            ifnull 28
        22: .line 160
            aload 0 /* this */
            aload 9 /* propVal */
            aload 2 /* placeholderResolver */
            aload 3 /* visitedPlaceholders */
            invokevirtual org.springframework.util.PropertyPlaceholderHelper.parseStringValue:(Ljava/lang/String;Lorg/springframework/util/PropertyPlaceholderHelper$PlaceholderResolver;Ljava/util/Set;)Ljava/lang/String;
            astore 9 /* propVal */
        23: .line 161
            aload 4 /* result */
            iload 5 /* startIndex */
            iload 6 /* endIndex */
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.placeholderSuffix:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iadd
            aload 9 /* propVal */
            invokevirtual java.lang.StringBuilder.replace:(IILjava/lang/String;)Ljava/lang/StringBuilder;
            pop
        24: .line 162
            getstatic org.springframework.util.PropertyPlaceholderHelper.logger:Lorg/apache/commons/logging/Log;
            invokeinterface org.apache.commons.logging.Log.isTraceEnabled:()Z
            ifeq 26
        25: .line 163
            getstatic org.springframework.util.PropertyPlaceholderHelper.logger:Lorg/apache/commons/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Resolved placeholder '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 7 /* placeholder */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "'"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.commons.logging.Log.trace:(Ljava/lang/Object;)V
        26: .line 165
      StackMap locals:
      StackMap stack:
            aload 4 /* result */
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.placeholderPrefix:Ljava/lang/String;
            iload 5 /* startIndex */
            aload 9 /* propVal */
            invokevirtual java.lang.String.length:()I
            iadd
            invokevirtual java.lang.StringBuilder.indexOf:(Ljava/lang/String;I)I
            istore 5 /* startIndex */
        27: .line 166
            goto 34
        28: .line 167
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.ignoreUnresolvablePlaceholders:Z
            ifeq 31
        29: .line 169
            aload 4 /* result */
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.placeholderPrefix:Ljava/lang/String;
            iload 6 /* endIndex */
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.placeholderSuffix:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iadd
            invokevirtual java.lang.StringBuilder.indexOf:(Ljava/lang/String;I)I
            istore 5 /* startIndex */
        30: .line 170
            goto 34
        31: .line 172
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Could not resolve placeholder '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        32: .line 173
            aload 7 /* placeholder */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "'"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " in value \""
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* value */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\""
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        33: .line 172
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        34: .line 175
      StackMap locals:
      StackMap stack:
            aload 3 /* visitedPlaceholders */
            aload 8 /* originalPlaceholder */
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
        end local 9 // java.lang.String propVal
        end local 8 // java.lang.String originalPlaceholder
        end local 7 // java.lang.String placeholder
        35: .line 176
            goto 37
        36: .line 178
      StackMap locals:
      StackMap stack:
            iconst_m1
            istore 5 /* startIndex */
        end local 6 // int endIndex
        37: .line 133
      StackMap locals:
      StackMap stack:
            iload 5 /* startIndex */
            iconst_m1
            if_icmpne 3
        38: .line 182
            aload 4 /* result */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 5 // int startIndex
        end local 4 // java.lang.StringBuilder result
        end local 3 // java.util.Set visitedPlaceholders
        end local 2 // org.springframework.util.PropertyPlaceholderHelper$PlaceholderResolver placeholderResolver
        end local 1 // java.lang.String value
        end local 0 // org.springframework.util.PropertyPlaceholderHelper this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   39     0                 this  Lorg/springframework/util/PropertyPlaceholderHelper;
            0   39     1                value  Ljava/lang/String;
            0   39     2  placeholderResolver  Lorg/springframework/util/PropertyPlaceholderHelper$PlaceholderResolver;
            0   39     3  visitedPlaceholders  Ljava/util/Set<Ljava/lang/String;>;
            1   39     4               result  Ljava/lang/StringBuilder;
            2   39     5           startIndex  I
            4   37     6             endIndex  I
            6   35     7          placeholder  Ljava/lang/String;
            7   35     8  originalPlaceholder  Ljava/lang/String;
           13   35     9              propVal  Ljava/lang/String;
           15   21    10       separatorIndex  I
           17   21    11    actualPlaceholder  Ljava/lang/String;
           18   21    12         defaultValue  Ljava/lang/String;
    Signature: (Ljava/lang/String;Lorg/springframework/util/PropertyPlaceholderHelper$PlaceholderResolver;Ljava/util/Set<Ljava/lang/String;>;)Ljava/lang/String;
    MethodParameters:
                     Name  Flags
      value                
      placeholderResolver  
      visitedPlaceholders  

  private int findPlaceholderEndIndex(java.lang.CharSequence, int);
    descriptor: (Ljava/lang/CharSequence;I)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.springframework.util.PropertyPlaceholderHelper this
        start local 1 // java.lang.CharSequence buf
        start local 2 // int startIndex
         0: .line 186
            iload 2 /* startIndex */
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.placeholderPrefix:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iadd
            istore 3 /* index */
        start local 3 // int index
         1: .line 187
            iconst_0
            istore 4 /* withinNestedPlaceholder */
        start local 4 // int withinNestedPlaceholder
         2: .line 188
            goto 14
         3: .line 189
      StackMap locals: int int
      StackMap stack:
            aload 1 /* buf */
            iload 3 /* index */
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.placeholderSuffix:Ljava/lang/String;
            invokestatic org.springframework.util.StringUtils.substringMatch:(Ljava/lang/CharSequence;ILjava/lang/CharSequence;)Z
            ifeq 9
         4: .line 190
            iload 4 /* withinNestedPlaceholder */
            ifle 8
         5: .line 191
            iinc 4 /* withinNestedPlaceholder */ -1
         6: .line 192
            iload 3 /* index */
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.placeholderSuffix:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iadd
            istore 3 /* index */
         7: .line 193
            goto 14
         8: .line 195
      StackMap locals:
      StackMap stack:
            iload 3 /* index */
            ireturn
         9: .line 198
      StackMap locals:
      StackMap stack:
            aload 1 /* buf */
            iload 3 /* index */
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.simplePrefix:Ljava/lang/String;
            invokestatic org.springframework.util.StringUtils.substringMatch:(Ljava/lang/CharSequence;ILjava/lang/CharSequence;)Z
            ifeq 13
        10: .line 199
            iinc 4 /* withinNestedPlaceholder */ 1
        11: .line 200
            iload 3 /* index */
            aload 0 /* this */
            getfield org.springframework.util.PropertyPlaceholderHelper.simplePrefix:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iadd
            istore 3 /* index */
        12: .line 201
            goto 14
        13: .line 203
      StackMap locals:
      StackMap stack:
            iinc 3 /* index */ 1
        14: .line 188
      StackMap locals:
      StackMap stack:
            iload 3 /* index */
            aload 1 /* buf */
            invokeinterface java.lang.CharSequence.length:()I
            if_icmplt 3
        15: .line 206
            iconst_m1
            ireturn
        end local 4 // int withinNestedPlaceholder
        end local 3 // int index
        end local 2 // int startIndex
        end local 1 // java.lang.CharSequence buf
        end local 0 // org.springframework.util.PropertyPlaceholderHelper this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   16     0                     this  Lorg/springframework/util/PropertyPlaceholderHelper;
            0   16     1                      buf  Ljava/lang/CharSequence;
            0   16     2               startIndex  I
            1   16     3                    index  I
            2   16     4  withinNestedPlaceholder  I
    MethodParameters:
            Name  Flags
      buf         
      startIndex  
}
SourceFile: "PropertyPlaceholderHelper.java"
NestMembers:
  org.springframework.util.PropertyPlaceholderHelper$PlaceholderResolver
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract PlaceholderResolver = org.springframework.util.PropertyPlaceholderHelper$PlaceholderResolver of org.springframework.util.PropertyPlaceholderHelper