The Generate class extends Atom which means that event generation terminates instantaneously. Generating an event in a machine calls the machine newMove method to indicate that something new happens in the system; thus, instructions waiting for the event (see next 5.3) will have the possibility to see it as present during the current instant.
public class Generate extends Atom { private String eventName; public Generate(String eventName){ this.eventName = eventName; } final public boolean equals(Instruction inst){ return super.equals(inst) && eventName.equals(((Generate)inst).eventName); } final public String toString(){ return "generate " + eventName; } final protected void action(Machine machine){ Event event = machine.getEvent(eventName); machine.newMove(); event.generate(machine); } }