 (defn solution-getProblemFacts [this]
   (ArrayList.))
 
-(defn- getValue [this k]
-  (let [state (.state this)] (.get @state k)))
-
-(defn- setValue [this k v]
-  (let [state (.state this)]
-    (dosync (alter state assoc k v)) v))
-
 (defn solution-setScore [this score]
   (setValue this :score score))
 

   [org.optaplanner.core.api.score.buildin.hardsoft HardSoftScore]
   [schedule HardSoftSolution]
   [java.util ArrayList]))

(gen-class 
 :name ^{PlanningSolution {}} schedule.types.ScheduleSolution

(gen-class 
 :name ^{PlanningEntity {}} schedule.types.Event
 :prefix "event-"
 :init init
 :state state
 :methods [[^{PlanningVariable {"valueRangeProviderRefs" ["slotRange"]}} getSlot [] Object]
           [setSlot [Object] void]])

(defn event-init []
  [[] (ref {})])

(defn event-getSlot [this]
  (getValue this :slot))

(defn event-setSlot [this item]
  (setValue this :slot item))