code: public void writeRawVarint32(int value) throws IOException {
      while (true) {
        if ((value & ~0x7F) == 0) {
          writeRawByte(value);
          return;
        } else {
          writeRawByte((value & 0x7F) | 0x80);
          value >>>= 7;
        }
      }
    }
docs: Encode and write a varint.  {@code value} is treated as
  unsigned, so it won't be sign-extended if negative.