anchor.diff:        procedure AfterExecute(const Command : TCommand); virtual;
         procedure BeforeExecute(const Command : TCommand); virtual;
         function  FindTransition(const FromState : TState; const OnCommand : TCommand) : TTransition;
  +      function  HasTransition(const FromState : TState; const OnCommand : TCommand;
  +        out Found : TTransition) : Boolean; overload;
       public
         constructor Create; overload; virtual; abstract;
         constructor Create(const InitialState : TState); overload; virtual;
  
positive.code: end;
  
  function TFiniteStateMachine<TState, TCommand, ErrorClass>.HasTransition(const FromState : TState;
    const OnCommand : TCommand) : Boolean;
  begin
    //TODO: implement
  end;
  
  function TFiniteStateMachine<TState, TCommand, ErrorClass>.HasTransition(const OnCommand : TCommand) : Boolean;
  
negative.code: 
  function TFiniteStateMachine<TState, TCommand, ErrorClass>.RemoveTransition(const FromState : TState;
    const OnCommand : TCommand) : IFiniteStateMachine;
    var
      T : TTransition;
  begin
    Result := Self;
  
    if HasTransition(FromState, OnCommand, T) then
      FTransitionTable.Remove(T);
  end;
  
  end.
  