anchor.diff:          end;
   
           TTransitionTable = class (TObjectDictionary<TTransition, TState>);
  -        //replace TState to custom object container with OnEnter/OnExit logic?
       strict private
         FCommandComparer : ICommandComparer;
         FCurrentState : TState;
  
positive.code: function TFiniteStateMachine<TState, TCommand, ErrorClass>.AddTransition(const FromState, ToState : TState;
    const OnCommand : TCommand; const OnEnter : TOnEnterStateProc; const OnExit : TOnExitStateProc) : IFiniteStateMachine;
  begin
    FTransitionTable.Add(
      TTransition.Create(FromState, OnCommand, FStateComparer, FCommandComparer, OnEnter, OnExit), ToState);
  end;
  
negative.code:               const StateComparer : IStateComparer; const CommandComparer : ICommandComparer); overload;
              constructor Create(const AFromState : TState; const AOnCommand : TCommand;
                const StateComparer : IStateComparer; const CommandComparer : ICommandComparer;
                const OnEnterState : TOnEnterStateMethod; const OnExitState : TOnExitStateMethod); overload;
              constructor Create(const AFromState : TState; const AOnCommand : TCommand;
                const StateComparer : IStateComparer; const CommandComparer : ICommandComparer;
                const OnEnterState : TOnEnterStateProc; const OnExitState : TOnExitStateProc); overload;
  
              function  Equals(Obj : TObject) : Boolean; override; final;
              function  GetHashCode : Integer; override; final;
  
              procedure PerformEnterStateAction(const CurrentState : TState);
              procedure PerformExitStateAction(const NewState : TState);
  
  