private void CheckPageListsPopulated()
{
if (mReversePageLookup != null)
return;
mReversePageLookup = new Hashtable();
// Add each node to a list which represent the nodes found on each page.
foreach (Node node in Document.GetChildNodes(NodeType.Any, true))
{
// Headers/Footers follow sections. They are not split by themselves.
if (IsHeaderFooterType(node))
continue;
int startPage = GetPage(node);
int endPage = GetPageEnd(node);
for (int page = startPage; page <= endPage; page++)
{
if (!mReversePageLookup.ContainsKey(page))
mReversePageLookup.Add(page, new ArrayList());
((ArrayList)mReversePageLookup[page]).Add(node);
}
}
}