public static UIndex Read(BinaryReader reader)
{
int initial = reader.ReadByte(), value = initial & 63, code = 0, shift = 6;
if ((initial & 64) != 0) {
do {
value |= ((code = reader.ReadByte()) & 127) << shift;
shift += 7;
} while ((code & 128) != 0);
}
return (initial & 128) != 0 ? -value : value;
}