public function setDocument(Document $document)
{
parent::setDocument($document);
$source = ['doc' => $document->getData()];
if ($document->getDocAsUpsert()) {
$source['doc_as_upsert'] = true;
} elseif ($document->hasUpsert()) {
$upsert = $document->getUpsert()->getData();
if (!empty($upsert)) {
$source['upsert'] = $upsert;
}
}
$this->setSource($source);
return $this;
}