/**
  * Saves any unsaved changes in this context and it's Managed Objects into the Persistent Store
  *
  * @see MManagedObjectContext::hasChanges()
  *
  * @return bool Whether or not the save was successful
  */
 public function save()
 {
     if ($this->hasChanges()) {
         $saveRequest = new MSaveRequest($this);
         $insertedObjects = new MMutableArray();
         $updatedObjects = new MMutableArray();
         foreach ($this->managedObjects()->toArray() as $object) {
             if ($object->hasChanges()) {
                 if ($object->objectID() == MManagedObject::UNKNOWN_ID) {
                     $insertedObjects->addObject($object);
                 } else {
                     $updatedObjects->addObject($object);
                 }
             }
         }
         $saveRequest->setInsertManagedObjects($insertedObjects);
         $saveRequest->setUpdateManagedObjects($updatedObjects);
         $saveRequest->setDeleteManagedObjects($this->deletedObjects());
         $affectedObjects = $this->persistentStoreCoordinator()->executeRequest($saveRequest);
         foreach ($affectedObjects->toArray() as $object) {
             if (!$this->deletedObjects->removeObject($object)) {
                 $object->persistChanges();
             }
         }
         return true;
     } else {
         return false;
     }
 }
 /**
  * @internal
  *
  * @return MArray
  */
 protected function executeSaveRequest(MSaveRequest $request)
 {
     $affectedObjects = new MMutableArray();
     // Save new objects
     foreach ($request->insertManagedObjects()->toArray() as $object) {
         $this->saveManagedObject($object);
         $affectedObjects->addObject($object);
     }
     // Save updated objects
     foreach ($request->updateManagedObjects()->toArray() as $object) {
         $this->saveManagedObject($object);
         $affectedObjects->addObject($object);
     }
     // Remove deleted objects
     foreach ($request->deleteManagedObjects()->toArray() as $object) {
         $this->deleteManagedObject($object);
         $affectedObjects->addObject($object);
     }
     return $affectedObjects;
 }