anchor.diff:  function TThreadFiniteStateMachine<TState, TCommand, ErrorClass>.AddTransition(const FromState, ToState : TState;
     const OnCommand : TCommand) : IFiniteStateMachine;
   begin
  -  Lock;
  -  try
  -    Result := FFiniteStateMachine.AddTransition(FromState, ToState, OnCommand);
  +  Result := Self;
  +
  +  Lock;
  +  try
  +    FFiniteStateMachine.AddTransition(FromState, ToState, OnCommand);
     finally
       Unlock;
     end;
  
positive.code: 
  function TThreadFiniteStateMachine<TState, TCommand, ErrorClass>.Execute(const Command : TCommand) : IFiniteStateMachine;
  begin
    Lock;
    try
      Result := FFiniteStateMachine.Execute(Command);
    finally
      Unlock;
    end;
  
negative.code: function TThreadFiniteStateMachine<TState, TCommand, ErrorClass>.AddTransition(const FromState, ToState : TState;
    const OnCommand : TCommand; const OnEnter : TOnEnterStateMethod; const OnExit : TOnExitStateMethod) : IFiniteStateMachine;
  begin
    Result := Self;
  
    Lock;
    try
      FFiniteStateMachine.AddTransition(FromState, ToState, OnCommand, OnEnter, OnExit);
    finally
      Unlock;
    end;
  