protected function processICalEvent(ICalEvent $icalevent)
 {
     global $CONFIG;
     $importedEventRepo = new ImportedEventRepository();
     $eventRecurSetRepo = new EventRecurSetRepository();
     $importedEventChangesToSave = false;
     $importedEvent = $importedEventRepo->loadByImportURLIDAndImportId($this->importURLRun->getImportURL()->getId(), $icalevent->getUid());
     if (!$importedEvent) {
         if (!$icalevent->isDeleted()) {
             $importedEvent = new ImportedEventModel();
             $importedEvent->setImportId($icalevent->getUid());
             $importedEvent->setImportUrlId($this->importURLRun->getImportURL()->getId());
             $this->setOurEventFromIcalEvent($importedEvent, $icalevent);
             $importedEventChangesToSave = true;
         }
     } else {
         if ($icalevent->isDeleted()) {
             if (!$importedEvent->getIsDeleted()) {
                 $importedEvent->setIsDeleted(true);
                 $importedEventChangesToSave = true;
             }
         } else {
             $importedEventChangesToSave = $this->setOurEventFromIcalEvent($importedEvent, $icalevent);
             // if was deleted, undelete
             if ($importedEvent->getIsDeleted()) {
                 $importedEvent->setIsDeleted(false);
                 $importedEventChangesToSave = true;
             }
         }
     }
     $ietieo = new ImportedEventToImportedEventOccurrences($importedEvent);
     if ($ietieo->getToMultiples()) {
         $eventRecurSet = $importedEvent != null ? $eventRecurSetRepo->getForImportedEvent($importedEvent) : null;
         $this->importedEventOccurrenceToEvent->setEventRecurSet($eventRecurSet, true);
     } else {
         $this->importedEventOccurrenceToEvent->setEventRecurSet(null, false);
     }
     foreach ($ietieo->getImportedEventOccurrences() as $importedEventOccurrence) {
         if ($importedEventOccurrence->getEndAt()->getTimeStamp() < TimeSource::time()) {
             $this->inpast++;
         } else {
             if ($importedEventOccurrence->getStartAt()->getTimeStamp() > TimeSource::time() + $CONFIG->importURLAllowEventsSecondsIntoFuture) {
                 $this->tofarinfuture++;
             } else {
                 if ($this->saved < $this->limitToSaveOnEachRun) {
                     // Imported Event
                     if ($importedEventChangesToSave) {
                         if ($importedEvent->getId()) {
                             if ($importedEvent->getIsDeleted()) {
                                 $importedEventRepo->delete($importedEvent);
                             } else {
                                 $importedEventRepo->edit($importedEvent);
                             }
                         } else {
                             $importedEventRepo->create($importedEvent);
                             // the ID will not be set until this point. So make sure we copy over the ID below just to be sure.
                         }
                         $importedEventChangesToSave = false;
                     }
                     // ... and the Imported Event Occurrence becomes a real event!
                     $importedEventOccurrence->setId($importedEvent->getId());
                     if ($this->importedEventOccurrenceToEvent->run($importedEventOccurrence)) {
                         $this->saved++;
                     }
                 }
             }
         }
     }
 }