private function executeInserts(UnitOfWork $uow, array &$set)
 {
     $this->references = [];
     $queryWriter = new QueryWriter();
     $ordered = self::orderByType($uow->getDocumentInsertions(), $set);
     if (empty($ordered)) {
         return;
     }
     $docs = [];
     foreach ($ordered as $class => $inserts) {
         /** @var ClassMetadata $md */
         $md = $this->metadataFactory->getMetadataFor($class);
         if ($md->isEmbeddedDocument()) {
             continue;
         }
         switch (true) {
             case $md->isVertex():
                 foreach ($inserts as $oid => $doc) {
                     $id = $this->createDocVarReference($doc);
                     $data = $this->prepareData($md, $uow, $doc);
                     $queryWriter->addCreateVertexQuery($id->toValue(), $md->getOrientClass(), $data);
                     $docs[] = [$id, $doc, $md];
                 }
                 continue;
             case $md->isEdge():
                 foreach ($inserts as $oid => $doc) {
                     $id = $this->createDocVarReference($doc);
                     $data = $this->prepareData($md, $uow, $doc);
                     if (!property_exists($data, 'in')) {
                     }
                     if (!property_exists($data, 'out')) {
                     }
                     $in = $data->in;
                     $out = $data->out;
                     unset($data->in, $data->out);
                     $queryWriter->addCreateEdgeQuery($id->toValue(), $md->getOrientClass(), $out, $in, $data);
                     $docs[] = [$id, $doc, $md];
                 }
                 continue;
             default:
                 foreach ($inserts as $oid => $doc) {
                     $id = $this->createDocVarReference($doc);
                     $data = $this->prepareData($md, $uow, $doc);
                     $queryWriter->addInsertQuery($id->toValue(), $md->getOrientClass(), $data);
                     $docs[] = [$id, $doc, $md];
                 }
                 continue;
         }
     }
     $queries = $queryWriter->getQueries();
     if (!$queries) {
         // nothing to do
         return;
     }
     $parts = [];
     foreach ($docs as $k => list($v)) {
         $parts[] = sprintf('n%s : %s', $k, $v);
     }
     $queries[] = sprintf('return { %s }', implode(', ', $parts));
     $rids = $this->executeQueries($queries);
     foreach ($rids as $k => $rid) {
         if (isset($docs[$k])) {
             /** @var ClassMetadata $md */
             list($_, $doc, $md) = $docs[$k];
             unset($docs[$k]);
             $md->reflFields[$md->identifier]->setValue($doc, $rid);
             $data = $uow->getDocumentActualData($doc);
             $uow->registerManaged($doc, $rid, $data);
             $uow->raisePostPersist($md, $doc);
         }
     }
     if (!empty($docs)) {
         // we didn't receive info for all inserted documents
         throw new SQLBatchException('missing RIDs for one or more inserted documents');
     }
     $this->references = [];
 }