/**
  * @param Status $status
  *
  * @return \DateTime
  */
 protected function getStartDate(Status $status = null)
 {
     $jobContext = $this->stepExecution->getJobExecution()->getExecutionContext();
     $initialSyncedTo = $jobContext->get(InitialSyncProcessor::INITIAL_SYNCED_TO);
     if ($initialSyncedTo) {
         return $initialSyncedTo;
     }
     // If connector has status use it's information for start date
     if ($status) {
         $data = $status->getData();
         if (empty($data[AbstractInitialProcessor::SKIP_STATUS])) {
             if (!empty($data[self::LAST_SYNC_KEY])) {
                 return new \DateTime($data[self::LAST_SYNC_KEY], new \DateTimeZone('UTC'));
             }
             return clone $status->getDate();
         }
     }
     // If there is no status and LAST_SYNC_KEY is present in contexts use it
     $lastSyncDate = $this->stepExecution->getExecutionContext()->get(self::LAST_SYNC_KEY);
     if ($lastSyncDate) {
         return $lastSyncDate;
     } elseif ($jobContext->get(self::LAST_SYNC_KEY)) {
         return $jobContext->get(self::LAST_SYNC_KEY);
     }
     return new \DateTime('now', new \DateTimeZone('UTC'));
 }