/** * Returns a marking after firing a sequence of transitions. The original marking is not changed. * * @param firingSequence sequence of transitions to be fired one after the other * @return a new marking after firing a sequence of transitions */ public Marking getMarkingAfterFiring(FiringSequence firingSequence) { Marking newMarking = new Marking(this); for (Transition transition : firingSequence) { if (!newMarking.isEnabled(transition)) { return null; } newMarking.fire(transition); } return newMarking; }