public final class org.apache.catalina.util.URLEncoder implements java.lang.Cloneable
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.apache.catalina.util.URLEncoder
  super_class: java.lang.Object
{
  private static final char[] hexadecimal;
    descriptor: [C
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  public static final org.apache.catalina.util.URLEncoder DEFAULT;
    descriptor: Lorg/apache/catalina/util/URLEncoder;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final org.apache.catalina.util.URLEncoder QUERY;
    descriptor: Lorg/apache/catalina/util/URLEncoder;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private final java.util.BitSet safeCharacters;
    descriptor: Ljava/util/BitSet;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 40
            bipush 16
            newarray 5
            dup
            iconst_0
            bipush 48
            castore
            dup
            iconst_1
            bipush 49
            castore
            dup
            iconst_2
            bipush 50
            castore
            dup
            iconst_3
            bipush 51
            castore
            dup
            iconst_4
            bipush 52
            castore
            dup
            iconst_5
            bipush 53
            castore
            dup
            bipush 6
            bipush 54
            castore
            dup
            bipush 7
            bipush 55
            castore
            dup
            bipush 8
            bipush 56
            castore
            dup
            bipush 9
            bipush 57
            castore
            dup
            bipush 10
            bipush 65
            castore
            dup
            bipush 11
            bipush 66
            castore
            dup
            bipush 12
            bipush 67
            castore
            dup
            bipush 13
            bipush 68
            castore
            dup
            bipush 14
            bipush 69
            castore
            dup
            bipush 15
            bipush 70
            castore
         1: .line 39
            putstatic org.apache.catalina.util.URLEncoder.hexadecimal:[C
         2: .line 42
            new org.apache.catalina.util.URLEncoder
            dup
            invokespecial org.apache.catalina.util.URLEncoder.<init>:()V
            putstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
         3: .line 43
            new org.apache.catalina.util.URLEncoder
            dup
            invokespecial org.apache.catalina.util.URLEncoder.<init>:()V
            putstatic org.apache.catalina.util.URLEncoder.QUERY:Lorg/apache/catalina/util/URLEncoder;
         4: .line 58
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 45
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
         5: .line 59
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 46
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
         6: .line 60
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 95
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
         7: .line 61
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 126
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
         8: .line 63
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 33
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
         9: .line 64
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 36
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        10: .line 65
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 38
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        11: .line 66
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 39
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        12: .line 67
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 40
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        13: .line 68
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 41
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        14: .line 69
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 42
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        15: .line 70
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 43
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        16: .line 71
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 44
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        17: .line 72
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 59
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        18: .line 73
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 61
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        19: .line 75
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 58
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        20: .line 76
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 64
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        21: .line 78
            getstatic org.apache.catalina.util.URLEncoder.DEFAULT:Lorg/apache/catalina/util/URLEncoder;
            bipush 47
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        22: .line 90
            getstatic org.apache.catalina.util.URLEncoder.QUERY:Lorg/apache/catalina/util/URLEncoder;
            iconst_1
            invokevirtual org.apache.catalina.util.URLEncoder.setEncodeSpaceAsPlus:(Z)V
        23: .line 93
            getstatic org.apache.catalina.util.URLEncoder.QUERY:Lorg/apache/catalina/util/URLEncoder;
            bipush 42
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        24: .line 94
            getstatic org.apache.catalina.util.URLEncoder.QUERY:Lorg/apache/catalina/util/URLEncoder;
            bipush 45
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        25: .line 95
            getstatic org.apache.catalina.util.URLEncoder.QUERY:Lorg/apache/catalina/util/URLEncoder;
            bipush 46
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        26: .line 96
            getstatic org.apache.catalina.util.URLEncoder.QUERY:Lorg/apache/catalina/util/URLEncoder;
            bipush 95
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        27: .line 97
            getstatic org.apache.catalina.util.URLEncoder.QUERY:Lorg/apache/catalina/util/URLEncoder;
            bipush 61
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        28: .line 98
            getstatic org.apache.catalina.util.URLEncoder.QUERY:Lorg/apache/catalina/util/URLEncoder;
            bipush 38
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        29: .line 99
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.apache.catalina.util.URLEncoder this
         0: .line 108
            aload 0 /* this */
            new java.util.BitSet
            dup
            sipush 256
            invokespecial java.util.BitSet.<init>:(I)V
            invokespecial org.apache.catalina.util.URLEncoder.<init>:(Ljava/util/BitSet;)V
         1: .line 110
            bipush 97
            istore 1 /* i */
        start local 1 // char i
         2: goto 5
         3: .line 111
      StackMap locals: org.apache.catalina.util.URLEncoder int
      StackMap stack:
            aload 0 /* this */
            iload 1 /* i */
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
         4: .line 110
            iload 1 /* i */
            iconst_1
            iadd
            i2c
            istore 1 /* i */
      StackMap locals:
      StackMap stack:
         5: iload 1 /* i */
            bipush 122
            if_icmple 3
        end local 1 // char i
         6: .line 113
            bipush 65
            istore 1 /* i */
        start local 1 // char i
         7: goto 10
         8: .line 114
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* i */
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
         9: .line 113
            iload 1 /* i */
            iconst_1
            iadd
            i2c
            istore 1 /* i */
      StackMap locals:
      StackMap stack:
        10: iload 1 /* i */
            bipush 90
            if_icmple 8
        end local 1 // char i
        11: .line 116
            bipush 48
            istore 1 /* i */
        start local 1 // char i
        12: goto 15
        13: .line 117
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* i */
            invokevirtual org.apache.catalina.util.URLEncoder.addSafeCharacter:(C)V
        14: .line 116
            iload 1 /* i */
            iconst_1
            iadd
            i2c
            istore 1 /* i */
      StackMap locals:
      StackMap stack:
        15: iload 1 /* i */
            bipush 57
            if_icmple 13
        end local 1 // char i
        16: .line 119
            return
        end local 0 // org.apache.catalina.util.URLEncoder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lorg/apache/catalina/util/URLEncoder;
            2    6     1     i  C
            7   11     1     i  C
           12   16     1     i  C

  private void <init>(java.util.BitSet);
    descriptor: (Ljava/util/BitSet;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.util.URLEncoder this
        start local 1 // java.util.BitSet safeCharacters
         0: .line 122
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 104
            aload 0 /* this */
            iconst_0
            putfield org.apache.catalina.util.URLEncoder.encodeSpaceAsPlus:Z
         2: .line 123
            aload 0 /* this */
            aload 1 /* safeCharacters */
            putfield org.apache.catalina.util.URLEncoder.safeCharacters:Ljava/util/BitSet;
         3: .line 124
            return
        end local 1 // java.util.BitSet safeCharacters
        end local 0 // org.apache.catalina.util.URLEncoder this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lorg/apache/catalina/util/URLEncoder;
            0    4     1  safeCharacters  Ljava/util/BitSet;
    MethodParameters:
                Name  Flags
      safeCharacters  

  public void addSafeCharacter(char);
    descriptor: (C)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.util.URLEncoder this
        start local 1 // char c
         0: .line 128
            aload 0 /* this */
            getfield org.apache.catalina.util.URLEncoder.safeCharacters:Ljava/util/BitSet;
            iload 1 /* c */
            invokevirtual java.util.BitSet.set:(I)V
         1: .line 129
            return
        end local 1 // char c
        end local 0 // org.apache.catalina.util.URLEncoder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/catalina/util/URLEncoder;
            0    2     1     c  C
    MethodParameters:
      Name  Flags
      c     

  public void removeSafeCharacter(char);
    descriptor: (C)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.util.URLEncoder this
        start local 1 // char c
         0: .line 133
            aload 0 /* this */
            getfield org.apache.catalina.util.URLEncoder.safeCharacters:Ljava/util/BitSet;
            iload 1 /* c */
            invokevirtual java.util.BitSet.clear:(I)V
         1: .line 134
            return
        end local 1 // char c
        end local 0 // org.apache.catalina.util.URLEncoder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/catalina/util/URLEncoder;
            0    2     1     c  C
    MethodParameters:
      Name  Flags
      c     

  public void setEncodeSpaceAsPlus(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.util.URLEncoder this
        start local 1 // boolean encodeSpaceAsPlus
         0: .line 138
            aload 0 /* this */
            iload 1 /* encodeSpaceAsPlus */
            putfield org.apache.catalina.util.URLEncoder.encodeSpaceAsPlus:Z
         1: .line 139
            return
        end local 1 // boolean encodeSpaceAsPlus
        end local 0 // org.apache.catalina.util.URLEncoder this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    2     0               this  Lorg/apache/catalina/util/URLEncoder;
            0    2     1  encodeSpaceAsPlus  Z
    MethodParameters:
                   Name  Flags
      encodeSpaceAsPlus  

  public java.lang.String encode(java.lang.String, java.nio.charset.Charset);
    descriptor: (Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=14, args_size=3
        start local 0 // org.apache.catalina.util.URLEncoder this
        start local 1 // java.lang.String path
        start local 2 // java.nio.charset.Charset charset
         0: .line 152
            bipush 10
            istore 3 /* maxBytesPerChar */
        start local 3 // int maxBytesPerChar
         1: .line 153
            new java.lang.StringBuilder
            dup
            aload 1 /* path */
            invokevirtual java.lang.String.length:()I
            invokespecial java.lang.StringBuilder.<init>:(I)V
            astore 4 /* rewrittenPath */
        start local 4 // java.lang.StringBuilder rewrittenPath
         2: .line 154
            new java.io.ByteArrayOutputStream
            dup
            iload 3 /* maxBytesPerChar */
            invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
            astore 5 /* buf */
        start local 5 // java.io.ByteArrayOutputStream buf
         3: .line 155
            new java.io.OutputStreamWriter
            dup
            aload 5 /* buf */
            aload 2 /* charset */
            invokespecial java.io.OutputStreamWriter.<init>:(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V
            astore 6 /* writer */
        start local 6 // java.io.OutputStreamWriter writer
         4: .line 157
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         5: goto 32
         6: .line 158
      StackMap locals: org.apache.catalina.util.URLEncoder java.lang.String java.nio.charset.Charset int java.lang.StringBuilder java.io.ByteArrayOutputStream java.io.OutputStreamWriter int
      StackMap stack:
            aload 1 /* path */
            iload 7 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            istore 8 /* c */
        start local 8 // int c
         7: .line 159
            aload 0 /* this */
            getfield org.apache.catalina.util.URLEncoder.safeCharacters:Ljava/util/BitSet;
            iload 8 /* c */
            invokevirtual java.util.BitSet.get:(I)Z
            ifeq 10
         8: .line 160
            aload 4 /* rewrittenPath */
            iload 8 /* c */
            i2c
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         9: .line 161
            goto 31
      StackMap locals: int
      StackMap stack:
        10: aload 0 /* this */
            getfield org.apache.catalina.util.URLEncoder.encodeSpaceAsPlus:Z
            ifeq 13
            iload 8 /* c */
            bipush 32
            if_icmpne 13
        11: .line 162
            aload 4 /* rewrittenPath */
            bipush 43
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        12: .line 163
            goto 31
        13: .line 166
      StackMap locals:
      StackMap stack:
            aload 6 /* writer */
            iload 8 /* c */
            i2c
            invokevirtual java.io.OutputStreamWriter.write:(I)V
        14: .line 167
            aload 6 /* writer */
            invokevirtual java.io.OutputStreamWriter.flush:()V
        15: .line 168
            goto 19
      StackMap locals:
      StackMap stack: java.io.IOException
        16: pop
        17: .line 169
            aload 5 /* buf */
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
        18: .line 170
            goto 31
        19: .line 172
      StackMap locals:
      StackMap stack:
            aload 5 /* buf */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            astore 9 /* ba */
        start local 9 // byte[] ba
        20: .line 173
            iconst_0
            istore 10 /* j */
        start local 10 // int j
        21: goto 29
        22: .line 175
      StackMap locals: byte[] int
      StackMap stack:
            aload 9 /* ba */
            iload 10 /* j */
            baload
            istore 11 /* toEncode */
        start local 11 // byte toEncode
        23: .line 176
            aload 4 /* rewrittenPath */
            bipush 37
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        24: .line 177
            iload 11 /* toEncode */
            bipush 15
            iand
            istore 12 /* low */
        start local 12 // int low
        25: .line 178
            iload 11 /* toEncode */
            sipush 240
            iand
            iconst_4
            ishr
            istore 13 /* high */
        start local 13 // int high
        26: .line 179
            aload 4 /* rewrittenPath */
            getstatic org.apache.catalina.util.URLEncoder.hexadecimal:[C
            iload 13 /* high */
            caload
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        27: .line 180
            aload 4 /* rewrittenPath */
            getstatic org.apache.catalina.util.URLEncoder.hexadecimal:[C
            iload 12 /* low */
            caload
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        end local 13 // int high
        end local 12 // int low
        end local 11 // byte toEncode
        28: .line 173
            iinc 10 /* j */ 1
      StackMap locals:
      StackMap stack:
        29: iload 10 /* j */
            aload 9 /* ba */
            arraylength
            if_icmplt 22
        end local 10 // int j
        30: .line 182
            aload 5 /* buf */
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
        end local 9 // byte[] ba
        end local 8 // int c
        31: .line 157
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        32: iload 7 /* i */
            aload 1 /* path */
            invokevirtual java.lang.String.length:()I
            if_icmplt 6
        end local 7 // int i
        33: .line 185
            aload 4 /* rewrittenPath */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 6 // java.io.OutputStreamWriter writer
        end local 5 // java.io.ByteArrayOutputStream buf
        end local 4 // java.lang.StringBuilder rewrittenPath
        end local 3 // int maxBytesPerChar
        end local 2 // java.nio.charset.Charset charset
        end local 1 // java.lang.String path
        end local 0 // org.apache.catalina.util.URLEncoder this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   34     0             this  Lorg/apache/catalina/util/URLEncoder;
            0   34     1             path  Ljava/lang/String;
            0   34     2          charset  Ljava/nio/charset/Charset;
            1   34     3  maxBytesPerChar  I
            2   34     4    rewrittenPath  Ljava/lang/StringBuilder;
            3   34     5              buf  Ljava/io/ByteArrayOutputStream;
            4   34     6           writer  Ljava/io/OutputStreamWriter;
            5   33     7                i  I
            7   31     8                c  I
           20   31     9               ba  [B
           21   30    10                j  I
           23   28    11         toEncode  B
           25   28    12              low  I
           26   28    13             high  I
      Exception table:
        from    to  target  type
          13    15      16  Class java.io.IOException
    MethodParameters:
         Name  Flags
      path     
      charset  

  public java.lang.Object clone();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.apache.catalina.util.URLEncoder this
         0: .line 191
            new org.apache.catalina.util.URLEncoder
            dup
            aload 0 /* this */
            getfield org.apache.catalina.util.URLEncoder.safeCharacters:Ljava/util/BitSet;
            invokevirtual java.util.BitSet.clone:()Ljava/lang/Object;
            checkcast java.util.BitSet
            invokespecial org.apache.catalina.util.URLEncoder.<init>:(Ljava/util/BitSet;)V
            astore 1 /* result */
        start local 1 // org.apache.catalina.util.URLEncoder result
         1: .line 192
            aload 1 /* result */
            aload 0 /* this */
            getfield org.apache.catalina.util.URLEncoder.encodeSpaceAsPlus:Z
            invokevirtual org.apache.catalina.util.URLEncoder.setEncodeSpaceAsPlus:(Z)V
         2: .line 193
            aload 1 /* result */
            areturn
        end local 1 // org.apache.catalina.util.URLEncoder result
        end local 0 // org.apache.catalina.util.URLEncoder this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/apache/catalina/util/URLEncoder;
            1    3     1  result  Lorg/apache/catalina/util/URLEncoder;
}
SourceFile: "URLEncoder.java"