   (if (empty? line) '()
     (if (string? line)
       (cons line (indent-lines lines))
-      (concat (indented-lines (indent-lines line)) (indent-lines lines)))))
+      (concat
+          (if (:noindent (meta line))
+              (indent-lines line)
+              (indented-lines (indent-lines line)))
+          (indent-lines lines)))))
 
 (defn spaces [& strings] (str-join " " strings))
 

(defmethod to-vhdl :if [[type condition & body]]
  (list
    (spaces "if" (to-vhdl condition) "then")
    (map to-vhdl body)
    "end if;"))

(defmethod to-vhdl :and [[type condA condB]]

    (str "architecture arch_" name " of " name " is")
    (map to-vhdl defs)
    "begin"
    (with-meta (map to-vhdl architecture) {:noindent true})
    (str "end arch_" name ";"))))))

; does not generate lines like block-level methods do
