private int decodeVariableLengthInt(int base) {
        int result = base & 0x0F;
        base &= 0x30;
        switch (base) {
        case BASE5:
            result = result << 8 | (_bytes[_next++] & 0xFF);
            result = result << 8 | (_bytes[_next++] & 0xFF);
            // intentionally falls through

        case BASE3:
            result = result << 8 | (_bytes[_next++] & 0xFF);
            // intentionally falls through

        case BASE2:
            result = result << 8 | (_bytes[_next++] & 0xFF);
            // intentionally falls through

        case BASE1:
            break;
        }
        return result;
    }