   }
 
   // Helper: Packs names, values into dictionary
-  private func packMultiAttrValues<Attr>(attributes: [Attr], values: [AnyObject]) throws -> [Attr: AnyObject] {
-    var result = [Attr: AnyObject]()
+  private func packMultiAttrValues<Attr>(attributes: [Attr], values: [AnyObject]) throws -> [Attr: Any] {
+    var result = [Attr: Any]()
     for (index, attribute) in attributes.enumerate() {
       if try checkMultiAttrValue(values[index]) {
-        result[attribute] = values[index]
+        result[attribute] = unpackAXValue(values[index])
       }
     }
     return result

      throw error
    }

    return (value as! T)
  }

  /// Sets the value of `attribute` to `value`.

  ///
  /// - note: Presumably you would use this API for performance, though it's not explicitly
  ///         documented by Apple that there is actually a difference.
  public func getMultipleAttributes(names: Attribute...) throws -> [Attribute: Any] {
    return try getMultipleAttributes(names)
  }

  public func getMultipleAttributes(attributes: [Attribute]) throws -> [Attribute: Any] {
    let values = try fetchMultiAttrValues(attributes.map({ $0.rawValue }))
    return try packMultiAttrValues(attributes, values: values)
  }

  public func getMultipleAttributes(attributes: [String]) throws -> [String: Any] {
    let values = try fetchMultiAttrValues(attributes)
    return try packMultiAttrValues(attributes, values: values)
  }
