public class org.codehaus.plexus.interpolation.StringSearchInterpolator implements org.codehaus.plexus.interpolation.Interpolator
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.codehaus.plexus.interpolation.StringSearchInterpolator
  super_class: java.lang.Object
{
  private java.util.Map<java.lang.String, java.lang.Object> existingAnswers;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;

  private java.util.List<org.codehaus.plexus.interpolation.ValueSource> valueSources;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Lorg/codehaus/plexus/interpolation/ValueSource;>;

  private java.util.List<org.codehaus.plexus.interpolation.InterpolationPostProcessor> postProcessors;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Lorg/codehaus/plexus/interpolation/InterpolationPostProcessor;>;

  private boolean cacheAnswers;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  public static final java.lang.String DEFAULT_START_EXPR;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "${"

  public static final java.lang.String DEFAULT_END_EXPR;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "}"

  private java.lang.String startExpr;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String endExpr;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String escapeString;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 30
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.codehaus.plexus.interpolation.StringSearchInterpolator.existingAnswers:Ljava/util/Map;
         2: .line 32
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.codehaus.plexus.interpolation.StringSearchInterpolator.valueSources:Ljava/util/List;
         3: .line 34
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.codehaus.plexus.interpolation.StringSearchInterpolator.postProcessors:Ljava/util/List;
         4: .line 36
            aload 0 /* this */
            iconst_0
            putfield org.codehaus.plexus.interpolation.StringSearchInterpolator.cacheAnswers:Z
         5: .line 50
            aload 0 /* this */
            ldc "${"
            putfield org.codehaus.plexus.interpolation.StringSearchInterpolator.startExpr:Ljava/lang/String;
         6: .line 51
            aload 0 /* this */
            ldc "}"
            putfield org.codehaus.plexus.interpolation.StringSearchInterpolator.endExpr:Ljava/lang/String;
         7: .line 52
            return
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;

  public void <init>(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
        start local 1 // java.lang.String startExpr
        start local 2 // java.lang.String endExpr
         0: .line 54
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 30
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.codehaus.plexus.interpolation.StringSearchInterpolator.existingAnswers:Ljava/util/Map;
         2: .line 32
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.codehaus.plexus.interpolation.StringSearchInterpolator.valueSources:Ljava/util/List;
         3: .line 34
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.codehaus.plexus.interpolation.StringSearchInterpolator.postProcessors:Ljava/util/List;
         4: .line 36
            aload 0 /* this */
            iconst_0
            putfield org.codehaus.plexus.interpolation.StringSearchInterpolator.cacheAnswers:Z
         5: .line 56
            aload 0 /* this */
            aload 1 /* startExpr */
            putfield org.codehaus.plexus.interpolation.StringSearchInterpolator.startExpr:Ljava/lang/String;
         6: .line 57
            aload 0 /* this */
            aload 2 /* endExpr */
            putfield org.codehaus.plexus.interpolation.StringSearchInterpolator.endExpr:Ljava/lang/String;
         7: .line 58
            return
        end local 2 // java.lang.String endExpr
        end local 1 // java.lang.String startExpr
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;
            0    8     1  startExpr  Ljava/lang/String;
            0    8     2    endExpr  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      startExpr  
      endExpr    

  public void addValueSource(org.codehaus.plexus.interpolation.ValueSource);
    descriptor: (Lorg/codehaus/plexus/interpolation/ValueSource;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
        start local 1 // org.codehaus.plexus.interpolation.ValueSource valueSource
         0: .line 66
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.valueSources:Ljava/util/List;
            aload 1 /* valueSource */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 67
            return
        end local 1 // org.codehaus.plexus.interpolation.ValueSource valueSource
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;
            0    2     1  valueSource  Lorg/codehaus/plexus/interpolation/ValueSource;
    MethodParameters:
             Name  Flags
      valueSource  

  public void removeValuesSource(org.codehaus.plexus.interpolation.ValueSource);
    descriptor: (Lorg/codehaus/plexus/interpolation/ValueSource;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
        start local 1 // org.codehaus.plexus.interpolation.ValueSource valueSource
         0: .line 74
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.valueSources:Ljava/util/List;
            aload 1 /* valueSource */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
         1: .line 75
            return
        end local 1 // org.codehaus.plexus.interpolation.ValueSource valueSource
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;
            0    2     1  valueSource  Lorg/codehaus/plexus/interpolation/ValueSource;
    MethodParameters:
             Name  Flags
      valueSource  

  public void addPostProcessor(org.codehaus.plexus.interpolation.InterpolationPostProcessor);
    descriptor: (Lorg/codehaus/plexus/interpolation/InterpolationPostProcessor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
        start local 1 // org.codehaus.plexus.interpolation.InterpolationPostProcessor postProcessor
         0: .line 82
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.postProcessors:Ljava/util/List;
            aload 1 /* postProcessor */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 83
            return
        end local 1 // org.codehaus.plexus.interpolation.InterpolationPostProcessor postProcessor
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;
            0    2     1  postProcessor  Lorg/codehaus/plexus/interpolation/InterpolationPostProcessor;
    MethodParameters:
               Name  Flags
      postProcessor  

  public void removePostProcessor(org.codehaus.plexus.interpolation.InterpolationPostProcessor);
    descriptor: (Lorg/codehaus/plexus/interpolation/InterpolationPostProcessor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
        start local 1 // org.codehaus.plexus.interpolation.InterpolationPostProcessor postProcessor
         0: .line 90
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.postProcessors:Ljava/util/List;
            aload 1 /* postProcessor */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
         1: .line 91
            return
        end local 1 // org.codehaus.plexus.interpolation.InterpolationPostProcessor postProcessor
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;
            0    2     1  postProcessor  Lorg/codehaus/plexus/interpolation/InterpolationPostProcessor;
    MethodParameters:
               Name  Flags
      postProcessor  

  public java.lang.String interpolate(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
        start local 1 // java.lang.String input
        start local 2 // java.lang.String thisPrefixPattern
         0: .line 96
            aload 0 /* this */
            aload 1 /* input */
            new org.codehaus.plexus.interpolation.SimpleRecursionInterceptor
            dup
            invokespecial org.codehaus.plexus.interpolation.SimpleRecursionInterceptor.<init>:()V
            invokevirtual org.codehaus.plexus.interpolation.StringSearchInterpolator.interpolate:(Ljava/lang/String;Lorg/codehaus/plexus/interpolation/RecursionInterceptor;)Ljava/lang/String;
            areturn
        end local 2 // java.lang.String thisPrefixPattern
        end local 1 // java.lang.String input
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    1     0               this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;
            0    1     1              input  Ljava/lang/String;
            0    1     2  thisPrefixPattern  Ljava/lang/String;
    Exceptions:
      throws org.codehaus.plexus.interpolation.InterpolationException
    MethodParameters:
                   Name  Flags
      input              
      thisPrefixPattern  

  public java.lang.String interpolate(java.lang.String, java.lang.String, org.codehaus.plexus.interpolation.RecursionInterceptor);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Lorg/codehaus/plexus/interpolation/RecursionInterceptor;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
        start local 1 // java.lang.String input
        start local 2 // java.lang.String thisPrefixPattern
        start local 3 // org.codehaus.plexus.interpolation.RecursionInterceptor recursionInterceptor
         0: .line 102
            aload 0 /* this */
            aload 1 /* input */
            aload 3 /* recursionInterceptor */
            invokevirtual org.codehaus.plexus.interpolation.StringSearchInterpolator.interpolate:(Ljava/lang/String;Lorg/codehaus/plexus/interpolation/RecursionInterceptor;)Ljava/lang/String;
            areturn
        end local 3 // org.codehaus.plexus.interpolation.RecursionInterceptor recursionInterceptor
        end local 2 // java.lang.String thisPrefixPattern
        end local 1 // java.lang.String input
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    1     0                  this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;
            0    1     1                 input  Ljava/lang/String;
            0    1     2     thisPrefixPattern  Ljava/lang/String;
            0    1     3  recursionInterceptor  Lorg/codehaus/plexus/interpolation/RecursionInterceptor;
    Exceptions:
      throws org.codehaus.plexus.interpolation.InterpolationException
    MethodParameters:
                      Name  Flags
      input                 
      thisPrefixPattern     
      recursionInterceptor  

  public java.lang.String interpolate(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
        start local 1 // java.lang.String input
         0: .line 108
            aload 0 /* this */
            aload 1 /* input */
            new org.codehaus.plexus.interpolation.SimpleRecursionInterceptor
            dup
            invokespecial org.codehaus.plexus.interpolation.SimpleRecursionInterceptor.<init>:()V
            invokevirtual org.codehaus.plexus.interpolation.StringSearchInterpolator.interpolate:(Ljava/lang/String;Lorg/codehaus/plexus/interpolation/RecursionInterceptor;)Ljava/lang/String;
            areturn
        end local 1 // java.lang.String input
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;
            0    1     1  input  Ljava/lang/String;
    Exceptions:
      throws org.codehaus.plexus.interpolation.InterpolationException
    MethodParameters:
       Name  Flags
      input  

  public java.lang.String interpolate(java.lang.String, org.codehaus.plexus.interpolation.RecursionInterceptor);
    descriptor: (Ljava/lang/String;Lorg/codehaus/plexus/interpolation/RecursionInterceptor;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
        start local 1 // java.lang.String input
        start local 2 // org.codehaus.plexus.interpolation.RecursionInterceptor recursionInterceptor
         0: .line 122
            aload 0 /* this */
            aload 1 /* input */
            aload 2 /* recursionInterceptor */
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            invokevirtual org.codehaus.plexus.interpolation.StringSearchInterpolator.interpolate:(Ljava/lang/String;Lorg/codehaus/plexus/interpolation/RecursionInterceptor;Ljava/util/Set;)Ljava/lang/String;
            astore 4
         1: .line 126
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.cacheAnswers:Z
            ifne 3
         2: .line 128
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.existingAnswers:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         3: .line 122
      StackMap locals: org.codehaus.plexus.interpolation.StringSearchInterpolator java.lang.String org.codehaus.plexus.interpolation.RecursionInterceptor top java.lang.String
      StackMap stack:
            aload 4
            areturn
         4: .line 125
      StackMap locals: org.codehaus.plexus.interpolation.StringSearchInterpolator java.lang.String org.codehaus.plexus.interpolation.RecursionInterceptor
      StackMap stack: java.lang.Throwable
            astore 3
         5: .line 126
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.cacheAnswers:Z
            ifne 7
         6: .line 128
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.existingAnswers:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         7: .line 130
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 3
            athrow
        end local 2 // org.codehaus.plexus.interpolation.RecursionInterceptor recursionInterceptor
        end local 1 // java.lang.String input
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    8     0                  this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;
            0    8     1                 input  Ljava/lang/String;
            0    8     2  recursionInterceptor  Lorg/codehaus/plexus/interpolation/RecursionInterceptor;
      Exception table:
        from    to  target  type
           0     1       4  any
    Exceptions:
      throws org.codehaus.plexus.interpolation.InterpolationException
    MethodParameters:
                      Name  Flags
      input                 
      recursionInterceptor  

  private java.lang.String interpolate(java.lang.String, org.codehaus.plexus.interpolation.RecursionInterceptor, java.util.Set<java.lang.String>);
    descriptor: (Ljava/lang/String;Lorg/codehaus/plexus/interpolation/RecursionInterceptor;Ljava/util/Set;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=16, args_size=4
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
        start local 1 // java.lang.String input
        start local 2 // org.codehaus.plexus.interpolation.RecursionInterceptor recursionInterceptor
        start local 3 // java.util.Set unresolvable
         0: .line 136
            aload 1 /* input */
            ifnonnull 2
         1: .line 139
            ldc ""
            areturn
         2: .line 143
      StackMap locals:
      StackMap stack:
            iconst_m1
            istore 5 /* endIdx */
        start local 5 // int endIdx
         3: .line 144
            aload 1 /* input */
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.startExpr:Ljava/lang/String;
            iload 5 /* endIdx */
            iconst_1
            iadd
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;I)I
            dup
            istore 4 /* startIdx */
        start local 4 // int startIdx
         4: iconst_m1
            if_icmple 73
         5: .line 146
            new java.lang.StringBuilder
            dup
            aload 1 /* input */
            invokevirtual java.lang.String.length:()I
            iconst_2
            imul
            invokespecial java.lang.StringBuilder.<init>:(I)V
            astore 6 /* result */
        start local 6 // java.lang.StringBuilder result
         6: .line 149
      StackMap locals: int int java.lang.StringBuilder
      StackMap stack:
            aload 6 /* result */
            aload 1 /* input */
            iload 5 /* endIdx */
            iconst_1
            iadd
            iload 4 /* startIdx */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;
            pop
         7: .line 151
            aload 1 /* input */
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.endExpr:Ljava/lang/String;
            iload 4 /* startIdx */
            iconst_1
            iadd
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;I)I
            istore 5 /* endIdx */
         8: .line 152
            iload 5 /* endIdx */
            ifge 10
         9: .line 154
            goto 67
        10: .line 157
      StackMap locals:
      StackMap stack:
            aload 1 /* input */
            iload 4 /* startIdx */
            iload 5 /* endIdx */
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.endExpr:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iadd
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 7 /* wholeExpr */
        start local 7 // java.lang.String wholeExpr
        11: .line 158
            aload 7 /* wholeExpr */
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.startExpr:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            aload 7 /* wholeExpr */
            invokevirtual java.lang.String.length:()I
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.endExpr:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 8 /* realExpr */
        start local 8 // java.lang.String realExpr
        12: .line 160
            iload 4 /* startIdx */
            iflt 22
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.escapeString:Ljava/lang/String;
            ifnull 22
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.escapeString:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            ifle 22
        13: .line 162
            iload 4 /* startIdx */
            ifne 14
            iconst_0
            goto 15
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
        14: iload 4 /* startIdx */
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.escapeString:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            isub
      StackMap locals:
      StackMap stack: int
        15: istore 9 /* startEscapeIdx */
        start local 9 // int startEscapeIdx
        16: .line 163
            iload 9 /* startEscapeIdx */
            iflt 22
        17: .line 165
            aload 1 /* input */
            iload 9 /* startEscapeIdx */
            iload 4 /* startIdx */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 10 /* escape */
        start local 10 // java.lang.String escape
        18: .line 166
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.escapeString:Ljava/lang/String;
            aload 10 /* escape */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 22
        19: .line 168
            aload 6 /* result */
            aload 7 /* wholeExpr */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        20: .line 169
            aload 6 /* result */
            iload 9 /* startEscapeIdx */
            iload 9 /* startEscapeIdx */
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.escapeString:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iadd
            ldc ""
            invokevirtual java.lang.StringBuilder.replace:(IILjava/lang/String;)Ljava/lang/StringBuilder;
            pop
        21: .line 170
            goto 65
        end local 10 // java.lang.String escape
        end local 9 // int startEscapeIdx
        22: .line 175
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 9 /* resolved */
        start local 9 // boolean resolved
        23: .line 176
            aload 3 /* unresolvable */
            aload 7 /* wholeExpr */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 61
        24: .line 178
            aload 8 /* realExpr */
            ldc "."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 26
        25: .line 180
            aload 8 /* realExpr */
            iconst_1
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 8 /* realExpr */
        26: .line 183
      StackMap locals: int
      StackMap stack:
            aload 2 /* recursionInterceptor */
            aload 8 /* realExpr */
            invokeinterface org.codehaus.plexus.interpolation.RecursionInterceptor.hasRecursiveExpression:(Ljava/lang/String;)Z
            ifeq 28
        27: .line 185
            new org.codehaus.plexus.interpolation.InterpolationCycleException
            dup
            aload 2 /* recursionInterceptor */
            aload 8 /* realExpr */
            aload 7 /* wholeExpr */
            invokespecial org.codehaus.plexus.interpolation.InterpolationCycleException.<init>:(Lorg/codehaus/plexus/interpolation/RecursionInterceptor;Ljava/lang/String;Ljava/lang/String;)V
            athrow
        28: .line 188
      StackMap locals:
      StackMap stack:
            aload 2 /* recursionInterceptor */
            aload 8 /* realExpr */
            invokeinterface org.codehaus.plexus.interpolation.RecursionInterceptor.expressionResolutionStarted:(Ljava/lang/String;)V
        29: .line 191
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.existingAnswers:Ljava/util/Map;
            aload 8 /* realExpr */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 10 /* value */
        start local 10 // java.lang.Object value
        30: .line 192
            aconst_null
            astore 11 /* bestAnswer */
        start local 11 // java.lang.Object bestAnswer
        31: .line 194
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.valueSources:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 13
            goto 39
      StackMap locals: org.codehaus.plexus.interpolation.StringSearchInterpolator java.lang.String org.codehaus.plexus.interpolation.RecursionInterceptor java.util.Set int int java.lang.StringBuilder java.lang.String java.lang.String int java.lang.Object java.lang.Object top java.util.Iterator
      StackMap stack:
        32: aload 13
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.codehaus.plexus.interpolation.ValueSource
            astore 12 /* valueSource */
        start local 12 // org.codehaus.plexus.interpolation.ValueSource valueSource
        33: .line 196
            aload 10 /* value */
            ifnull 35
        34: .line 198
            goto 40
        35: .line 200
      StackMap locals: org.codehaus.plexus.interpolation.StringSearchInterpolator java.lang.String org.codehaus.plexus.interpolation.RecursionInterceptor java.util.Set int int java.lang.StringBuilder java.lang.String java.lang.String int java.lang.Object java.lang.Object org.codehaus.plexus.interpolation.ValueSource java.util.Iterator
      StackMap stack:
            aload 12 /* valueSource */
            aload 8 /* realExpr */
            invokeinterface org.codehaus.plexus.interpolation.ValueSource.getValue:(Ljava/lang/String;)Ljava/lang/Object;
            astore 10 /* value */
        36: .line 202
            aload 10 /* value */
            ifnull 39
            aload 10 /* value */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            aload 7 /* wholeExpr */
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 39
        37: .line 204
            aload 10 /* value */
            astore 11 /* bestAnswer */
        38: .line 205
            aconst_null
            astore 10 /* value */
        end local 12 // org.codehaus.plexus.interpolation.ValueSource valueSource
        39: .line 194
      StackMap locals: org.codehaus.plexus.interpolation.StringSearchInterpolator java.lang.String org.codehaus.plexus.interpolation.RecursionInterceptor java.util.Set int int java.lang.StringBuilder java.lang.String java.lang.String int java.lang.Object java.lang.Object top java.util.Iterator
      StackMap stack:
            aload 13
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 32
        40: .line 212
      StackMap locals: org.codehaus.plexus.interpolation.StringSearchInterpolator java.lang.String org.codehaus.plexus.interpolation.RecursionInterceptor java.util.Set int int java.lang.StringBuilder java.lang.String java.lang.String int java.lang.Object java.lang.Object
      StackMap stack:
            aload 10 /* value */
            ifnonnull 42
            aload 11 /* bestAnswer */
            ifnull 42
        41: .line 214
            new org.codehaus.plexus.interpolation.InterpolationCycleException
            dup
            aload 2 /* recursionInterceptor */
            aload 8 /* realExpr */
            aload 7 /* wholeExpr */
            invokespecial org.codehaus.plexus.interpolation.InterpolationCycleException.<init>:(Lorg/codehaus/plexus/interpolation/RecursionInterceptor;Ljava/lang/String;Ljava/lang/String;)V
            athrow
        42: .line 217
      StackMap locals:
      StackMap stack:
            aload 10 /* value */
            ifnull 55
        43: .line 219
            aload 0 /* this */
            aload 10 /* value */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            aload 2 /* recursionInterceptor */
            aload 3 /* unresolvable */
            invokevirtual org.codehaus.plexus.interpolation.StringSearchInterpolator.interpolate:(Ljava/lang/String;Lorg/codehaus/plexus/interpolation/RecursionInterceptor;Ljava/util/Set;)Ljava/lang/String;
            astore 10 /* value */
        44: .line 221
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.postProcessors:Ljava/util/List;
            ifnull 52
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.postProcessors:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 52
        45: .line 223
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.postProcessors:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 13
            goto 51
      StackMap locals: org.codehaus.plexus.interpolation.StringSearchInterpolator java.lang.String org.codehaus.plexus.interpolation.RecursionInterceptor java.util.Set int int java.lang.StringBuilder java.lang.String java.lang.String int java.lang.Object java.lang.Object top java.util.Iterator
      StackMap stack:
        46: aload 13
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.codehaus.plexus.interpolation.InterpolationPostProcessor
            astore 12 /* postProcessor */
        start local 12 // org.codehaus.plexus.interpolation.InterpolationPostProcessor postProcessor
        47: .line 225
            aload 12 /* postProcessor */
            aload 8 /* realExpr */
            aload 10 /* value */
            invokeinterface org.codehaus.plexus.interpolation.InterpolationPostProcessor.execute:(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
            astore 14 /* newVal */
        start local 14 // java.lang.Object newVal
        48: .line 226
            aload 14 /* newVal */
            ifnull 51
        49: .line 228
            aload 14 /* newVal */
            astore 10 /* value */
        50: .line 229
            goto 52
        end local 14 // java.lang.Object newVal
        end local 12 // org.codehaus.plexus.interpolation.InterpolationPostProcessor postProcessor
        51: .line 223
      StackMap locals:
      StackMap stack:
            aload 13
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 46
        52: .line 238
      StackMap locals: org.codehaus.plexus.interpolation.StringSearchInterpolator java.lang.String org.codehaus.plexus.interpolation.RecursionInterceptor java.util.Set int int java.lang.StringBuilder java.lang.String java.lang.String int java.lang.Object java.lang.Object
      StackMap stack:
            aload 6 /* result */
            aload 10 /* value */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        53: .line 239
            iconst_1
            istore 9 /* resolved */
        54: .line 240
            goto 60
        55: .line 243
      StackMap locals:
      StackMap stack:
            aload 3 /* unresolvable */
            aload 7 /* wholeExpr */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 11 // java.lang.Object bestAnswer
        end local 10 // java.lang.Object value
        56: .line 245
            goto 60
        57: .line 247
      StackMap locals: org.codehaus.plexus.interpolation.StringSearchInterpolator java.lang.String org.codehaus.plexus.interpolation.RecursionInterceptor java.util.Set int int java.lang.StringBuilder java.lang.String java.lang.String int
      StackMap stack: java.lang.Throwable
            astore 15
        58: .line 248
            aload 2 /* recursionInterceptor */
            aload 8 /* realExpr */
            invokeinterface org.codehaus.plexus.interpolation.RecursionInterceptor.expressionResolutionFinished:(Ljava/lang/String;)V
        59: .line 249
            aload 15
            athrow
        60: .line 248
      StackMap locals:
      StackMap stack:
            aload 2 /* recursionInterceptor */
            aload 8 /* realExpr */
            invokeinterface org.codehaus.plexus.interpolation.RecursionInterceptor.expressionResolutionFinished:(Ljava/lang/String;)V
        61: .line 252
      StackMap locals:
      StackMap stack:
            iload 9 /* resolved */
            ifne 63
        62: .line 254
            aload 6 /* result */
            aload 7 /* wholeExpr */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        63: .line 257
      StackMap locals:
      StackMap stack:
            iload 5 /* endIdx */
            iconst_m1
            if_icmple 65
        64: .line 259
            iload 5 /* endIdx */
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.endExpr:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            iadd
            istore 5 /* endIdx */
        end local 9 // boolean resolved
        end local 8 // java.lang.String realExpr
        end local 7 // java.lang.String wholeExpr
        65: .line 262
      StackMap locals:
      StackMap stack:
            aload 1 /* input */
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.startExpr:Ljava/lang/String;
            iload 5 /* endIdx */
            iconst_1
            iadd
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;I)I
            dup
            istore 4 /* startIdx */
            iconst_m1
        66: .line 147
            if_icmpgt 6
        67: .line 264
      StackMap locals:
      StackMap stack:
            iload 5 /* endIdx */
            iconst_m1
            if_icmpne 70
            iload 4 /* startIdx */
            iconst_m1
            if_icmple 70
        68: .line 266
            aload 6 /* result */
            aload 1 /* input */
            iload 4 /* startIdx */
            aload 1 /* input */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;
            pop
        69: .line 267
            goto 72
        70: .line 268
      StackMap locals:
      StackMap stack:
            iload 5 /* endIdx */
            aload 1 /* input */
            invokevirtual java.lang.String.length:()I
            if_icmpge 72
        71: .line 270
            aload 6 /* result */
            aload 1 /* input */
            iload 5 /* endIdx */
            iconst_1
            iadd
            aload 1 /* input */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;
            pop
        72: .line 273
      StackMap locals:
      StackMap stack:
            aload 6 /* result */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 6 // java.lang.StringBuilder result
        73: .line 277
      StackMap locals:
      StackMap stack:
            aload 1 /* input */
            areturn
        end local 5 // int endIdx
        end local 4 // int startIdx
        end local 3 // java.util.Set unresolvable
        end local 2 // org.codehaus.plexus.interpolation.RecursionInterceptor recursionInterceptor
        end local 1 // java.lang.String input
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   74     0                  this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;
            0   74     1                 input  Ljava/lang/String;
            0   74     2  recursionInterceptor  Lorg/codehaus/plexus/interpolation/RecursionInterceptor;
            0   74     3          unresolvable  Ljava/util/Set<Ljava/lang/String;>;
            4   74     4              startIdx  I
            3   74     5                endIdx  I
            6   73     6                result  Ljava/lang/StringBuilder;
           11   65     7             wholeExpr  Ljava/lang/String;
           12   65     8              realExpr  Ljava/lang/String;
           16   22     9        startEscapeIdx  I
           18   22    10                escape  Ljava/lang/String;
           23   65     9              resolved  Z
           30   56    10                 value  Ljava/lang/Object;
           31   56    11            bestAnswer  Ljava/lang/Object;
           33   39    12           valueSource  Lorg/codehaus/plexus/interpolation/ValueSource;
           47   51    12         postProcessor  Lorg/codehaus/plexus/interpolation/InterpolationPostProcessor;
           48   51    14                newVal  Ljava/lang/Object;
      Exception table:
        from    to  target  type
          29    57      57  any
    Exceptions:
      throws org.codehaus.plexus.interpolation.InterpolationException
    Signature: (Ljava/lang/String;Lorg/codehaus/plexus/interpolation/RecursionInterceptor;Ljava/util/Set<Ljava/lang/String;>;)Ljava/lang/String;
    MethodParameters:
                      Name  Flags
      input                 
      recursionInterceptor  
      unresolvable          

  public java.util.List getFeedback();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
         0: .line 292
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* messages */
        start local 1 // java.util.List messages
         1: .line 293
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.valueSources:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 6
      StackMap locals: org.codehaus.plexus.interpolation.StringSearchInterpolator java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.codehaus.plexus.interpolation.ValueSource
            astore 2 /* vs */
        start local 2 // org.codehaus.plexus.interpolation.ValueSource vs
         3: .line 295
            aload 2 /* vs */
            invokeinterface org.codehaus.plexus.interpolation.ValueSource.getFeedback:()Ljava/util/List;
            astore 4 /* feedback */
        start local 4 // java.util.List feedback
         4: .line 296
            aload 4 /* feedback */
            ifnull 6
            aload 4 /* feedback */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 6
         5: .line 298
            aload 1 /* messages */
            aload 4 /* feedback */
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
        end local 4 // java.util.List feedback
        end local 2 // org.codehaus.plexus.interpolation.ValueSource vs
         6: .line 293
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         7: .line 302
            aload 1 /* messages */
            areturn
        end local 1 // java.util.List messages
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;
            1    8     1  messages  Ljava/util/List<*>;
            3    6     2        vs  Lorg/codehaus/plexus/interpolation/ValueSource;
            4    6     4  feedback  Ljava/util/List;

  public void clearFeedback();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
         0: .line 310
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.valueSources:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2
            goto 3
      StackMap locals: org.codehaus.plexus.interpolation.StringSearchInterpolator top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.codehaus.plexus.interpolation.ValueSource
            astore 1 /* vs */
        start local 1 // org.codehaus.plexus.interpolation.ValueSource vs
         2: .line 312
            aload 1 /* vs */
            invokeinterface org.codehaus.plexus.interpolation.ValueSource.clearFeedback:()V
        end local 1 // org.codehaus.plexus.interpolation.ValueSource vs
         3: .line 310
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 314
            return
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;
            2    3     1    vs  Lorg/codehaus/plexus/interpolation/ValueSource;

  public boolean isCacheAnswers();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
         0: .line 318
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.cacheAnswers:Z
            ireturn
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;

  public void setCacheAnswers(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
        start local 1 // boolean cacheAnswers
         0: .line 323
            aload 0 /* this */
            iload 1 /* cacheAnswers */
            putfield org.codehaus.plexus.interpolation.StringSearchInterpolator.cacheAnswers:Z
         1: .line 324
            return
        end local 1 // boolean cacheAnswers
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;
            0    2     1  cacheAnswers  Z
    MethodParameters:
              Name  Flags
      cacheAnswers  

  public void clearAnswers();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
         0: .line 328
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.existingAnswers:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         1: .line 329
            return
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;

  public java.lang.String getEscapeString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
         0: .line 333
            aload 0 /* this */
            getfield org.codehaus.plexus.interpolation.StringSearchInterpolator.escapeString:Ljava/lang/String;
            areturn
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;

  public void setEscapeString(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
        start local 1 // java.lang.String escapeString
         0: .line 338
            aload 0 /* this */
            aload 1 /* escapeString */
            putfield org.codehaus.plexus.interpolation.StringSearchInterpolator.escapeString:Ljava/lang/String;
         1: .line 339
            return
        end local 1 // java.lang.String escapeString
        end local 0 // org.codehaus.plexus.interpolation.StringSearchInterpolator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/codehaus/plexus/interpolation/StringSearchInterpolator;
            0    2     1  escapeString  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      escapeString  
}
SourceFile: "StringSearchInterpolator.java"