   take no arguments."
   [scene]
   (add-hook scene :zoom-event)
-  (let [#^ZoomInteraction zoom-obj (ZoomInteraction. scene)]
+  (let [^ZoomInteraction zoom-obj (ZoomInteraction. scene)]
     (proxy [GInteraction] []
-      (event [#^GScene scn, evt, x, y]
+      (event [^GScene scn, evt, x, y]
 	(.event zoom-obj scn evt x y)
 	(when scn
 	  (call-hook-with scn :zoom-event)


(defn- add-node
  "Adds a node to scn at position [x y]."
  [#^GScene scn, x, y, name, [upper-label lower-label]]
  (let [#^GSegment upper-segment (GSegment.),
	#^GSegment lower-segment (GSegment.),
	object (proxy [GObject] []
		 (draw []
		   (let [upper-style (if (= 1 (-?> this upper-neighbors count))


(defn move-node-unchecked-to
  "Moves node to [new-x new-y]."
  [^GObject node, new-x, new-y]
  ;; update self position
  (dosync
   (alter (.getUserData node) assoc :position [new-x new-y]))
