public void Immutable_When_CreatingABuilderFromExisting()
        {
            MyImmutableEntity original = new MyImmutableEntity.Builder
            {
                MyField1 = 42
            };

            MyImmutableEntity newInstance = original
                                            .WithMyField1(43);

            original.MyField1.Should().Be(42);
            newInstance.MyField1.Should().Be(43);
        }
        public void Immutable_When_Using_Options()
        {
            var list = ImmutableList <string> .Empty;

            var original        = MyImmutableEntity.None;
            var modifiedBuilder = original.WithList(list);
            Option <MyImmutableEntity> modifiedOption = modifiedBuilder;
            MyImmutableEntity          modified       = modifiedOption;

            original.MatchNone().Should().BeTrue();
            modifiedOption.MatchSome().Should().BeTrue();
            modified.MyField1.Should().Be(MyImmutableEntity.Default.MyField1);
            modified.MyField2.Should().Be(MyImmutableEntity.Default.MyField2);
            modified.Date.Should().Be(MyImmutableEntity.Default.Date);
            modified.List.Should().BeSameAs(list);
        }