public void ABCCompare_ReturnsTrueWhenFirstUnderlyingTypeIsEqual()
        {
            var x   = new UnionABC(1);
            var y   = new UnionABC(1);
            var sut = UnionABC.Comparer;

            Assert.IsTrue(sut.Equals(x, y));
        }
        public void ABCCompare_ReturnsFalseWhenUnderlyingTypeIsDifferent()
        {
            var x   = new UnionABC(1);
            var y   = new UnionABC(new B());
            var sut = UnionABC.Comparer;

            Assert.IsFalse(sut.Equals(x, y));
        }
        public void ABCCompare_ReturnsTrueWhenDerivedTypeIsDifferent()
        {
            var x   = new UnionABC(1);
            var y   = new UnionABCPrime(1);
            var sut = UnionABC.Comparer;

            Assert.IsTrue(sut.Equals(x, y));
        }
        public void ABCCompare_ReturnsFalseWhenThirdUnderlyingTypeIsNotEqual()
        {
            var x   = new UnionABC(new C());
            var y   = new UnionABC(new C());
            var sut = UnionABC.Comparer;

            Assert.IsFalse(sut.Equals(x, y));
        }