public void should_not_return_unique_ids()
            {
                ClassWithId          object1 = new BuilderWithId().build();
                DifferentClassWithId object2 = new DifferentBuilderWithId().build();

                object1.Id.Should().Be(object2.Id);
            }
            public void should_return_unique_ids()
            {
                ClassWithId object1 = new BuilderWithId().build();
                ClassWithId object2 = new BuilderWithId().build();

                object1.Id.Should().NotBe(object2.Id);
            }
            public void should_be_thread_safe()
            {
                int         numberOfTasks = 8;
                Barrier     barrier       = new Barrier(numberOfTasks);
                List <Task> builderTasks  = new List <Task>();

                for (int j = 0; j < numberOfTasks; j++)
                {
                    builderTasks.Add(new Task(() =>
                    {
                        barrier.SignalAndWait();
                        var builder1 = new BuilderWithId();
                        var builder2 = new DifferentBuilderWithId();
                    }));
                }

                builderTasks.ForEach(x => x.Start());
                builderTasks.ForEach(x => x.Wait());
            }