code: @Override
  	public void setCurrent(T stateful, State<T> current, State<T> next) throws StaleStateException {
  		synchronized(stateful) {
  			if (this.getCurrent(stateful).equals(current)) {
  				this.setCurrent(stateful, next);
  			} else {
  				throw new StaleStateException();
  			}
  		}
  	}
docs: /*
  Serialize all update of state.  Ensure that the current state is the same State that
  was evaluated. If not, throw an exception
  
  (non-Javadoc)
  @see org.fsm.Persister#setCurrent(org.fsm.model.State, org.fsm.model.State)