anchor.diff:      private
         function GetCurrentState : TState;
         function GetPreviousState : TState;
  -    protected
  +    strict protected
         procedure AfterExecute(const Command : TCommand); virtual;
         procedure BeforeExecute(const Command : TCommand); virtual;
  +      function  FindTransition(const FromState : TState; const OnCommand : TCommand) : TTransition;
       public
         constructor Create; overload; virtual; abstract;
         constructor Create(const InitialState : TState); overload; virtual;
  
positive.code:   //TODO: implement
  end;
  
  function TFiniteStateMachine<TState, TCommand, ErrorClass>.GetCurrentState : TState;
  begin
    Result := FCurrentState;
  
negative.code: 
  function TFiniteStateMachine<TState, TCommand, ErrorClass>.GetReachableState(const OnCommand : TCommand) : TState;
  begin
    Result := GetReachableState(FCurrentState, OnCommand);
  end;
  
  function TFiniteStateMachine<TState, TCommand, ErrorClass>.HasTransition(const FromState : TState;
  