             [clojure.core :as c]
             [arcadia.internal.spec :as as])
   (:import [UnityEngine GameObject Component]))
-
-(defn- run-init [init-fn name]
-  (when-let [ent (init-fn)]
-    (when-not (instance? GameObject ent)
-      (throw
-        (Exception.
-          (str "Zero-argument arity of def, if present, must return a GameObject; instead getting a " (type ent)))))
-    ent))
 
 (s/def ::tail-impl
   (s/cat


Another example:

(def truck [x] ;; just the 1-ary body supplied
  (when x (destroy x)) ;; whatever it is, get rid of it
  (let [truck (create-primitive :cube)] ;; make a new one
    (set! (.name truck) \"truck\")
    (with-cmpt truck [tr Transform]
      (set! (.position tr) (arcadia.linear/v3 0 5 10))

  "def form for binding vars to GameObjects. Syntax is close to that of a defn, with
zero or one arguments supported:

(def car 
  ([] (or (object-named \"the car\")
          (let [car (create-primitive :cube)]
            (set! (.name car) \"the car\")
