public int doDeserializeFromByteArray(byte[] byteArray, int startIndex)
            throws IOException, TikaException {
        AtomicInteger index = new AtomicInteger(startIndex);
        this.guidFileType = AdapterHelper.readGuid(byteArray, index.get());
        index.addAndGet(16);
        this.guidFile = AdapterHelper.readGuid(byteArray, index.get());
        index.addAndGet(16);
        this.guidLegacyFileVersion = AdapterHelper.readGuid(byteArray, index.get());
        index.addAndGet(16);
        this.guidFileFormat = AdapterHelper.readGuid(byteArray, index.get());
        index.addAndGet(16);
        this.rgbReserved = BitConverter.toUInt32(byteArray, index.get());
        index.addAndGet(4);
        this.packagingStart = new StreamObjectHeaderStart32bit();
        this.packagingStart.deserializeFromByteArray(byteArray, index.get());
        index.addAndGet(4);
        this.storageIndexExtendedGUID = BasicObject.parse(byteArray, index, ExGuid.class);
        this.guidCellSchemaId = AdapterHelper.readGuid(byteArray, index.get());
        index.addAndGet(16);
        AtomicReference<DataElementPackage> pkg = new AtomicReference<>();
        StreamObject.tryGetCurrent(byteArray, index, pkg, DataElementPackage.class);
        this.dataElementPackage = pkg.get();
        this.packagingEnd = new StreamObjectHeaderEnd16bit();
        this.packagingEnd.deserializeFromByteArray(byteArray, index.get());
        index.addAndGet(2);

        return index.get() - startIndex;
    }
This method is used to deserialize the Alternative Packaging 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 Alternative Packaging 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/AlternativePackaging.java