class com.google.protobuf.Utf8$DecodeUtil
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.google.protobuf.Utf8$DecodeUtil
  super_class: java.lang.Object
{
  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.protobuf.Utf8$DecodeUtil this
         0: .line 1883
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.google.protobuf.Utf8$DecodeUtil this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/protobuf/Utf8$DecodeUtil;

  private static boolean isOneByte(byte);
    descriptor: (B)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // byte b
         0: .line 1887
            iload 0 /* b */
            iflt 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // byte b
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     b  B
    MethodParameters:
      Name  Flags
      b     

  private static boolean isTwoBytes(byte);
    descriptor: (B)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // byte b
         0: .line 1892
            iload 0 /* b */
            bipush -32
            if_icmpge 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // byte b
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     b  B
    MethodParameters:
      Name  Flags
      b     

  private static boolean isThreeBytes(byte);
    descriptor: (B)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // byte b
         0: .line 1897
            iload 0 /* b */
            bipush -16
            if_icmpge 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // byte b
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     b  B
    MethodParameters:
      Name  Flags
      b     

  private static void handleOneByte(byte, char[], int);
    descriptor: (B[CI)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // byte byte1
        start local 1 // char[] resultArr
        start local 2 // int resultPos
         0: .line 1901
            aload 1 /* resultArr */
            iload 2 /* resultPos */
            iload 0 /* byte1 */
            i2c
            castore
         1: .line 1902
            return
        end local 2 // int resultPos
        end local 1 // char[] resultArr
        end local 0 // byte byte1
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0      byte1  B
            0    2     1  resultArr  [C
            0    2     2  resultPos  I
    MethodParameters:
           Name  Flags
      byte1      
      resultArr  
      resultPos  

  private static void handleTwoBytes(byte, byte, char[], int);
    descriptor: (BB[CI)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // byte byte1
        start local 1 // byte byte2
        start local 2 // char[] resultArr
        start local 3 // int resultPos
         0: .line 1908
            iload 0 /* byte1 */
            bipush -62
            if_icmplt 1
            iload 1 /* byte2 */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.isNotTrailingByte:(B)Z
            ifeq 2
         1: .line 1909
      StackMap locals:
      StackMap stack:
            invokestatic com.google.protobuf.InvalidProtocolBufferException.invalidUtf8:()Lcom/google/protobuf/InvalidProtocolBufferException;
            athrow
         2: .line 1911
      StackMap locals:
      StackMap stack:
            aload 2 /* resultArr */
            iload 3 /* resultPos */
            iload 0 /* byte1 */
            bipush 31
            iand
            bipush 6
            ishl
            iload 1 /* byte2 */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.trailingByteValue:(B)I
            ior
            i2c
            castore
         3: .line 1912
            return
        end local 3 // int resultPos
        end local 2 // char[] resultArr
        end local 1 // byte byte2
        end local 0 // byte byte1
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0      byte1  B
            0    4     1      byte2  B
            0    4     2  resultArr  [C
            0    4     3  resultPos  I
    Exceptions:
      throws com.google.protobuf.InvalidProtocolBufferException
    MethodParameters:
           Name  Flags
      byte1      
      byte2      
      resultArr  
      resultPos  

  private static void handleThreeBytes(byte, byte, byte, char[], int);
    descriptor: (BBB[CI)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // byte byte1
        start local 1 // byte byte2
        start local 2 // byte byte3
        start local 3 // char[] resultArr
        start local 4 // int resultPos
         0: .line 1917
            iload 1 /* byte2 */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.isNotTrailingByte:(B)Z
            ifne 4
         1: .line 1919
            iload 0 /* byte1 */
            bipush -32
            if_icmpne 2
            iload 1 /* byte2 */
            bipush -96
            if_icmplt 4
         2: .line 1921
      StackMap locals:
      StackMap stack:
            iload 0 /* byte1 */
            bipush -19
            if_icmpne 3
            iload 1 /* byte2 */
            bipush -96
            if_icmpge 4
         3: .line 1922
      StackMap locals:
      StackMap stack:
            iload 2 /* byte3 */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.isNotTrailingByte:(B)Z
            ifeq 5
         4: .line 1923
      StackMap locals:
      StackMap stack:
            invokestatic com.google.protobuf.InvalidProtocolBufferException.invalidUtf8:()Lcom/google/protobuf/InvalidProtocolBufferException;
            athrow
         5: .line 1925
      StackMap locals:
      StackMap stack:
            aload 3 /* resultArr */
            iload 4 /* resultPos */
         6: .line 1927
            iload 0 /* byte1 */
            bipush 15
            iand
            bipush 12
            ishl
            iload 1 /* byte2 */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.trailingByteValue:(B)I
            bipush 6
            ishl
            ior
            iload 2 /* byte3 */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.trailingByteValue:(B)I
            ior
            i2c
         7: .line 1925
            castore
         8: .line 1928
            return
        end local 4 // int resultPos
        end local 3 // char[] resultArr
        end local 2 // byte byte3
        end local 1 // byte byte2
        end local 0 // byte byte1
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0      byte1  B
            0    9     1      byte2  B
            0    9     2      byte3  B
            0    9     3  resultArr  [C
            0    9     4  resultPos  I
    Exceptions:
      throws com.google.protobuf.InvalidProtocolBufferException
    MethodParameters:
           Name  Flags
      byte1      
      byte2      
      byte3      
      resultArr  
      resultPos  

  private static void handleFourBytes(byte, byte, byte, byte, char[], int);
    descriptor: (BBBB[CI)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=7, args_size=6
        start local 0 // byte byte1
        start local 1 // byte byte2
        start local 2 // byte byte3
        start local 3 // byte byte4
        start local 4 // char[] resultArr
        start local 5 // int resultPos
         0: .line 1933
            iload 1 /* byte2 */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.isNotTrailingByte:(B)Z
            ifne 4
         1: .line 1941
            iload 0 /* byte1 */
            bipush 28
            ishl
            iload 1 /* byte2 */
            bipush -112
            isub
            iadd
            bipush 30
            ishr
            ifne 4
         2: .line 1942
            iload 2 /* byte3 */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.isNotTrailingByte:(B)Z
            ifne 4
         3: .line 1943
            iload 3 /* byte4 */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.isNotTrailingByte:(B)Z
            ifeq 5
         4: .line 1944
      StackMap locals:
      StackMap stack:
            invokestatic com.google.protobuf.InvalidProtocolBufferException.invalidUtf8:()Lcom/google/protobuf/InvalidProtocolBufferException;
            athrow
         5: .line 1947
      StackMap locals:
      StackMap stack:
            iload 0 /* byte1 */
            bipush 7
            iand
            bipush 18
            ishl
         6: .line 1948
            iload 1 /* byte2 */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.trailingByteValue:(B)I
            bipush 12
            ishl
         7: .line 1947
            ior
         8: .line 1949
            iload 2 /* byte3 */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.trailingByteValue:(B)I
            bipush 6
            ishl
         9: .line 1947
            ior
        10: .line 1950
            iload 3 /* byte4 */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.trailingByteValue:(B)I
        11: .line 1947
            ior
        12: .line 1946
            istore 6 /* codepoint */
        start local 6 // int codepoint
        13: .line 1951
            aload 4 /* resultArr */
            iload 5 /* resultPos */
            iload 6 /* codepoint */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.highSurrogate:(I)C
            castore
        14: .line 1952
            aload 4 /* resultArr */
            iload 5 /* resultPos */
            iconst_1
            iadd
            iload 6 /* codepoint */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.lowSurrogate:(I)C
            castore
        15: .line 1953
            return
        end local 6 // int codepoint
        end local 5 // int resultPos
        end local 4 // char[] resultArr
        end local 3 // byte byte4
        end local 2 // byte byte3
        end local 1 // byte byte2
        end local 0 // byte byte1
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   16     0      byte1  B
            0   16     1      byte2  B
            0   16     2      byte3  B
            0   16     3      byte4  B
            0   16     4  resultArr  [C
            0   16     5  resultPos  I
           13   16     6  codepoint  I
    Exceptions:
      throws com.google.protobuf.InvalidProtocolBufferException
    MethodParameters:
           Name  Flags
      byte1      
      byte2      
      byte3      
      byte4      
      resultArr  
      resultPos  

  private static boolean isNotTrailingByte(byte);
    descriptor: (B)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // byte b
         0: .line 1957
            iload 0 /* b */
            bipush -65
            if_icmple 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // byte b
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     b  B
    MethodParameters:
      Name  Flags
      b     

  private static int trailingByteValue(byte);
    descriptor: (B)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // byte b
         0: .line 1962
            iload 0 /* b */
            bipush 63
            iand
            ireturn
        end local 0 // byte b
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     b  B
    MethodParameters:
      Name  Flags
      b     

  private static char highSurrogate(int);
    descriptor: (I)C
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // int codePoint
         0: .line 1967
            ldc 55232
            iload 0 /* codePoint */
            bipush 10
            iushr
            iadd
            i2c
         1: .line 1966
            ireturn
        end local 0 // int codePoint
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0  codePoint  I
    MethodParameters:
           Name  Flags
      codePoint  

  private static char lowSurrogate(int);
    descriptor: (I)C
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // int codePoint
         0: .line 1971
            ldc 56320
            iload 0 /* codePoint */
            sipush 1023
            iand
            iadd
            i2c
            ireturn
        end local 0 // int codePoint
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  codePoint  I
    MethodParameters:
           Name  Flags
      codePoint  
}
SourceFile: "Utf8.java"
NestHost: com.google.protobuf.Utf8
InnerClasses:
  private DecodeUtil = com.google.protobuf.Utf8$DecodeUtil of com.google.protobuf.Utf8