anchor.diff:  
   function TFiniteStateMachine<TState, TCommand, ErrorClass>.RemoveTransition(const FromState : TState;
     const OnCommand : TCommand) : IFiniteStateMachine;
  -begin
  -  Result := Self;
  -
  -  //TODO: implement
  +  var
  +    T : TTransition;
  +begin
  +  Result := Self;
  +
  +  if HasTransition(FromState, OnCommand, T) then
  +    FTransitionTable.Remove(T);
   end;
   
   end.
  
positive.code:       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;
  
negative.code: end;
  
  function TFiniteStateMachine<TState, TCommand, ErrorClass>.HasTransition(const FromState : TState;
    const OnCommand : TCommand; out Found : TTransition) : Boolean;
  begin
    Found  := FindTransition(FromState, OnCommand);
    Result := Assigned(Found);
  end;
  
  function TFiniteStateMachine<TState, TCommand, ErrorClass>.HasTransition(const FromState : TState;
    const OnCommand : TCommand) : Boolean;
    var
      T : TTransition;
  begin
    Result := HasTransition(FromState, OnCommand, T);
  end;
  
  function TFiniteStateMachine<TState, TCommand, ErrorClass>.HasTransition(const OnCommand : TCommand) : Boolean;
  