 import CoreGraphics
 #endif
 
-// MARK: - Type aliases
+// MARK: - API
     
 /// Type alias defining what type of Dictionary that is Unboxable (valid JSON)
 public typealias UnboxableDictionary = [String : Any]
-
-/// Type alias defining a transform type (used internally only)
-public typealias UnboxTransform<T> = (Any) throws -> T?
 
 // MARK: - Unbox functions
 

}

private extension Unboxer {
    func unbox<R>(path: UnboxPath, transform: (Any) throws -> R?) throws -> R {
        var currentMode = UnboxingMode.dictionary(self.dictionary)
        let components = path.components
        let lastKey = try components.last.orThrow(.emptyKeyPath)

}

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