         
         self.managedObject = managedObject
         self.context = context
-        
-        self.decodable = Decodable.init(managedObject: managedObject)
         
         self.privateObserver = PrivateManagedObjectObserver(managedObject: managedObject, context: context)
     }

        
        let decodable = Decodable.init(managedObject: managedObject)
        
        self.decodable = decodable
        
        self.event.updated(decodable)
    }
    
    private func observer(observer: PrivateManagedObjectObserver, managedObjectDeleted managedObject: NSManagedObject) {
        
        self.decodable = nil
        
        self.event.deleted()
    }
}

public final class ManagedObjectObserver<Decodable: CoreDataDecodable> {
    
    // MARK: - Properties
    
    public let managedObject: NSManagedObject
    
