anchor.diff:    Result := THashBobJenkins.GetHashValue(Value, SizeOf(Value));
   end;
   
  +{ TestTThreadFiniteStateMachine }
  +
  +procedure TestTThreadFiniteStateMachine.SetUp;
  +begin
  +  FFiniteStateMachine := TThreadFiniteStateMachine<
  +    TestTFiniteStateMachine.TStateType,
  +    TestTFiniteStateMachine.TCommandType,
  +    TestTFiniteStateMachine.ETestException
  +  >.Create;
  +end;
  +
   initialization
     // Register any test cases with the test runner
     RegisterTest(TestTFiniteStateMachine.Suite);
  +  RegisterTest(TestTThreadFiniteStateMachine.Suite);
   end.
  -
  
positive.code:           (ID: 1; Flag: False),
            (ID: 2; Flag: True)
          );
    strict private
      FFiniteStateMachine: IFiniteStateMachine;
    private
      FEnterStateCalled,
      FExitStateCalled : Boolean;
  
      procedure OnEnterState(const PreviousState, CurrentState : TStateType; const UsedCommand : TCommandType);
      procedure OnExitState(const CurrentState, NewState : TStateType; const UsedCommand : TCommandType);
    public
      procedure SetUp; override;
      procedure TearDown; override;
  
negative.code:     procedure TestRemoveTransition;
    end;
  
    TestTThreadFiniteStateMachine = class(TestTFiniteStateMachine)
    public
      procedure SetUp; override;
    end;
  
  implementation
  
  uses
  