 	}
 
 	/// Returns a `[BaseMapple]` using transform or throws an error.
-	public func value<Transform: TransformType>(_ key: String, using transform: Transform) throws -> [Transform.Object] {
+	public func value<Transform: TransformType>(_ key: String, using transform: Transform, file: StaticString = #file, function: StaticString = #function, line: UInt = #line) throws -> [Transform.Object] {
 		let currentValue = self.currentValue(for: key)
 		guard let jsonArray = currentValue as? [Any] else {
-			throw MapError(key: key, currentValue: currentValue, reason: "Cannot cast to '[Any]' ")
+			throw MapError(key: key, currentValue: currentValue, reason: "Cannot cast to '[Any]'", file: file, function: function, line: line)
 		}
 		return try jsonArray.enumerated().map { i, json -> Transform.Object in
 			guard let object = transform.transformFromJSON(json) else {
-				throw MapError(key: "\(key)[\(i)]", currentValue: json, reason: "Cannot transform to '\(Transform.Object.self)' using \(transform)")
+				throw MapError(key: "\(key)[\(i)]", currentValue: json, reason: "Cannot transform to '\(Transform.Object.self)' using \(transform)", file: file, function: function, line: line)
 			}
 			return object
 		}

	}

	/// Returns a `[String: BaseMappable]` using transform or throws an error.
	public func value<Transform: TransformType>(_ key: String, using transform: Transform) throws -> [String: Transform.Object] {
		let currentValue = self.currentValue(for: key)
		guard let jsonDictionary = currentValue as? [String: Any] else {
			throw MapError(key: key, currentValue: currentValue, reason: "Cannot cast to '[String: Any]'")
		}
		var value: [String: Transform.Object] = [:]
		for (key, json) in jsonDictionary {
			guard let object = transform.transformFromJSON(json) else {
				throw MapError(key: key, currentValue: json, reason: "Cannot transform to '\(Transform.Object.self)' using \(transform)")
			}
			value[key] = object
		}

	// MARK: [BaseMappable]

	/// Returns a `[BaseMappable]` or throws an error.
	public func value<T: BaseMappable>(_ key: String, file: StaticString = #file, function: StaticString = #function, line: UInt = #line) throws -> [T] {
		let currentValue = self.currentValue(for: key)
		guard let jsonArray = currentValue as? [Any] else {
			throw MapError(key: key, currentValue: currentValue, reason: "Cannot cast to '[Any]'", file: file, function: function, line: line)
		}
		return try jsonArray.enumerated().map { i, json -> T in
      return try Mapper<T>().mapOrFail(JSONObject: json)
