anchor.diff:              procedure PerformEnterStateAction(const CurrentState : TState);
               procedure PerformExitStateAction(const NewState : TState);
   
  -            property FromState : TState read FFromState;
  -            property OnCommand : TCommand read FOnCommand;
  +            property  FromState : TState read FFromState;
  +            property  OnCommand : TCommand read FOnCommand;
           end;
   
           TTransitionTable = class (TObjectDictionary<TTransition, TState>);
  
positive.code:       procedure RaiseOuterException(E : Exception); virtual;
      protected
        class function GetDefaultInitialState : TState; virtual;
      public
        constructor Create; overload;
        constructor Create(const InitialState : TState); overload; virtual;
  
negative.code:     FTransitionTable.Remove(T);
  end;
  
  function TFiniteStateMachine<TState, TCommand, ErrorClass>.StateToStr(const State : TState) : String;
  begin
    with TValue.From<TState>(State) do
      if TypeInfo.Kind = tkClass then
        Result := AsObject.ToString
      else
        Result := ToString;
  end;
  
  end.
  