caravan-protobuf/src/main/java/com/ctrip/soa/caravan/protobuf/v2/customization/CustomProtobufParser.java
/**
   * @return Character value <b>minus 0x10000</c>; this so that caller
   *    can readily expand it to actual surrogates
   */
@return Character value minus 0x10000; this so that caller
can readily expand it to actual surrogates
@return Character value minus 0x10000 ; this so that caller can readily expand it to actual surrogates
private final int _decodeUTF8_4(int c) throws IOException
  {
    int d = _nextByte();
    if ((d & 0xC0) != 0x080) {
      _reportInvalidOther(d & 0xFF, _inputPtr);
    }
    c = (c & 0x07) << 6 | d & 0x3F;
    d = _nextByte();
    if ((d & 0xC0) != 0x080) {
      _reportInvalidOther(d & 0xFF, _inputPtr);
    }
    c = c << 6 | d & 0x3F;
    d = _nextByte();
    if ((d & 0xC0) != 0x080) {
      _reportInvalidOther(d & 0xFF, _inputPtr);
    }
    return (c << 6 | d & 0x3F) - 0x10000;
  }
private final int _decodeUTF8_4 ( int c ) throws IOException { int d = _nextByte ( ) ; if ( ( d & 0xC0 ) != 0x080 ) { _reportInvalidOther ( d & 0xFF , _inputPtr ) ; } c = ( c & 0x07 ) << 6 | d & 0x3F ; d = _nextByte ( ) ; if ( ( d & 0xC0 ) != 0x080 ) { _reportInvalidOther ( d & 0xFF , _inputPtr ) ; } c = c << 6 | d & 0x3F ; d = _nextByte ( ) ; if ( ( d & 0xC0 ) != 0x080 ) { _reportInvalidOther ( d & 0xFF , _inputPtr ) ; } return ( c << 6 | d & 0x3F ) - 0x10000 ; }
@return Character value <b>minus 0x10000</c>; this so that caller
    can readily expand it to actual surrogates
@return Character value <b > minus 0x10000< / c > ; this so that caller can readily expand it to actual surrogates