   Class
   (class-desc [c] (class-desc (.getName c)))
   Keyword
-  (class-desc [k] @(check-valid "class keyword" class-keyword? k))
+  (class-desc [k]
+    (or @(check-valid "class keyword" class-keyword? k)
+        (throw (IllegalStateException.
+                (str k " class name proxy is only bound during bytecode emission")))))
   String
   (class-desc [s]
     (if (.contains s ".")

  [x]
  (if (instance? Label x)
    x
    (if (= ::unbound *labels*)
      (throw (IllegalStateException.
              "auto-generated labels only available when emitting method bytecode"))
      (or (get @*labels* x)


(def ^{:doc "The internal class name of the class being generated."
       :dynamic true}
  *this* nil)

(def ^{:doc "The internal superclass name of the class being generated."
       :dynamic true}
  *super* nil)

(def ^{:doc "The auto-generated labels of the method being emitted."
       :dynamic true}
  *labels* nil)

;;;

