 public protocol Archiver: NSCoding {
     typealias ValueType
 
+    /// Simple helper to unarchive any object, has a default implementation
+    static func unarchive(object: AnyObject?) -> ValueType?
+
+    /// Simple helper to unarchive many objects, has a default implementation
+    static func unarchive(objects: [AnyObject]) -> [ValueType]
+
     /// The value type which is being encoded/decoded
     var value: ValueType { get }
 

}



// MARK: Saveable

extension YapDB.Index: Saveable {


    public static func unarchive(object: AnyObject?) -> ValueType? {
        return (object as? Self)?.value
    }

    public static func unarchive(objects: [AnyObject]) -> [ValueType] {
        return objects.reduce([ValueType]()) { (var acc, object) -> [ValueType] in
            if let value = unarchive(object) {
                acc.append(value)
            }
            return acc
        }
    }
}

