public function addDocumentToDocumentPool(Document $document)
{
$documentId = (string) $document->getId();
if (!isset($this->documentPool[$documentId])) {
$this->documentPool[$documentId] = $document;
} else {
// merging because document after
// load and before getting in second place may be changed
// and this changes must be preserved:
//
// 1. Document loads and modifies in current session
// 2. Document loads modified in another session
// 3. Document loads once again in current session. Changes from stage 2 merges as unmodified
$this->documentPool[$documentId]->mergeUnmodified($document->toArray());
}
return $this;
}