   (let [[sym decl] (get-arg symbol? decl)
 	[doc decl] (get-arg string? decl)
 	[attr-map body] (get-arg map? decl)
-	metadata (merge (meta &form) {:doc doc} attr-map)]
+	metadata (merged-metadata &form doc attr-map)]
     `(def-unless-nested
        (test-case ~(find-locals &env)
 		  (fn ~(find-local-binding-forms &env) ~@body) ~metadata))))

	[attr-map decl] (get-arg map? decl)
	[bindings body] (get-arg vector? decl)
	children (vec body)
	metadata (merge (meta &form) {:doc doc} attr-map)]
    (assert (vector? bindings))
    (assert (even? (count bindings)))
    (let [binding-forms (firsts bindings)

  "Concatenate strings, with spaces in between, skipping nil."
  [& args]
  (apply str (interpose \space (remove nil? args))))

(defn- merged-metadata [form docstring extra-attr-map]
  (merge {:doc docstring, :file *file*, :ns *ns*} (meta form) extra-attr-map))

;;; Local Variable Scope

