         }
       }
     }
-    
+
     return notification
   }
   


      return
    }
    
    if fetchedObjects.count > 0 {
      var currentSectionName: ReactiveSetSectionName?
			var objects: [E] = []

			// Objects are sorted wrt to sections already.
      for (i, object) in fetchedObjects.enumerate() {
        let sectionName = ReactiveSetSectionName(object.valueForKeyPath(keyPath) as? String)

        if sectionName == currentSectionName {
          objects.append(object)

					if i < fetchedObjects.endIndex - 1 {
						// Last element must fall through so that the last section can be appended.
						continue
					}
        }

				if let currentSectionName = currentSectionName {
					let section = ObjectSetSection<E>(name: currentSectionName,
						array: objects)

					sections.append(section)
					objects = []
				}

				currentSectionName = sectionName
      }
    }
    
    isFetched = true
  }
  

  }

  public func fetch() throws {
		if isFetched {
			return
		}

    func completionBlock(result: NSAsynchronousFetchResult) {
      self.sectionize(result.finalResult as? [E] ?? [])
			eventObserver?.sendNext(.Reloaded)
