public void EntitiyGraphShapeUnionTest()
        {
            var shape1 = new EntityGraphShape()
                         .Edge <A, D>(A => A.DSet)
                         .Edge <A, B>(A => A.B);
            var shape2 = new EntityGraphShape()
                         .Edge <A, D>(A => A.DSet)
                         .Edge <A, B>(A => A.B)
                         .Edge <C, D>(C => C.D);
            var shape3 = shape1.Union(shape2);


            Assert.IsTrue(shape1.All(edge => shape3.Contains(edge)));
            Assert.IsTrue(shape2.All(edge => shape2.Contains(edge)));

            Assert.IsFalse(shape3.Any(edge => shape1.Contains(edge) == false && shape2.Contains(edge) == false));
            Assert.IsTrue(shape3.Count() == 3);
        }