public OneNoteDocument createOneNoteDocumentFromDirectFileResource(
            OneNoteDirectFileResource oneNoteDirectFileResource) throws IOException, TikaException {
        OneNoteDocument oneNoteDocument = new OneNoteDocument();
        OneNotePtr oneNotePtr = new OneNotePtr(oneNoteDocument, oneNoteDirectFileResource);
        // First parse out the header.
        oneNoteDocument.header = oneNotePtr.deserializeHeader();

        if (oneNoteDocument.header.isMsOneStoreFormat()) {
            // Now that we parsed the header, the "root file node list"
            oneNotePtr.reposition(oneNoteDocument.header.fcrFileNodeListRoot);
            FileNodePtr curPath = new FileNodePtr();
            oneNotePtr.deserializeFileNodeList(oneNoteDocument.root, curPath);
        }
        return oneNoteDocument;
    }
Create a OneNoteDocument object.
<p>
This won't actually have the binary data of the sections, but it's more of a
metadata structure that contains
the general structure of the container and contains offset positions of where to find the
binary data we care about.
<p>
OneNote files are of format:
<p>
The header (section 2.3.1 in MS-ONESTORE) is the first 1024 bytes of the file. It contains
references to the other structures in the
file as well as metadata about the file.
The free chunk list (section 2.3.2 in MS-ONESTORE) defines where there are free spaces in
the file where data can be written.
The transaction log (section 2.3.3 in MS-ONESTORE) stores the state and length of each
file node list (section 2.4 in MS-ONESTORE)
in the file.
The hashed chunk list (section 2.3.4 in MS-ONESTORE) stores read-only objects in the file
that can be referenced by multiple
revisions (section 2.1.8 in MS-ONESTORE).
The root file node list (section 2.1.14 in MS-ONESTORE) is the file node list that is the
root of the tree of all file node lists in
the file.
<p>
In this method we first parse the header.
<p>
After parsing the header, this results in header.fcrFileNodeListRoot that points to the first

@param oneNoteDirectFileResource A random access file resource used as the source of the
                                 content.
@return A parsed one note document. This document does not contain any of the binary data,
rather it just contains
the data pointers and metadata.
@throws IOException Will throw IOException in typical IO issue situations.
tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/onenote/OneNoteParser.java