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

  final boolean isValidUtf8(byte[], int, int);
    descriptor: ([BII)Z
    flags: (0x0010) ACC_FINAL
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.google.protobuf.Utf8$Processor this
        start local 1 // byte[] bytes
        start local 2 // int index
        start local 3 // int limit
         0: .line 390
            aload 0 /* this */
            iconst_0
            aload 1 /* bytes */
            iload 2 /* index */
            iload 3 /* limit */
            invokevirtual com.google.protobuf.Utf8$Processor.partialIsValidUtf8:(I[BII)I
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 3 // int limit
        end local 2 // int index
        end local 1 // byte[] bytes
        end local 0 // com.google.protobuf.Utf8$Processor this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/google/protobuf/Utf8$Processor;
            0    2     1  bytes  [B
            0    2     2  index  I
            0    2     3  limit  I
    MethodParameters:
       Name  Flags
      bytes  
      index  
      limit  

  abstract int partialIsValidUtf8(int, byte[], int, int);
    descriptor: (I[BII)I
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      state  
      bytes  
      index  
      limit  

  final boolean isValidUtf8(java.nio.ByteBuffer, int, int);
    descriptor: (Ljava/nio/ByteBuffer;II)Z
    flags: (0x0010) ACC_FINAL
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.google.protobuf.Utf8$Processor this
        start local 1 // java.nio.ByteBuffer buffer
        start local 2 // int index
        start local 3 // int limit
         0: .line 417
            aload 0 /* this */
            iconst_0
            aload 1 /* buffer */
            iload 2 /* index */
            iload 3 /* limit */
            invokevirtual com.google.protobuf.Utf8$Processor.partialIsValidUtf8:(ILjava/nio/ByteBuffer;II)I
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 3 // int limit
        end local 2 // int index
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // com.google.protobuf.Utf8$Processor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/google/protobuf/Utf8$Processor;
            0    2     1  buffer  Ljava/nio/ByteBuffer;
            0    2     2   index  I
            0    2     3   limit  I
    MethodParameters:
        Name  Flags
      buffer  
      index   
      limit   

  final int partialIsValidUtf8(int, java.nio.ByteBuffer, int, int);
    descriptor: (ILjava/nio/ByteBuffer;II)I
    flags: (0x0010) ACC_FINAL
    Code:
      stack=6, locals=6, args_size=5
        start local 0 // com.google.protobuf.Utf8$Processor this
        start local 1 // int state
        start local 2 // java.nio.ByteBuffer buffer
        start local 3 // int index
        start local 4 // int limit
         0: .line 428
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.hasArray:()Z
            ifeq 3
         1: .line 429
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            istore 5 /* offset */
        start local 5 // int offset
         2: .line 430
            aload 0 /* this */
            iload 1 /* state */
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.array:()[B
            iload 5 /* offset */
            iload 3 /* index */
            iadd
            iload 5 /* offset */
            iload 4 /* limit */
            iadd
            invokevirtual com.google.protobuf.Utf8$Processor.partialIsValidUtf8:(I[BII)I
            ireturn
        end local 5 // int offset
         3: .line 431
      StackMap locals:
      StackMap stack:
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.isDirect:()Z
            ifeq 5
         4: .line 432
            aload 0 /* this */
            iload 1 /* state */
            aload 2 /* buffer */
            iload 3 /* index */
            iload 4 /* limit */
            invokevirtual com.google.protobuf.Utf8$Processor.partialIsValidUtf8Direct:(ILjava/nio/ByteBuffer;II)I
            ireturn
         5: .line 434
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* state */
            aload 2 /* buffer */
            iload 3 /* index */
            iload 4 /* limit */
            invokevirtual com.google.protobuf.Utf8$Processor.partialIsValidUtf8Default:(ILjava/nio/ByteBuffer;II)I
            ireturn
        end local 4 // int limit
        end local 3 // int index
        end local 2 // java.nio.ByteBuffer buffer
        end local 1 // int state
        end local 0 // com.google.protobuf.Utf8$Processor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lcom/google/protobuf/Utf8$Processor;
            0    6     1   state  I
            0    6     2  buffer  Ljava/nio/ByteBuffer;
            0    6     3   index  I
            0    6     4   limit  I
            2    3     5  offset  I
    MethodParameters:
        Name  Flags
      state   final
      buffer  final
      index   
      limit   final

  abstract int partialIsValidUtf8Direct(int, java.nio.ByteBuffer, int, int);
    descriptor: (ILjava/nio/ByteBuffer;II)I
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
        Name  Flags
      state   final
      buffer  final
      index   
      limit   final

  final int partialIsValidUtf8Default(int, java.nio.ByteBuffer, int, int);
    descriptor: (ILjava/nio/ByteBuffer;II)I
    flags: (0x0010) ACC_FINAL
    Code:
      stack=3, locals=8, args_size=5
        start local 0 // com.google.protobuf.Utf8$Processor this
        start local 1 // int state
        start local 2 // java.nio.ByteBuffer buffer
        start local 3 // int index
        start local 4 // int limit
         0: .line 448
            iload 1 /* state */
            ifeq 35
         1: .line 456
            iload 3 /* index */
            iload 4 /* limit */
            if_icmplt 3
         2: .line 457
            iload 1 /* state */
            ireturn
         3: .line 460
      StackMap locals:
      StackMap stack:
            iload 1 /* state */
            i2b
            istore 5 /* byte1 */
        start local 5 // byte byte1
         4: .line 462
            iload 5 /* byte1 */
            bipush -32
            if_icmpge 8
         5: .line 467
            iload 5 /* byte1 */
            bipush -62
            if_icmplt 7
         6: .line 469
            aload 2 /* buffer */
            iload 3 /* index */
            iinc 3 /* index */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
            bipush -65
            if_icmple 35
         7: .line 470
      StackMap locals: int
      StackMap stack:
            iconst_m1
            ireturn
         8: .line 472
      StackMap locals:
      StackMap stack:
            iload 5 /* byte1 */
            bipush -16
            if_icmpge 19
         9: .line 476
            iload 1 /* state */
            bipush 8
            ishr
            iconst_m1
            ixor
            i2b
            istore 6 /* byte2 */
        start local 6 // byte byte2
        10: .line 477
            iload 6 /* byte2 */
            ifne 14
        11: .line 478
            aload 2 /* buffer */
            iload 3 /* index */
            iinc 3 /* index */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
            istore 6 /* byte2 */
        12: .line 479
            iload 3 /* index */
            iload 4 /* limit */
            if_icmplt 14
        13: .line 480
            iload 5 /* byte1 */
            iload 6 /* byte2 */
            invokestatic com.google.protobuf.Utf8.incompleteStateFor:(II)I
            ireturn
        14: .line 483
      StackMap locals: int
      StackMap stack:
            iload 6 /* byte2 */
            bipush -65
            if_icmpgt 18
        15: .line 485
            iload 5 /* byte1 */
            bipush -32
            if_icmpne 16
            iload 6 /* byte2 */
            bipush -96
            if_icmplt 18
        16: .line 487
      StackMap locals:
      StackMap stack:
            iload 5 /* byte1 */
            bipush -19
            if_icmpne 17
            iload 6 /* byte2 */
            bipush -96
            if_icmpge 18
        17: .line 489
      StackMap locals:
      StackMap stack:
            aload 2 /* buffer */
            iload 3 /* index */
            iinc 3 /* index */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
            bipush -65
            if_icmple 35
        18: .line 490
      StackMap locals:
      StackMap stack:
            iconst_m1
            ireturn
        end local 6 // byte byte2
        19: .line 496
      StackMap locals:
      StackMap stack:
            iload 1 /* state */
            bipush 8
            ishr
            iconst_m1
            ixor
            i2b
            istore 6 /* byte2 */
        start local 6 // byte byte2
        20: .line 497
            iconst_0
            istore 7 /* byte3 */
        start local 7 // byte byte3
        21: .line 498
            iload 6 /* byte2 */
            ifne 25
        22: .line 499
            aload 2 /* buffer */
            iload 3 /* index */
            iinc 3 /* index */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
            istore 6 /* byte2 */
        23: .line 500
            iload 3 /* index */
            iload 4 /* limit */
            if_icmplt 26
        24: .line 501
            iload 5 /* byte1 */
            iload 6 /* byte2 */
            invokestatic com.google.protobuf.Utf8.incompleteStateFor:(II)I
            ireturn
        25: .line 504
      StackMap locals: int int
      StackMap stack:
            iload 1 /* state */
            bipush 16
            ishr
            i2b
            istore 7 /* byte3 */
        26: .line 506
      StackMap locals:
      StackMap stack:
            iload 7 /* byte3 */
            ifne 30
        27: .line 507
            aload 2 /* buffer */
            iload 3 /* index */
            iinc 3 /* index */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
            istore 7 /* byte3 */
        28: .line 508
            iload 3 /* index */
            iload 4 /* limit */
            if_icmplt 30
        29: .line 509
            iload 5 /* byte1 */
            iload 6 /* byte2 */
            iload 7 /* byte3 */
            invokestatic com.google.protobuf.Utf8.incompleteStateFor:(III)I
            ireturn
        30: .line 517
      StackMap locals:
      StackMap stack:
            iload 6 /* byte2 */
            bipush -65
            if_icmpgt 34
        31: .line 522
            iload 5 /* byte1 */
            bipush 28
            ishl
            iload 6 /* byte2 */
            bipush -112
            isub
            iadd
            bipush 30
            ishr
            ifne 34
        32: .line 524
            iload 7 /* byte3 */
            bipush -65
            if_icmpgt 34
        33: .line 526
            aload 2 /* buffer */
            iload 3 /* index */
            iinc 3 /* index */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
            bipush -65
            if_icmple 35
        34: .line 527
      StackMap locals:
      StackMap stack:
            iconst_m1
            ireturn
        end local 7 // byte byte3
        end local 6 // byte byte2
        end local 5 // byte byte1
        35: .line 533
      StackMap locals:
      StackMap stack:
            aload 2 /* buffer */
            iload 3 /* index */
            iload 4 /* limit */
            invokestatic com.google.protobuf.Utf8$Processor.partialIsValidUtf8:(Ljava/nio/ByteBuffer;II)I
            ireturn
        end local 4 // int limit
        end local 3 // int index
        end local 2 // java.nio.ByteBuffer buffer
        end local 1 // int state
        end local 0 // com.google.protobuf.Utf8$Processor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   36     0    this  Lcom/google/protobuf/Utf8$Processor;
            0   36     1   state  I
            0   36     2  buffer  Ljava/nio/ByteBuffer;
            0   36     3   index  I
            0   36     4   limit  I
            4   35     5   byte1  B
           10   19     6   byte2  B
           20   35     6   byte2  B
           21   35     7   byte3  B
    MethodParameters:
        Name  Flags
      state   final
      buffer  final
      index   
      limit   final

  private static int partialIsValidUtf8(java.nio.ByteBuffer, int, int);
    descriptor: (Ljava/nio/ByteBuffer;II)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // java.nio.ByteBuffer buffer
        start local 1 // int index
        start local 2 // int limit
         0: .line 541
            iload 1 /* index */
            aload 0 /* buffer */
            iload 1 /* index */
            iload 2 /* limit */
            invokestatic com.google.protobuf.Utf8.estimateConsecutiveAscii:(Ljava/nio/ByteBuffer;II)I
            iadd
            istore 1 /* index */
         1: .line 549
      StackMap locals:
      StackMap stack:
            iload 1 /* index */
            iload 2 /* limit */
            if_icmplt 3
         2: .line 550
            iconst_0
            ireturn
         3: .line 552
      StackMap locals:
      StackMap stack:
            aload 0 /* buffer */
            iload 1 /* index */
            iinc 1 /* index */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
            dup
            istore 3 /* byte1 */
        start local 3 // int byte1
         4: .line 548
            ifge 1
         5: .line 555
            iload 3 /* byte1 */
            bipush -32
            if_icmpge 12
         6: .line 557
            iload 1 /* index */
            iload 2 /* limit */
            if_icmplt 8
         7: .line 559
            iload 3 /* byte1 */
            ireturn
         8: .line 564
      StackMap locals: int
      StackMap stack:
            iload 3 /* byte1 */
            bipush -62
            if_icmplt 9
            aload 0 /* buffer */
            iload 1 /* index */
            invokevirtual java.nio.ByteBuffer.get:(I)B
            bipush -65
            if_icmple 10
         9: .line 565
      StackMap locals:
      StackMap stack:
            iconst_m1
            ireturn
        10: .line 567
      StackMap locals:
      StackMap stack:
            iinc 1 /* index */ 1
        11: .line 568
            goto 1
      StackMap locals:
      StackMap stack:
        12: iload 3 /* byte1 */
            bipush -16
            if_icmpge 23
        13: .line 570
            iload 1 /* index */
            iload 2 /* limit */
            iconst_1
            isub
            if_icmplt 15
        14: .line 572
            aload 0 /* buffer */
            iload 3 /* byte1 */
            iload 1 /* index */
            iload 2 /* limit */
            iload 1 /* index */
            isub
            invokestatic com.google.protobuf.Utf8.incompleteStateFor:(Ljava/nio/ByteBuffer;III)I
            ireturn
        15: .line 575
      StackMap locals:
      StackMap stack:
            aload 0 /* buffer */
            iload 1 /* index */
            iinc 1 /* index */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
            istore 4 /* byte2 */
        start local 4 // byte byte2
        16: .line 576
            iload 4 /* byte2 */
            bipush -65
            if_icmpgt 20
        17: .line 578
            iload 3 /* byte1 */
            bipush -32
            if_icmpne 18
            iload 4 /* byte2 */
            bipush -96
            if_icmplt 20
        18: .line 580
      StackMap locals: int
      StackMap stack:
            iload 3 /* byte1 */
            bipush -19
            if_icmpne 19
            iload 4 /* byte2 */
            bipush -96
            if_icmpge 20
        19: .line 582
      StackMap locals:
      StackMap stack:
            aload 0 /* buffer */
            iload 1 /* index */
            invokevirtual java.nio.ByteBuffer.get:(I)B
            bipush -65
            if_icmple 21
        20: .line 583
      StackMap locals:
      StackMap stack:
            iconst_m1
            ireturn
        21: .line 585
      StackMap locals:
      StackMap stack:
            iinc 1 /* index */ 1
        end local 4 // byte byte2
        22: .line 586
            goto 1
        23: .line 588
      StackMap locals:
      StackMap stack:
            iload 1 /* index */
            iload 2 /* limit */
            iconst_2
            isub
            if_icmplt 25
        24: .line 590
            aload 0 /* buffer */
            iload 3 /* byte1 */
            iload 1 /* index */
            iload 2 /* limit */
            iload 1 /* index */
            isub
            invokestatic com.google.protobuf.Utf8.incompleteStateFor:(Ljava/nio/ByteBuffer;III)I
            ireturn
        25: .line 594
      StackMap locals:
      StackMap stack:
            aload 0 /* buffer */
            iload 1 /* index */
            iinc 1 /* index */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
            istore 4 /* byte2 */
        start local 4 // int byte2
        26: .line 595
            iload 4 /* byte2 */
            bipush -65
            if_icmpgt 30
        27: .line 600
            iload 3 /* byte1 */
            bipush 28
            ishl
            iload 4 /* byte2 */
            bipush -112
            isub
            iadd
            bipush 30
            ishr
            ifne 30
        28: .line 602
            aload 0 /* buffer */
            iload 1 /* index */
            iinc 1 /* index */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
            bipush -65
            if_icmpgt 30
        29: .line 604
            aload 0 /* buffer */
            iload 1 /* index */
            iinc 1 /* index */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
            bipush -65
            if_icmple 1
        30: .line 605
      StackMap locals: int
      StackMap stack:
            iconst_m1
            ireturn
        end local 4 // int byte2
        end local 3 // int byte1
        end local 2 // int limit
        end local 1 // int index
        end local 0 // java.nio.ByteBuffer buffer
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   31     0  buffer  Ljava/nio/ByteBuffer;
            0   31     1   index  I
            0   31     2   limit  I
            4   31     3   byte1  I
           16   22     4   byte2  B
           26   31     4   byte2  I
    MethodParameters:
        Name  Flags
      buffer  final
      index   
      limit   final

  abstract java.lang.String decodeUtf8(byte[], int, int);
    descriptor: ([BII)Ljava/lang/String;
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws com.google.protobuf.InvalidProtocolBufferException
    MethodParameters:
       Name  Flags
      bytes  
      index  
      size   

  final java.lang.String decodeUtf8(java.nio.ByteBuffer, int, int);
    descriptor: (Ljava/nio/ByteBuffer;II)Ljava/lang/String;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.google.protobuf.Utf8$Processor this
        start local 1 // java.nio.ByteBuffer buffer
        start local 2 // int index
        start local 3 // int size
         0: .line 626
            aload 1 /* buffer */
            invokevirtual java.nio.ByteBuffer.hasArray:()Z
            ifeq 3
         1: .line 627
            aload 1 /* buffer */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            istore 4 /* offset */
        start local 4 // int offset
         2: .line 628
            aload 0 /* this */
            aload 1 /* buffer */
            invokevirtual java.nio.ByteBuffer.array:()[B
            iload 4 /* offset */
            iload 2 /* index */
            iadd
            iload 3 /* size */
            invokevirtual com.google.protobuf.Utf8$Processor.decodeUtf8:([BII)Ljava/lang/String;
            areturn
        end local 4 // int offset
         3: .line 629
      StackMap locals:
      StackMap stack:
            aload 1 /* buffer */
            invokevirtual java.nio.ByteBuffer.isDirect:()Z
            ifeq 5
         4: .line 630
            aload 0 /* this */
            aload 1 /* buffer */
            iload 2 /* index */
            iload 3 /* size */
            invokevirtual com.google.protobuf.Utf8$Processor.decodeUtf8Direct:(Ljava/nio/ByteBuffer;II)Ljava/lang/String;
            areturn
         5: .line 632
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* buffer */
            iload 2 /* index */
            iload 3 /* size */
            invokevirtual com.google.protobuf.Utf8$Processor.decodeUtf8Default:(Ljava/nio/ByteBuffer;II)Ljava/lang/String;
            areturn
        end local 3 // int size
        end local 2 // int index
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // com.google.protobuf.Utf8$Processor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lcom/google/protobuf/Utf8$Processor;
            0    6     1  buffer  Ljava/nio/ByteBuffer;
            0    6     2   index  I
            0    6     3    size  I
            2    3     4  offset  I
    Exceptions:
      throws com.google.protobuf.InvalidProtocolBufferException
    MethodParameters:
        Name  Flags
      buffer  
      index   
      size    

  abstract java.lang.String decodeUtf8Direct(java.nio.ByteBuffer, int, int);
    descriptor: (Ljava/nio/ByteBuffer;II)Ljava/lang/String;
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws com.google.protobuf.InvalidProtocolBufferException
    MethodParameters:
        Name  Flags
      buffer  
      index   
      size    

  final java.lang.String decodeUtf8Default(java.nio.ByteBuffer, int, int);
    descriptor: (Ljava/nio/ByteBuffer;II)Ljava/lang/String;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=7, locals=10, args_size=4
        start local 0 // com.google.protobuf.Utf8$Processor this
        start local 1 // java.nio.ByteBuffer buffer
        start local 2 // int index
        start local 3 // int size
         0: .line 646
            iload 2 /* index */
            iload 3 /* size */
            ior
            aload 1 /* buffer */
            invokevirtual java.nio.ByteBuffer.limit:()I
            iload 2 /* index */
            isub
            iload 3 /* size */
            isub
            ior
            ifge 4
         1: .line 647
            new java.lang.ArrayIndexOutOfBoundsException
            dup
         2: .line 648
            ldc "buffer limit=%d, index=%d, limit=%d"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* buffer */
            invokevirtual java.nio.ByteBuffer.limit:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iload 2 /* index */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            iload 3 /* size */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         3: .line 647
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 651
      StackMap locals:
      StackMap stack:
            iload 2 /* index */
            istore 4 /* offset */
        start local 4 // int offset
         5: .line 652
            iload 4 /* offset */
            iload 3 /* size */
            iadd
            istore 5 /* limit */
        start local 5 // int limit
         6: .line 656
            iload 3 /* size */
            newarray 5
            astore 6 /* resultArr */
        start local 6 // char[] resultArr
         7: .line 657
            iconst_0
            istore 7 /* resultPos */
        start local 7 // int resultPos
         8: .line 661
            goto 14
         9: .line 662
      StackMap locals: com.google.protobuf.Utf8$Processor java.nio.ByteBuffer int int int int char[] int
      StackMap stack:
            aload 1 /* buffer */
            iload 4 /* offset */
            invokevirtual java.nio.ByteBuffer.get:(I)B
            istore 8 /* b */
        start local 8 // byte b
        10: .line 663
            iload 8 /* b */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.isOneByte:(B)Z
            ifne 12
        11: .line 664
            goto 53
        12: .line 666
      StackMap locals: int
      StackMap stack:
            iinc 4 /* offset */ 1
        13: .line 667
            iload 8 /* b */
            aload 6 /* resultArr */
            iload 7 /* resultPos */
            iinc 7 /* resultPos */ 1
            invokestatic com.google.protobuf.Utf8$DecodeUtil.handleOneByte:(B[CI)V
        end local 8 // byte b
        14: .line 661
      StackMap locals:
      StackMap stack:
            iload 4 /* offset */
            iload 5 /* limit */
            if_icmplt 9
        15: .line 670
            goto 53
        16: .line 671
      StackMap locals:
      StackMap stack:
            aload 1 /* buffer */
            iload 4 /* offset */
            iinc 4 /* offset */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
            istore 8 /* byte1 */
        start local 8 // byte byte1
        17: .line 672
            iload 8 /* byte1 */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.isOneByte:(B)Z
            ifeq 27
        18: .line 673
            iload 8 /* byte1 */
            aload 6 /* resultArr */
            iload 7 /* resultPos */
            iinc 7 /* resultPos */ 1
            invokestatic com.google.protobuf.Utf8$DecodeUtil.handleOneByte:(B[CI)V
        19: .line 676
            goto 25
        20: .line 677
      StackMap locals: int
      StackMap stack:
            aload 1 /* buffer */
            iload 4 /* offset */
            invokevirtual java.nio.ByteBuffer.get:(I)B
            istore 9 /* b */
        start local 9 // byte b
        21: .line 678
            iload 9 /* b */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.isOneByte:(B)Z
            ifne 23
        22: .line 679
            goto 53
        23: .line 681
      StackMap locals: int
      StackMap stack:
            iinc 4 /* offset */ 1
        24: .line 682
            iload 9 /* b */
            aload 6 /* resultArr */
            iload 7 /* resultPos */
            iinc 7 /* resultPos */ 1
            invokestatic com.google.protobuf.Utf8$DecodeUtil.handleOneByte:(B[CI)V
        end local 9 // byte b
        25: .line 676
      StackMap locals:
      StackMap stack:
            iload 4 /* offset */
            iload 5 /* limit */
            if_icmplt 20
        26: .line 684
            goto 53
      StackMap locals:
      StackMap stack:
        27: iload 8 /* byte1 */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.isTwoBytes:(B)Z
            ifeq 33
        28: .line 685
            iload 4 /* offset */
            iload 5 /* limit */
            if_icmplt 30
        29: .line 686
            invokestatic com.google.protobuf.InvalidProtocolBufferException.invalidUtf8:()Lcom/google/protobuf/InvalidProtocolBufferException;
            athrow
        30: .line 689
      StackMap locals:
      StackMap stack:
            iload 8 /* byte1 */
            aload 1 /* buffer */
            iload 4 /* offset */
            iinc 4 /* offset */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
            aload 6 /* resultArr */
            iload 7 /* resultPos */
            iinc 7 /* resultPos */ 1
        31: .line 688
            invokestatic com.google.protobuf.Utf8$DecodeUtil.handleTwoBytes:(BB[CI)V
        32: .line 690
            goto 53
      StackMap locals:
      StackMap stack:
        33: iload 8 /* byte1 */
            invokestatic com.google.protobuf.Utf8$DecodeUtil.isThreeBytes:(B)Z
            ifeq 43
        34: .line 691
            iload 4 /* offset */
            iload 5 /* limit */
            iconst_1
            isub
            if_icmplt 36
        35: .line 692
            invokestatic com.google.protobuf.InvalidProtocolBufferException.invalidUtf8:()Lcom/google/protobuf/InvalidProtocolBufferException;
            athrow
        36: .line 695
      StackMap locals:
      StackMap stack:
            iload 8 /* byte1 */
        37: .line 696
            aload 1 /* buffer */
            iload 4 /* offset */
            iinc 4 /* offset */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
        38: .line 697
            aload 1 /* buffer */
            iload 4 /* offset */
            iinc 4 /* offset */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
        39: .line 698
            aload 6 /* resultArr */
        40: .line 699
            iload 7 /* resultPos */
            iinc 7 /* resultPos */ 1
        41: .line 694
            invokestatic com.google.protobuf.Utf8$DecodeUtil.handleThreeBytes:(BBB[CI)V
        42: .line 700
            goto 53
        43: .line 701
      StackMap locals:
      StackMap stack:
            iload 4 /* offset */
            iload 5 /* limit */
            iconst_2
            isub
            if_icmplt 45
        44: .line 702
            invokestatic com.google.protobuf.InvalidProtocolBufferException.invalidUtf8:()Lcom/google/protobuf/InvalidProtocolBufferException;
            athrow
        45: .line 705
      StackMap locals:
      StackMap stack:
            iload 8 /* byte1 */
        46: .line 706
            aload 1 /* buffer */
            iload 4 /* offset */
            iinc 4 /* offset */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
        47: .line 707
            aload 1 /* buffer */
            iload 4 /* offset */
            iinc 4 /* offset */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
        48: .line 708
            aload 1 /* buffer */
            iload 4 /* offset */
            iinc 4 /* offset */ 1
            invokevirtual java.nio.ByteBuffer.get:(I)B
        49: .line 709
            aload 6 /* resultArr */
        50: .line 710
            iload 7 /* resultPos */
            iinc 7 /* resultPos */ 1
        51: .line 704
            invokestatic com.google.protobuf.Utf8$DecodeUtil.handleFourBytes:(BBBB[CI)V
        52: .line 712
            iinc 7 /* resultPos */ 1
        end local 8 // byte byte1
        53: .line 670
      StackMap locals:
      StackMap stack:
            iload 4 /* offset */
            iload 5 /* limit */
            if_icmplt 16
        54: .line 716
            new java.lang.String
            dup
            aload 6 /* resultArr */
            iconst_0
            iload 7 /* resultPos */
            invokespecial java.lang.String.<init>:([CII)V
            areturn
        end local 7 // int resultPos
        end local 6 // char[] resultArr
        end local 5 // int limit
        end local 4 // int offset
        end local 3 // int size
        end local 2 // int index
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // com.google.protobuf.Utf8$Processor this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   55     0       this  Lcom/google/protobuf/Utf8$Processor;
            0   55     1     buffer  Ljava/nio/ByteBuffer;
            0   55     2      index  I
            0   55     3       size  I
            5   55     4     offset  I
            6   55     5      limit  I
            7   55     6  resultArr  [C
            8   55     7  resultPos  I
           10   14     8          b  B
           17   53     8      byte1  B
           21   25     9          b  B
    Exceptions:
      throws com.google.protobuf.InvalidProtocolBufferException
    MethodParameters:
        Name  Flags
      buffer  
      index   
      size    

  abstract int encodeUtf8(java.lang.CharSequence, byte[], int, int);
    descriptor: (Ljava/lang/CharSequence;[BII)I
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
        Name  Flags
      in      
      out     
      offset  
      length  

  final void encodeUtf8(java.lang.CharSequence, java.nio.ByteBuffer);
    descriptor: (Ljava/lang/CharSequence;Ljava/nio/ByteBuffer;)V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // com.google.protobuf.Utf8$Processor this
        start local 1 // java.lang.CharSequence in
        start local 2 // java.nio.ByteBuffer out
         0: .line 769
            aload 2 /* out */
            invokevirtual java.nio.ByteBuffer.hasArray:()Z
            ifeq 5
         1: .line 770
            aload 2 /* out */
            invokevirtual java.nio.ByteBuffer.arrayOffset:()I
            istore 3 /* offset */
        start local 3 // int offset
         2: .line 771
            aload 1 /* in */
            aload 2 /* out */
            invokevirtual java.nio.ByteBuffer.array:()[B
            iload 3 /* offset */
            aload 2 /* out */
            invokevirtual java.nio.ByteBuffer.position:()I
            iadd
            aload 2 /* out */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            invokestatic com.google.protobuf.Utf8.encode:(Ljava/lang/CharSequence;[BII)I
            istore 4 /* endIndex */
        start local 4 // int endIndex
         3: .line 772
            aload 2 /* out */
            iload 4 /* endIndex */
            iload 3 /* offset */
            isub
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        end local 4 // int endIndex
        end local 3 // int offset
         4: .line 773
            goto 9
      StackMap locals:
      StackMap stack:
         5: aload 2 /* out */
            invokevirtual java.nio.ByteBuffer.isDirect:()Z
            ifeq 8
         6: .line 774
            aload 0 /* this */
            aload 1 /* in */
            aload 2 /* out */
            invokevirtual com.google.protobuf.Utf8$Processor.encodeUtf8Direct:(Ljava/lang/CharSequence;Ljava/nio/ByteBuffer;)V
         7: .line 775
            goto 9
         8: .line 776
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* in */
            aload 2 /* out */
            invokevirtual com.google.protobuf.Utf8$Processor.encodeUtf8Default:(Ljava/lang/CharSequence;Ljava/nio/ByteBuffer;)V
         9: .line 778
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.nio.ByteBuffer out
        end local 1 // java.lang.CharSequence in
        end local 0 // com.google.protobuf.Utf8$Processor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0      this  Lcom/google/protobuf/Utf8$Processor;
            0   10     1        in  Ljava/lang/CharSequence;
            0   10     2       out  Ljava/nio/ByteBuffer;
            2    4     3    offset  I
            3    4     4  endIndex  I
    MethodParameters:
      Name  Flags
      in    
      out   

  abstract void encodeUtf8Direct(java.lang.CharSequence, java.nio.ByteBuffer);
    descriptor: (Ljava/lang/CharSequence;Ljava/nio/ByteBuffer;)V
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      in    
      out   

  final void encodeUtf8Default(java.lang.CharSequence, java.nio.ByteBuffer);
    descriptor: (Ljava/lang/CharSequence;Ljava/nio/ByteBuffer;)V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=6, locals=9, args_size=3
        start local 0 // com.google.protobuf.Utf8$Processor this
        start local 1 // java.lang.CharSequence in
        start local 2 // java.nio.ByteBuffer out
         0: .line 788
            aload 1 /* in */
            invokeinterface java.lang.CharSequence.length:()I
            istore 3 /* inLength */
        start local 3 // int inLength
         1: .line 789
            aload 2 /* out */
            invokevirtual java.nio.ByteBuffer.position:()I
            istore 4 /* outIx */
        start local 4 // int outIx
         2: .line 790
            iconst_0
            istore 5 /* inIx */
        start local 5 // int inIx
         3: .line 798
            goto 6
        start local 6 // char c
         4: .line 799
      StackMap locals: com.google.protobuf.Utf8$Processor java.lang.CharSequence java.nio.ByteBuffer int int int int
      StackMap stack:
            aload 2 /* out */
            iload 4 /* outIx */
            iload 5 /* inIx */
            iadd
            iload 6 /* c */
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
         5: .line 798
            iinc 5 /* inIx */ 1
        end local 6 // char c
      StackMap locals:
      StackMap stack:
         6: iload 5 /* inIx */
            iload 3 /* inLength */
            if_icmpge 8
            aload 1 /* in */
            iload 5 /* inIx */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            dup
            istore 6 /* c */
        start local 6 // char c
         7: sipush 128
            if_icmplt 4
        end local 6 // char c
         8: .line 801
      StackMap locals:
      StackMap stack:
            iload 5 /* inIx */
            iload 3 /* inLength */
            if_icmpne 11
         9: .line 803
            aload 2 /* out */
            iload 4 /* outIx */
            iload 5 /* inIx */
            iadd
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        10: .line 804
            return
        11: .line 807
      StackMap locals:
      StackMap stack:
            iload 4 /* outIx */
            iload 5 /* inIx */
            iadd
            istore 4 /* outIx */
        12: .line 808
            goto 35
        13: .line 809
      StackMap locals:
      StackMap stack:
            aload 1 /* in */
            iload 5 /* inIx */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            istore 6 /* c */
        start local 6 // char c
        14: .line 810
            iload 6 /* c */
            sipush 128
            if_icmpge 17
        15: .line 812
            aload 2 /* out */
            iload 4 /* outIx */
            iload 6 /* c */
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        16: .line 813
            goto 34
      StackMap locals: int
      StackMap stack:
        17: iload 6 /* c */
            sipush 2048
            if_icmpge 21
        18: .line 817
            aload 2 /* out */
            iload 4 /* outIx */
            iinc 4 /* outIx */ 1
            sipush 192
            iload 6 /* c */
            bipush 6
            iushr
            ior
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        19: .line 818
            aload 2 /* out */
            iload 4 /* outIx */
            sipush 128
            bipush 63
            iload 6 /* c */
            iand
            ior
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        20: .line 819
            goto 34
      StackMap locals:
      StackMap stack:
        21: iload 6 /* c */
            ldc 55296
            if_icmplt 22
            ldc 57343
            iload 6 /* c */
            if_icmpge 26
        22: .line 824
      StackMap locals:
      StackMap stack:
            aload 2 /* out */
            iload 4 /* outIx */
            iinc 4 /* outIx */ 1
            sipush 224
            iload 6 /* c */
            bipush 12
            iushr
            ior
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        23: .line 825
            aload 2 /* out */
            iload 4 /* outIx */
            iinc 4 /* outIx */ 1
            sipush 128
            bipush 63
            iload 6 /* c */
            bipush 6
            iushr
            iand
            ior
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        24: .line 826
            aload 2 /* out */
            iload 4 /* outIx */
            sipush 128
            bipush 63
            iload 6 /* c */
            iand
            ior
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        25: .line 827
            goto 34
        26: .line 833
      StackMap locals:
      StackMap stack:
            iload 5 /* inIx */
            iconst_1
            iadd
            iload 3 /* inLength */
            if_icmpeq 28
            iload 6 /* c */
            aload 1 /* in */
            iinc 5 /* inIx */ 1
            iload 5 /* inIx */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            dup
            istore 7 /* low */
        start local 7 // char low
        27: invokestatic java.lang.Character.isSurrogatePair:(CC)Z
            ifne 29
        end local 7 // char low
        28: .line 834
      StackMap locals:
      StackMap stack:
            new com.google.protobuf.Utf8$UnpairedSurrogateException
            dup
            iload 5 /* inIx */
            iload 3 /* inLength */
            invokespecial com.google.protobuf.Utf8$UnpairedSurrogateException.<init>:(II)V
            athrow
        start local 7 // char low
        29: .line 837
      StackMap locals: int
      StackMap stack:
            iload 6 /* c */
            iload 7 /* low */
            invokestatic java.lang.Character.toCodePoint:(CC)I
            istore 8 /* codePoint */
        start local 8 // int codePoint
        30: .line 838
            aload 2 /* out */
            iload 4 /* outIx */
            iinc 4 /* outIx */ 1
            sipush 240
            iload 8 /* codePoint */
            bipush 18
            iushr
            ior
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        31: .line 839
            aload 2 /* out */
            iload 4 /* outIx */
            iinc 4 /* outIx */ 1
            sipush 128
            bipush 63
            iload 8 /* codePoint */
            bipush 12
            iushr
            iand
            ior
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        32: .line 840
            aload 2 /* out */
            iload 4 /* outIx */
            iinc 4 /* outIx */ 1
            sipush 128
            bipush 63
            iload 8 /* codePoint */
            bipush 6
            iushr
            iand
            ior
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        33: .line 841
            aload 2 /* out */
            iload 4 /* outIx */
            sipush 128
            bipush 63
            iload 8 /* codePoint */
            iand
            ior
            i2b
            invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
            pop
        end local 8 // int codePoint
        end local 7 // char low
        34: .line 808
      StackMap locals:
      StackMap stack:
            iinc 5 /* inIx */ 1
            iinc 4 /* outIx */ 1
        end local 6 // char c
      StackMap locals:
      StackMap stack:
        35: iload 5 /* inIx */
            iload 3 /* inLength */
            if_icmplt 13
        36: .line 846
            aload 2 /* out */
            iload 4 /* outIx */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        37: .line 847
            goto 43
      StackMap locals:
      StackMap stack: java.lang.IndexOutOfBoundsException
        38: pop
        39: .line 852
            aload 2 /* out */
            invokevirtual java.nio.ByteBuffer.position:()I
            iload 5 /* inIx */
            iload 4 /* outIx */
            aload 2 /* out */
            invokevirtual java.nio.ByteBuffer.position:()I
            isub
            iconst_1
            iadd
            invokestatic java.lang.Math.max:(II)I
            iadd
            istore 6 /* badWriteIndex */
        start local 6 // int badWriteIndex
        40: .line 853
            new java.lang.ArrayIndexOutOfBoundsException
            dup
        41: .line 854
            new java.lang.StringBuilder
            dup
            ldc "Failed writing "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* in */
            iload 5 /* inIx */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            ldc " at index "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 6 /* badWriteIndex */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        42: .line 853
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // int badWriteIndex
        43: .line 856
      StackMap locals:
      StackMap stack:
            return
        end local 5 // int inIx
        end local 4 // int outIx
        end local 3 // int inLength
        end local 2 // java.nio.ByteBuffer out
        end local 1 // java.lang.CharSequence in
        end local 0 // com.google.protobuf.Utf8$Processor this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   44     0           this  Lcom/google/protobuf/Utf8$Processor;
            0   44     1             in  Ljava/lang/CharSequence;
            0   44     2            out  Ljava/nio/ByteBuffer;
            1   44     3       inLength  I
            2   44     4          outIx  I
            3   44     5           inIx  I
            4    6     6              c  C
            7    8     6              c  C
           14   35     6              c  C
           27   28     7            low  C
           29   34     7            low  C
           30   34     8      codePoint  I
           40   43     6  badWriteIndex  I
      Exception table:
        from    to  target  type
           3    10      38  Class java.lang.IndexOutOfBoundsException
          11    37      38  Class java.lang.IndexOutOfBoundsException
    MethodParameters:
      Name  Flags
      in    
      out   
}
SourceFile: "Utf8.java"
NestHost: com.google.protobuf.Utf8
InnerClasses:
  private DecodeUtil = com.google.protobuf.Utf8$DecodeUtil of com.google.protobuf.Utf8
  abstract Processor = com.google.protobuf.Utf8$Processor of com.google.protobuf.Utf8
  UnpairedSurrogateException = com.google.protobuf.Utf8$UnpairedSurrogateException of com.google.protobuf.Utf8