public function save()
 {
     if ($this->lockSystemChanges) {
         return;
     }
     if (!$this->changed) {
         return;
     }
     $xml = new SimpleXMLExtended('<system/>');
     $test = $xml->addChild('plugins');
     foreach ($this->plugins as $plugin) {
         $test->addXMLElement($this->SystemXMLConverter->pluginToXML($plugin));
     }
     $test = $xml->addChild('elements');
     foreach ($this->elements as $element) {
         $test->addXMLElement($this->SystemXMLConverter->elementToXML($element));
     }
     $test = $xml->addChild('aspects');
     foreach ($this->aspects as $aspect) {
         $test->addXMLElement($this->SystemXMLConverter->aspectToXML($aspect));
     }
     $test = $xml->addChild('cmsnavitems');
     foreach ($this->cmsNavItems as $navItem) {
         $test->addXMLElement($this->SystemXMLConverter->cmsNavItemToXML($navItem));
     }
     $newContents = $xml->asPrettyXML();
     $backup = $this->backupPath . '/system.' . $this->DateFactory->newStorageDate()->format('Y_m_d_His') . '.' . microtime(true) . '.xml';
     FileSystemUtils::safeCopy($this->systemXMLFile, $backup);
     FileSystemUtils::safeFilePutContents($this->systemXMLFile, $newContents);
     $this->ApplicationContext->clearContextFiles();
     $this->changed = false;
     $this->resetParsed();
 }