 }
 
 private extension Unboxable {
-    static func makeTransform() -> (Any) throws -> Self? {
+    static func makeTransform() -> UnboxTransform<Self> {
         return { try ($0 as? UnboxableDictionary).map(unbox) }
     }
 }
 
 private extension UnboxableWithContext {
-    static func makeTransform(context: ContextType) -> (Any) throws -> Self? {
+    static func makeTransform(context: ContextType) -> UnboxTransform<Self> {
         return {
             try ($0 as? UnboxableDictionary).map {
                 try unbox(dictionary: $0, context: context)

}

private extension UnboxCompatibleType where Self: Collection {
    static func makeTransform(allowInvalidElements: Bool) -> (Any) throws -> Self? {
        return {
            try self.unbox(value: $0, allowInvalidCollectionElements: allowInvalidElements)
        }

import CoreGraphics
#endif

// MARK: - API
    
/// Type alias defining what type of Dictionary that is Unboxable (valid JSON)
public typealias UnboxableDictionary = [String : Any]

// MARK: - Unbox functions

