public int Write(byte[] array, int index)
{
uint uvalue = checked((uint)Value);
byte initial = (byte)((uvalue & 63u) | (uvalue > 63 ? 64u : 0u) | (Value < 0 ? 128u : 0u));
array[index++] = initial;
for (uvalue >>= 6; uvalue > 0; uvalue >>= 7) {
byte code = (byte)((uvalue & 127u) | (uvalue > 127u ? 128u : 0u));
array[index++] = code;
}
return index;
}