 Returns a vector that looks like
 `[attributes-without-processed-ones new-generated-code]`. The method
 should remove the attributes it processed from the map."
-  (fn [el-type object-symbol attributes-map generated-code] el-type))
+  (fn [el-type object-symbol attributes-map generated-code container-type]
+    el-type))
 
 ;; ### ID attribute
 

  "Takes a tree of elements and generates the code to create a new
  element object, set all attributes onto it and add all inside
  elements to it. `make-ui-element` is called recursively on each
  internal element. Presumes the `*context*` var to be bound."
  [[el-type attributes & inside-elements]]
  (let [klass (classname el-type)
        obj (gensym (.getSimpleName klass))]
    `(let [~obj (new ~klass *context*)]
       ~@(process-attributes el-type obj attributes)
       ~@(map (fn [el]
                `(.addView ~obj ~(make-ui-element el)))
              inside-elements)
       ~obj)))

(defmacro defui [tree]
  (make-ui-element tree))

        [neko.context :only [*context*]]
        [neko.-utils :only [capitalize]])
  (:require [clojure.string :as string])
  (:import [android.widget Toast LinearLayout Button LinearLayout$LayoutParams]
           [android.view View ViewGroup$LayoutParams]
           android.content.Context))

;; ### Element relations
