public void ComplexDataStructure2EqualType()
        {
            // arrange
            var t1 = new OtherType()
            {
                Id = Guid.Parse("8e6ce36f-3ce4-4d2f-bff8-6e78db373001"), Name = "type_1"
            };
            var t2_1 = new DotNetType()
            {
                Id = Guid.Parse("8e6ce36f-3ce4-4d2f-bff8-6e78db373002"), Name = "type_2", Type = typeof(bool)
            };
            var t2_2 = new DotNetType()
            {
                Id = Guid.Parse("8e6ce36f-3ce4-4d2f-bff8-6e78db373002"), Name = "type_2", Type = typeof(bool)
            };
            var t3 = new DotNetType()
            {
                Id = Guid.Parse("8e6ce36f-3ce4-4d2f-bff8-6e78db373003"), Name = "type_3", Type = typeof(bool)
            };
            var t4 = new DotNetType()
            {
                Id = Guid.Parse("8e6ce36f-3ce4-4d2f-bff8-6e78db373004"), Name = "type_4", Type = typeof(int)
            };

            // act & assert
            Assert.IsTrue(t1.Equals(t1));
            Assert.IsFalse(t1.Equals(t2_1));
            Assert.IsFalse(t1.Equals(t2_2));
            Assert.IsFalse(t1.Equals(t3));
            Assert.IsFalse(t1.Equals(t4));

            Assert.IsFalse(t2_1.Equals(t1));
            Assert.IsTrue(t2_1.Equals(t2_1));
            Assert.IsTrue(t2_1.Equals(t2_2));
            Assert.IsFalse(t2_1.Equals(t3));
            Assert.IsFalse(t2_1.Equals(t4));

            Assert.IsFalse(t2_2.Equals(t1));
            Assert.IsTrue(t2_2.Equals(t2_1));
            Assert.IsTrue(t2_2.Equals(t2_2));
            Assert.IsFalse(t2_2.Equals(t3));
            Assert.IsFalse(t2_2.Equals(t4));

            Assert.IsFalse(t3.Equals(t1));
            Assert.IsFalse(t3.Equals(t2_1));
            Assert.IsFalse(t3.Equals(t2_2));
            Assert.IsTrue(t3.Equals(t3));
            Assert.IsFalse(t3.Equals(t4));

            Assert.IsFalse(t4.Equals(t1));
            Assert.IsFalse(t4.Equals(t2_1));
            Assert.IsFalse(t4.Equals(t2_2));
            Assert.IsFalse(t4.Equals(t3));
            Assert.IsTrue(t4.Equals(t4));
        }