     :else [obj]))
 
 
+
+
+(defn- wrap-in-do
+  [expressions]
+  (cond
+    (not (instance? List expressions)) expressions
+    (= 0 (count expressions)) (throw (new NotImplementedException))
+    (= 1 (count expressions)) (first expressions)
+    :else `(do ~@expressions)))
+
+
 ;; HELPER
 (defn merge-items
   "Takes two items and joins them as a single sequence."

    :prefix "-"
    :main false))


(defn upper-first
  [string]

  (let [names (into [] (map #(symbol (. % getText)) (. ctx name)))
        vals (into [] (map #(.. this (visitExpression %)) (. ctx exp)))
        bindings (apply concat (zip names vals))
        expressions (map #(. this (visitStatementTerm %)) (. ctx terms))]
    `(let [~@bindings] ~@expressions)))



(defn -visitConditional
  [this ^JestParser$ConditionalContext ctx]

  (let [conditions (map #( .. this (visitExpression %)) (merge-items (. ctx ifCondition) (. ctx elifExpression)))
        results (map #(.. this (visitBlock %)) (merge-items (. ctx iftrue) (. ctx elifBlock)))
        else (if (. ctx elseBlock) (.. this (visitBlock (. ctx elseBlock))) nil)
        single-if (= (. conditions size) 1)]

    (cond
