     func format(unboxedValue: UnboxRawValueType) -> UnboxFormattedType?
 }
 
+/// Type alias defining a transform type (used internally only)
+public typealias UnboxTransform<T> = (Any) throws -> T?
+
 // MARK: - Default protocol implementations
 
 public extension UnboxableRawType {

import CoreGraphics
#endif

// MARK: - Type aliases
    
/// 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: UnboxTransform<R>) throws -> R {
        var currentMode = UnboxingMode.dictionary(self.dictionary)
        let components = path.components
        let lastKey = try components.last.orThrow(.emptyKeyPath)
