An interface for classes capable of creating SimState subclasses.
Something that can be stepped
Stoppable objects can be prevented from being stepped any further by calling their stop() method.
Fires up a separate thread which runs until the simulation model requests it be halted.
A Steppable which calls an underlying method using Java's reflection system.
MultiStep takes an integer N, a boolean called countdown, and a steppable.
Spawns all the sequence elements in parallel on separate threads.
RandomSequence is a Sequence which executes its Steppable objects in random order each time.
Repeat is an abstract Steppable and Stoppable which generalizes the notion of repeated Steppables.
Schedule defines a threadsafe scheduling queue in which events can be scheduled to occur at future time.
Timestamps stored as keys in the heap.
Sequence is Steppable which holds an array of Steppables.
SimState represents the simulation proper.
A Steppable wrapper which can be stopped.
WeakStep is a wrapper for steppable objects in the situation where we only want the schedule to tenuously hold onto the steppable object -- that is, if everyone else has forgotten about the object, the schedule should as well.