public final int readVarLengthUnsigned() {
        byte b;
        int v = (b = ab[aboffset++]) & 0x7f;
        if (b >= 0) {
            return v;
        }
        v |= ((b = ab[aboffset++]) & 0x7f) << 7;
        if (b >= 0) {
            return v;
        }
        v |= ((b = ab[aboffset++]) & 0x7f) << 14;
        if (b >= 0) {
            return v;
        }
        v |= ((b = ab[aboffset++]) & 0x7f) << 21;
        if (b >= 0) {
            return v;
        }
        v |= ((b = ab[aboffset++]) & 0xf) << 28;
        return v;
    }
Read a size value and return a pointer to the end of a data section of that size

@return the pointer to the first byte after that section
main/src/main/java/cgeo/geocaching/brouter/util/ByteDataReader.java