 
 - Unboxing can fail, so the unboxed value is an either type that explains the error via TypeMismatch
 - Unboxing cannot utilize the Swift or the NSManagedObject reflection mechanisms as both are too
-  dynamic for Swift's typechecker. So we utilize custom operators and curryed object construction
+  dynamic for Swift's typechecker. So we utilize custom operators and curried object construction
   like in Argo (https://github.com/thoughtbot/Argo) which is also where the gists for the unboxing
-  code originates from
+  code originates from.
 - Unboxing defines the 'Unboxing' protocol which a type has to conform to in order to be able
   to be unboxed
 */

    }

    /**
     Default implementation of save function since Swift Structs can't have inheritance we have to do this by this way.
     */
    mutating func defaultSave(context: NSManagedObjectContext) throws {
        try self.mutatingToObject(context)


- Currently, there's no support for NSSet
*/
extension Array {
    public static func unbox<T: Unboxing where T == T.StructureType>(value: AnyObject) throws -> [T] {
        switch value {
