anchor.diff:    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;
   begin
     Result := HasTransition(FCurrentState, OnCommand);
  
positive.code: end;
  
  function TFiniteStateMachine<TState, TCommand, ErrorClass>.Execute(const Command : TCommand) : IFiniteStateMachine;
  begin
    Result := Self;
  
    //TODO: implement
  end;
  
  function TFiniteStateMachine<TState, TCommand, ErrorClass>.FindTransition(const FromState : TState;
  
negative.code: 
  function TFiniteStateMachine<TState, TCommand, ErrorClass>.GetReachableState(const FromState : TState;
    const OnCommand : TCommand) : TState;
    var
      T : TTransition;
  begin
    Result := GetReachableState(FromState, OnCommand, T);
  end;
  
  function TFiniteStateMachine<TState, TCommand, ErrorClass>.GetReachableState(const FromState : TState;
    const OnCommand : TCommand; out Transition : TTransition) : TState;
  begin
    if HasTransition(FromState, OnCommand, Transition) then
      Result := FTransitionTable[Transition]
    else
      //TODO: raise exception
  end;
  
  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;
    const OnCommand : TCommand) : Boolean;
    var
      T : TTransition;
  begin
    Result := HasTransition(FromState, OnCommand, T);
  end;
  
  function TFiniteStateMachine<TState, TCommand, ErrorClass>.HasTransition(const FromState : TState;
  