docs: public StateMachineDefinition<S, T> addTransition(T newTransition, S fromState, S toState){
  		Preconditions.checkArgument(newTransition != null, "Transition name cannot be empty");
  		Integer fromStateId = getStateId(fromState);
  		Integer toStateId = getStateId(toState);
  		
  		Transition<S> transition = new Transition<S>();
  		transition.fromStateId = fromStateId;
  		transition.toStateId = toStateId;
  		transition.fromState = fromState;
  		transition.toState = toState;
  		
  		Transition<S> previousValue = transitions.put(new DoubleValueBean<S, T>(fromState, newTransition), transition);
  		if (previousValue != null){
  			throw new IllegalArgumentException("Transition '" + transition + "' from state '" + fromState + "' has already been defined.");
  		}
  		validTransitions.get(fromState).add(newTransition);
  		return this;
  	}