     return try self.attribute(attribute.rawValue)
   }
 
-  public func arrayAttribute<T>(attribute: Attribute) throws -> [T]? {
-    return try self.arrayAttribute(attribute.rawValue)
-  }
-
   public func attribute<T>(attribute: String) throws -> T? {
     var value: AnyObject?
     let error = AXUIElementCopyAttributeValue(element, attribute, &value)

    return (unpackAXValue(value!) as! T)
  }

  public func arrayAttribute<T>(attribute: String) throws -> [T]? {
    guard let array: [AnyObject] = try self.attribute(attribute) else {
      return nil
    }
    return array.map({ unpackAXValue($0) as! T })
  }

  // Checks if the value is an AXValue and if so, unwraps it.
  // If the value is an AXUIElement, wraps it in UIElement.

    }
  }

  // Checks if the value is one supported by AXValue and if so, wraps it.
  // If the value is a UIElement, unwraps it to an AXUIElement.
  private func packAXValue(value: Any) -> AnyObject {
