@Override
    protected int doDeserializeFromByteArray(byte[] byteArray,
                                             int startIndex)
            throws IOException // return the length consumed
    {
        BitReader bitReader = new BitReader(byteArray, startIndex);
        int numberOfContinousZeroBit = 0;
        while (numberOfContinousZeroBit < 8 && bitReader.moveNext()) {
            if (!bitReader.getCurrent()) {
                numberOfContinousZeroBit++;
            } else {
                break;
            }
        }

        switch (numberOfContinousZeroBit) {
            case 0:
                this.decodedValue = bitReader.readUInt64(7);
                this.type = CompactUint7bitType;
                return 1;

            case 1:
                this.decodedValue = bitReader.readUInt64(14);
                this.type = CompactUint14bitType;
                return 2;

            case 2:
                this.decodedValue = bitReader.readUInt64(21);
                this.type = CompactUint21bitType;
                return 3;

            case 3:
                this.decodedValue = bitReader.readUInt64(28);
                this.type = CompactUint28bitType;
                return 4;

            case 4:
                this.decodedValue = bitReader.readUInt64(35);
                this.type = CompactUint35bitType;
                return 5;

            case 5:
                this.decodedValue = bitReader.readUInt64(42);
                this.type = CompactUint42bitType;
                return 6;

            case 6:
                this.decodedValue = bitReader.readUInt64(49);
                this.type = CompactUint49bitType;
                return 7;

            case 7:
                this.decodedValue = bitReader.readUInt64(64);
                this.type = CompactUint64bitType;
                return 9;

            case 8:
                this.decodedValue = 0;
                this.type = CompactUintNullType;
                return 1;

            default:
                throw new IllegalArgumentException(
                        "Failed to parse the Compact64bitInt, the type value is unexpected");
        }
    }
This method is used to deserialize the Compact64bitInt basic object from the specified byte
array and start index.

@param byteArray  Specify the byte array.
@param startIndex Specify the start index from the byte array.
@return Return the length in byte of the Compact64bitInt basic object.
tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/fsshttpb/streamobj/basic/Compact64bitInt.java