public class org.codehaus.plexus.util.InterpolationFilterReader extends java.io.FilterReader
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.codehaus.plexus.util.InterpolationFilterReader
  super_class: java.io.FilterReader
{
  private java.lang.String replaceData;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private int replaceIndex;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int previousIndex;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private java.util.Map<?, java.lang.Object> variables;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<*Ljava/lang/Object;>;

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

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

  private int beginTokenLength;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int endTokenLength;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private static final java.lang.String DEFAULT_BEGIN_TOKEN;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "${"

  private static final java.lang.String DEFAULT_END_TOKEN;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "}"

  public void <init>(java.io.Reader, java.util.Map<?, java.lang.Object>, java.lang.String, java.lang.String);
    descriptor: (Ljava/io/Reader;Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // org.codehaus.plexus.util.InterpolationFilterReader this
        start local 1 // java.io.Reader in
        start local 2 // java.util.Map variables
        start local 3 // java.lang.String beginToken
        start local 4 // java.lang.String endToken
         0: .line 124
            aload 0 /* this */
            aload 1 /* in */
            invokespecial java.io.FilterReader.<init>:(Ljava/io/Reader;)V
         1: .line 85
            aload 0 /* this */
            aconst_null
            putfield org.codehaus.plexus.util.InterpolationFilterReader.replaceData:Ljava/lang/String;
         2: .line 88
            aload 0 /* this */
            iconst_m1
            putfield org.codehaus.plexus.util.InterpolationFilterReader.replaceIndex:I
         3: .line 91
            aload 0 /* this */
            iconst_m1
            putfield org.codehaus.plexus.util.InterpolationFilterReader.previousIndex:I
         4: .line 94
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.codehaus.plexus.util.InterpolationFilterReader.variables:Ljava/util/Map;
         5: .line 126
            aload 0 /* this */
            aload 2 /* variables */
            putfield org.codehaus.plexus.util.InterpolationFilterReader.variables:Ljava/util/Map;
         6: .line 127
            aload 0 /* this */
            aload 3 /* beginToken */
            putfield org.codehaus.plexus.util.InterpolationFilterReader.beginToken:Ljava/lang/String;
         7: .line 128
            aload 0 /* this */
            aload 4 /* endToken */
            putfield org.codehaus.plexus.util.InterpolationFilterReader.endToken:Ljava/lang/String;
         8: .line 130
            aload 0 /* this */
            aload 3 /* beginToken */
            invokevirtual java.lang.String.length:()I
            putfield org.codehaus.plexus.util.InterpolationFilterReader.beginTokenLength:I
         9: .line 131
            aload 0 /* this */
            aload 4 /* endToken */
            invokevirtual java.lang.String.length:()I
            putfield org.codehaus.plexus.util.InterpolationFilterReader.endTokenLength:I
        10: .line 132
            return
        end local 4 // java.lang.String endToken
        end local 3 // java.lang.String beginToken
        end local 2 // java.util.Map variables
        end local 1 // java.io.Reader in
        end local 0 // org.codehaus.plexus.util.InterpolationFilterReader this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Lorg/codehaus/plexus/util/InterpolationFilterReader;
            0   11     1          in  Ljava/io/Reader;
            0   11     2   variables  Ljava/util/Map<*Ljava/lang/Object;>;
            0   11     3  beginToken  Ljava/lang/String;
            0   11     4    endToken  Ljava/lang/String;
    Signature: (Ljava/io/Reader;Ljava/util/Map<*Ljava/lang/Object;>;Ljava/lang/String;Ljava/lang/String;)V
    MethodParameters:
            Name  Flags
      in          
      variables   
      beginToken  
      endToken    

  public void <init>(java.io.Reader, java.util.Map<java.lang.String, java.lang.Object>);
    descriptor: (Ljava/io/Reader;Ljava/util/Map;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.codehaus.plexus.util.InterpolationFilterReader this
        start local 1 // java.io.Reader in
        start local 2 // java.util.Map variables
         0: .line 142
            aload 0 /* this */
            aload 1 /* in */
            aload 2 /* variables */
            ldc "${"
            ldc "}"
            invokespecial org.codehaus.plexus.util.InterpolationFilterReader.<init>:(Ljava/io/Reader;Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;)V
         1: .line 143
            return
        end local 2 // java.util.Map variables
        end local 1 // java.io.Reader in
        end local 0 // org.codehaus.plexus.util.InterpolationFilterReader this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/codehaus/plexus/util/InterpolationFilterReader;
            0    2     1         in  Ljava/io/Reader;
            0    2     2  variables  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
    Signature: (Ljava/io/Reader;Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;)V
    MethodParameters:
           Name  Flags
      in         
      variables  

  public long skip(long);
    descriptor: (J)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.codehaus.plexus.util.InterpolationFilterReader this
        start local 1 // long n
         0: .line 157
            lload 1 /* n */
            lconst_0
            lcmp
            ifge 2
         1: .line 159
            new java.lang.IllegalArgumentException
            dup
            ldc "skip value is negative"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 162
      StackMap locals:
      StackMap stack:
            lconst_0
            lstore 3 /* i */
        start local 3 // long i
         3: goto 7
         4: .line 164
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.codehaus.plexus.util.InterpolationFilterReader.read:()I
            iconst_m1
            if_icmpne 6
         5: .line 166
            lload 3 /* i */
            lreturn
         6: .line 162
      StackMap locals:
      StackMap stack:
            lload 3 /* i */
            lconst_1
            ladd
            lstore 3 /* i */
      StackMap locals:
      StackMap stack:
         7: lload 3 /* i */
            lload 1 /* n */
            lcmp
            iflt 4
        end local 3 // long i
         8: .line 169
            lload 1 /* n */
            lreturn
        end local 1 // long n
        end local 0 // org.codehaus.plexus.util.InterpolationFilterReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/codehaus/plexus/util/InterpolationFilterReader;
            0    9     1     n  J
            3    8     3     i  J
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      n     

  public int read(char[], int, int);
    descriptor: ([CII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // org.codehaus.plexus.util.InterpolationFilterReader this
        start local 1 // char[] cbuf
        start local 2 // int off
        start local 3 // int len
         0: .line 185
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         1: goto 9
         2: .line 187
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.codehaus.plexus.util.InterpolationFilterReader.read:()I
            istore 5 /* ch */
        start local 5 // int ch
         3: .line 188
            iload 5 /* ch */
            iconst_m1
            if_icmpne 7
         4: .line 190
            iload 4 /* i */
            ifne 6
         5: .line 192
            iconst_m1
            ireturn
         6: .line 196
      StackMap locals: int
      StackMap stack:
            iload 4 /* i */
            ireturn
         7: .line 199
      StackMap locals:
      StackMap stack:
            aload 1 /* cbuf */
            iload 2 /* off */
            iload 4 /* i */
            iadd
            iload 5 /* ch */
            i2c
            castore
        end local 5 // int ch
         8: .line 185
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 4 /* i */
            iload 3 /* len */
            if_icmplt 2
        end local 4 // int i
        10: .line 201
            iload 3 /* len */
            ireturn
        end local 3 // int len
        end local 2 // int off
        end local 1 // char[] cbuf
        end local 0 // org.codehaus.plexus.util.InterpolationFilterReader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/codehaus/plexus/util/InterpolationFilterReader;
            0   11     1  cbuf  [C
            0   11     2   off  I
            0   11     3   len  I
            1   10     4     i  I
            3    8     5    ch  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      cbuf  
      off   
      len   

  public int read();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // org.codehaus.plexus.util.InterpolationFilterReader this
         0: .line 213
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.replaceIndex:I
            iconst_m1
            if_icmpeq 5
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.replaceIndex:I
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.replaceData:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            if_icmpge 5
         1: .line 215
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.replaceData:Ljava/lang/String;
            aload 0 /* this */
            dup
            getfield org.codehaus.plexus.util.InterpolationFilterReader.replaceIndex:I
            dup_x1
            iconst_1
            iadd
            putfield org.codehaus.plexus.util.InterpolationFilterReader.replaceIndex:I
            invokevirtual java.lang.String.charAt:(I)C
            istore 1 /* ch */
        start local 1 // int ch
         2: .line 216
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.replaceIndex:I
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.replaceData:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            if_icmplt 4
         3: .line 218
            aload 0 /* this */
            iconst_m1
            putfield org.codehaus.plexus.util.InterpolationFilterReader.replaceIndex:I
         4: .line 220
      StackMap locals: int
      StackMap stack:
            iload 1 /* ch */
            ireturn
        end local 1 // int ch
         5: .line 224
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.previousIndex:I
            iconst_m1
            if_icmpeq 8
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.previousIndex:I
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.endTokenLength:I
            if_icmpge 8
         6: .line 226
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.endToken:Ljava/lang/String;
            aload 0 /* this */
            dup
            getfield org.codehaus.plexus.util.InterpolationFilterReader.previousIndex:I
            dup_x1
            iconst_1
            iadd
            putfield org.codehaus.plexus.util.InterpolationFilterReader.previousIndex:I
            invokevirtual java.lang.String.charAt:(I)C
            istore 1 /* ch */
        start local 1 // int ch
         7: .line 227
            goto 9
        end local 1 // int ch
         8: .line 230
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.in:Ljava/io/Reader;
            invokevirtual java.io.Reader.read:()I
            istore 1 /* ch */
        start local 1 // int ch
         9: .line 233
      StackMap locals: int
      StackMap stack:
            iload 1 /* ch */
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.beginToken:Ljava/lang/String;
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            if_icmpne 52
        10: .line 235
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* key */
        start local 2 // java.lang.StringBuilder key
        11: .line 237
            iconst_1
            istore 3 /* beginTokenMatchPos */
        start local 3 // int beginTokenMatchPos
        12: .line 241
      StackMap locals: java.lang.StringBuilder int
      StackMap stack:
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.previousIndex:I
            iconst_m1
            if_icmpeq 15
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.previousIndex:I
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.endTokenLength:I
            if_icmpge 15
        13: .line 243
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.endToken:Ljava/lang/String;
            aload 0 /* this */
            dup
            getfield org.codehaus.plexus.util.InterpolationFilterReader.previousIndex:I
            dup_x1
            iconst_1
            iadd
            putfield org.codehaus.plexus.util.InterpolationFilterReader.previousIndex:I
            invokevirtual java.lang.String.charAt:(I)C
            istore 1 /* ch */
        14: .line 244
            goto 16
        15: .line 247
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.in:Ljava/io/Reader;
            invokevirtual java.io.Reader.read:()I
            istore 1 /* ch */
        16: .line 249
      StackMap locals:
      StackMap stack:
            iload 1 /* ch */
            iconst_m1
            if_icmpeq 23
        17: .line 251
            aload 2 /* key */
            iload 1 /* ch */
            i2c
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        18: .line 253
            iload 3 /* beginTokenMatchPos */
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.beginTokenLength:I
            if_icmpge 22
        19: .line 254
            iload 1 /* ch */
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.beginToken:Ljava/lang/String;
            iload 3 /* beginTokenMatchPos */
            iinc 3 /* beginTokenMatchPos */ 1
            invokevirtual java.lang.String.charAt:(I)C
            if_icmpeq 22
        20: .line 256
            iconst_m1
            istore 1 /* ch */
        21: .line 257
            goto 23
        22: .line 265
      StackMap locals:
      StackMap stack:
            iload 1 /* ch */
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.endToken:Ljava/lang/String;
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            if_icmpne 12
        23: .line 268
      StackMap locals:
      StackMap stack:
            iload 1 /* ch */
            iconst_m1
            if_icmpeq 36
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.endTokenLength:I
            iconst_1
            if_icmple 36
        24: .line 270
            iconst_1
            istore 4 /* endTokenMatchPos */
        start local 4 // int endTokenMatchPos
        25: .line 274
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.previousIndex:I
            iconst_m1
            if_icmpeq 28
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.previousIndex:I
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.endTokenLength:I
            if_icmpge 28
        26: .line 276
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.endToken:Ljava/lang/String;
            aload 0 /* this */
            dup
            getfield org.codehaus.plexus.util.InterpolationFilterReader.previousIndex:I
            dup_x1
            iconst_1
            iadd
            putfield org.codehaus.plexus.util.InterpolationFilterReader.previousIndex:I
            invokevirtual java.lang.String.charAt:(I)C
            istore 1 /* ch */
        27: .line 277
            goto 29
        28: .line 280
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.in:Ljava/io/Reader;
            invokevirtual java.io.Reader.read:()I
            istore 1 /* ch */
        29: .line 283
      StackMap locals:
      StackMap stack:
            iload 1 /* ch */
            iconst_m1
            if_icmpeq 36
        30: .line 285
            aload 2 /* key */
            iload 1 /* ch */
            i2c
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        31: .line 287
            iload 1 /* ch */
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.endToken:Ljava/lang/String;
            iload 4 /* endTokenMatchPos */
            iinc 4 /* endTokenMatchPos */ 1
            invokevirtual java.lang.String.charAt:(I)C
            if_icmpeq 34
        32: .line 289
            iconst_m1
            istore 1 /* ch */
        33: .line 290
            goto 36
        34: .line 299
      StackMap locals:
      StackMap stack:
            iload 4 /* endTokenMatchPos */
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.endTokenLength:I
        35: .line 272
            if_icmplt 25
        end local 4 // int endTokenMatchPos
        36: .line 305
      StackMap locals:
      StackMap stack:
            iload 1 /* ch */
            iconst_m1
            if_icmpne 40
        37: .line 307
            aload 0 /* this */
            aload 2 /* key */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putfield org.codehaus.plexus.util.InterpolationFilterReader.replaceData:Ljava/lang/String;
        38: .line 308
            aload 0 /* this */
            iconst_0
            putfield org.codehaus.plexus.util.InterpolationFilterReader.replaceIndex:I
        39: .line 309
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.beginToken:Ljava/lang/String;
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            ireturn
        40: .line 312
      StackMap locals:
      StackMap stack:
            aload 2 /* key */
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.beginTokenLength:I
            iconst_1
            isub
            aload 2 /* key */
            invokevirtual java.lang.StringBuilder.length:()I
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.endTokenLength:I
            isub
            invokevirtual java.lang.StringBuilder.substring:(II)Ljava/lang/String;
            astore 4 /* variableKey */
        start local 4 // java.lang.String variableKey
        41: .line 314
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.variables:Ljava/util/Map;
            aload 4 /* variableKey */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 5 /* o */
        start local 5 // java.lang.Object o
        42: .line 315
            aload 5 /* o */
            ifnull 48
        43: .line 317
            aload 5 /* o */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            astore 6 /* value */
        start local 6 // java.lang.String value
        44: .line 318
            aload 6 /* value */
            invokevirtual java.lang.String.length:()I
            ifeq 47
        45: .line 320
            aload 0 /* this */
            aload 6 /* value */
            putfield org.codehaus.plexus.util.InterpolationFilterReader.replaceData:Ljava/lang/String;
        46: .line 321
            aload 0 /* this */
            iconst_0
            putfield org.codehaus.plexus.util.InterpolationFilterReader.replaceIndex:I
        47: .line 323
      StackMap locals: java.lang.String java.lang.Object java.lang.String
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.codehaus.plexus.util.InterpolationFilterReader.read:()I
            ireturn
        end local 6 // java.lang.String value
        48: .line 327
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield org.codehaus.plexus.util.InterpolationFilterReader.previousIndex:I
        49: .line 328
            aload 0 /* this */
            aload 2 /* key */
            iconst_0
            aload 2 /* key */
            invokevirtual java.lang.StringBuilder.length:()I
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.endTokenLength:I
            isub
            invokevirtual java.lang.StringBuilder.substring:(II)Ljava/lang/String;
            putfield org.codehaus.plexus.util.InterpolationFilterReader.replaceData:Ljava/lang/String;
        50: .line 329
            aload 0 /* this */
            iconst_0
            putfield org.codehaus.plexus.util.InterpolationFilterReader.replaceIndex:I
        51: .line 330
            aload 0 /* this */
            getfield org.codehaus.plexus.util.InterpolationFilterReader.beginToken:Ljava/lang/String;
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            ireturn
        end local 5 // java.lang.Object o
        end local 4 // java.lang.String variableKey
        end local 3 // int beginTokenMatchPos
        end local 2 // java.lang.StringBuilder key
        52: .line 334
      StackMap locals: org.codehaus.plexus.util.InterpolationFilterReader int
      StackMap stack:
            iload 1 /* ch */
            ireturn
        end local 1 // int ch
        end local 0 // org.codehaus.plexus.util.InterpolationFilterReader this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   53     0                this  Lorg/codehaus/plexus/util/InterpolationFilterReader;
            2    5     1                  ch  I
            7    8     1                  ch  I
            9   53     1                  ch  I
           11   52     2                 key  Ljava/lang/StringBuilder;
           12   52     3  beginTokenMatchPos  I
           25   36     4    endTokenMatchPos  I
           41   52     4         variableKey  Ljava/lang/String;
           42   52     5                   o  Ljava/lang/Object;
           44   48     6               value  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
}
SourceFile: "InterpolationFilterReader.java"