     return try Unboxer.unboxerFromData(data, context: context).performUnboxing()
 }
 
-/// Unbox binary data into an array of `T`, optionally using a contextual object. Throws `UnboxError`.
+/// Unbox binary data into an array of `T`, optionally using a contextual object and/or invalid elements. Throws `UnboxError`.
 public func Unbox<T: Unboxable>(data: NSData, context: Any? = nil, allowInvalidElements: Bool = false) throws -> [T] {
     return try Unboxer.unboxersFromData(data, context: context).mapAllowingInvalidElements(allowInvalidElements, transform: {
         return try $0.performUnboxing()

    return try Unboxer(dictionary: dictionary, context: context).performUnboxingWithContext(context)
}

/// Unbox an array of JSON dictionaries into an array of `T` using a required contextual object. Throws `UnboxError`.
public func Unbox<T: UnboxableWithContext>(dictionaries: [UnboxableDictionary], context: T.ContextType, allowInvalidElements: Bool = false) throws -> [T] {
    return try dictionaries.mapAllowingInvalidElements(allowInvalidElements, transform: {
        try Unbox($0, context: context)

    return try Unboxer(dictionary: dictionary, context: context).performUnboxing()
}

/// Unbox an array of JSON dictionaries into an array of `T`, optionally using a contextual object and/or invalid elements. Throws `UnboxError`.
public func Unbox<T: Unboxable>(dictionaries: [UnboxableDictionary], context: Any? = nil, allowInvalidElements: Bool = false) throws -> [T] {
    return try dictionaries.mapAllowingInvalidElements(allowInvalidElements, transform: {
        try Unbox($0, context: context)
