docs: public void addState(String name, S state)
      {
          AbstractState old = states.put(name, new StateWrapper(name, state));
          if (old != null)
          {
              throw new IllegalArgumentException("state "+name+" exists already");
          }
      }