anchor.diff:        Result := AsObject.ToString
       else
         Result := ToString;
  +end;
  +
  +constructor TFiniteStateMachine<TState, TCommand, ErrorClass>.Create;
  +begin
  +  Create(GetDefaultInitialState);
  +end;
  +
  +constructor TFiniteStateMachine<TState, TCommand, ErrorClass>.Create(const InitialState : TState);
  +begin
  +  Create(InitialState, nil, nil);
   end;
   
   constructor TFiniteStateMachine<TState, TCommand, ErrorClass>.Create(const InitialState : TState;
  
positive.code:   end;
  end;
  
  constructor TThreadFiniteStateMachine<TState, TCommand, ErrorClass>.Create;
  begin
    inherited Create;
  
negative.code:   end;
  end;
  
  function TThreadFiniteStateMachine<TState, TCommand, ErrorClass>.Execute(const Command : TCommand) : IFiniteStateMachine;
  begin
    Lock;
  