anchor.diff:  function TThreadFiniteStateMachine<TState, TCommand, ErrorClass>.AddTransition(const FromState, ToState : TState;
     const OnCommand : TCommand; const OnEnter : TOnEnterStateProc; const OnExit : TOnExitStateProc) : IFiniteStateMachine;
   begin
  -  Lock;
  +  InternalLock;
     try
       FFiniteStateMachine.AddTransition(FromState, ToState, OnCommand, OnEnter, OnExit);
     finally
  -    Unlock;
  +    InternalUnlock;
     end;
   
     Result := Self;
  
positive.code: function TThreadFiniteStateMachine<TState, TCommand, ErrorClass>.AddTransition(const FromState, ToState : TState;
    const OnCommand : TCommand; const OnEnter : TOnEnterStateMethod; const OnExit : TOnExitStateMethod) : IFiniteStateMachine;
  begin
    Lock;
    try
      FFiniteStateMachine.AddTransition(FromState, ToState, OnCommand, OnEnter, OnExit);
    finally
      Unlock;
    end;
  
    Result := Self;
  
negative.code:       function  GetReachableState(const OnCommand : TCommand) : TState; overload;
        function  HasTransition(const FromState : TState; const OnCommand : TCommand) : Boolean; overload;
        function  HasTransition(const OnCommand : TCommand) : Boolean; overload;
        function  Lock : IFiniteStateMachine;
        function  RemoveAllTransitions : IFiniteStateMachine;
        function  RemoveTransition(const FromState : TState; const OnCommand : TCommand) : IFiniteStateMachine;
        procedure Unlock;
  
        property  CurrentState : TState read GetCurrentState;
        property  PreviousState : TState read GetPreviousState;
  