private int ReadVariantSize ()
{
int size = 0;
// If sizeSpec < 0, then it is variant size specifier.
// Otherwise it is fixed size s = sizeSpec + 1 byte(s).
int d = 0;
do {
byte got = ReadByteOrError ();
size += (got & 0x7F) << d;
d += 7;
if (got < 0x80)
break;
} while (true);
return size;
}