     }
 }
 
-public extension Unboxing where Self.StructureType == Self, Self: RawRepresentable, Self.RawValue :Unboxing {
+public extension Unboxing where Self.StructureType == Self, Self: RawRepresentable, Self.RawValue: Unboxing {
     static func unbox(value: AnyObject) throws -> StructureType {
         let rawValue = try Self.RawValue.unbox(value)
         if let r = rawValue as? Self.RawValue, enumValue = self.init(rawValue: r) {

    }

    /**
     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)


- 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 curried object construction
  like in Argo (https://github.com/thoughtbot/Argo) which is also where the gists for the unboxing
  code originates from.
- Unboxing defines the 'Unboxing' protocol which a type has to conform to in order to be able
  to be unboxed
*/
