code: func (out *DataOutputImpl) WriteVInt(i int32) error {
  	for (i & ^0x7F) != 0 {
  		err := out.Writer.WriteByte(byte(i&0x7F) | 0x80)
  		if err != nil {
  			return err
  		}
  		i = int32(uint32(i) >> 7)
  	}
  	return out.Writer.WriteByte(byte(i))
  }
docs: /*
  Writes an int in a variable-length format. Writes between one and
  five bytes. Smaller values take fewer bytes. Negative numbers are
  supported, by should be avoided.
  
  VByte is a variable-length format. For positive integers, it is
  defined where the high-order bit of each byte indicates whether more
  bytes remain to be read. The low-order seven bits are appended as
  increasingly more significant bits in the resulting integer value.
  Thus values from zero to 127 may be stored in a single byte, values
  from 128 to 16,383 may be stored in two bytes, and so on.
  
  VByte Encoding Examle
  
  	| Value		| Byte 1		| Byte 2		| Byte 3		|
  	| 0				| 00000000	|
  	| 1				| 00000001	|
  	| 2				| 00000010	|
  	| ...			|
  	| 127			| 01111111	|
  	| 128			| 10000000	| 00000001	|
  	| 129			| 10000001	| 00000001	|
  	| 130			| 10000010	| 00000001	|
  	| ...			|
  	| 16,383	| 11111111	| 01111111	|
  	| 16,384	| 10000000	| 10000000	| 00000001	|
  	| 16,385	| 10000001	| 10000000	| 00000001	|
  	| ...			|
  
  This provides compression while still being efficient to decode.
  */