         
         public func isAttribute() -> Bool {
             return true;
+        }
+
+        public func isArray() -> Bool {
+            return elementType != nil // what about other container types: set, dictionary, etc.
+        }
+
+        public func getElementType() -> Any.Type {
+            return elementType!
         }
         
         public func get(object: AnyObject!) -> Any? {

            optional = true
        }

        //if let array = value as? ArrayType {
        //    print(array.elementType())
        //}
        
        return AttributeDescriptor(bean: self, name: name, index: index, overallIndex: overallIndex, type: type, optional: optional)
    }
    
    private func analyze() throws {

        
        // override
        
        init(bean: BeanDescriptor, name: String, index: Int, overallIndex: Int, type: Any.Type, optional: Bool)  {
            target = try! BeanDescriptor.forClass(type as! AnyClass)
            
            super.init(bean: bean, name: name, index: index, overallIndex: overallIndex, type: type, elementType: type /* TODO */, optional: optional);
        }
        
        override public func isAttribute() -> Bool {
