code: public synchronized void signal(String name) throws UnknownTransitionException {
          //check that start state defined
          if (start == null) {
              throw new IllegalStateException("The start sate is not defined");
          }
  
          //check that end state defined
          if (end == null) {
              throw new IllegalStateException("The end sate is not defined");
          }
  
          //ignore any signals if fsm reaches end state
  //        if (state == end) {
  //            return;
  //        }
  
          String old = state.getName();
          //switch to next state
          state = state.signal(name);
          if (logger != null) {
              logger.debug(String.format("current state=%s, signal=%s, transition to=%s", old, name, state.getName()));
          }
      }
docs: Processes transition.
  
  @param name the name of transition.