public void Equals_EqualityComparisonApplied()
        {
            List <IntWrapper> source1 = new List <IntWrapper>()
            {
                new IntWrapper()
                {
                    Value = 5
                },
                new IntWrapper()
                {
                    Value = 4
                },
                new IntWrapper()
                {
                    Value = 3
                }
            };
            List <IntWrapper> source2 = new List <IntWrapper>()
            {
                new IntWrapper()
                {
                    Value = 3
                },
                new IntWrapper()
                {
                    Value = 2
                },
                new IntWrapper()
                {
                    Value = 1
                },
                new IntWrapper()
                {
                    Value = 0
                }
            };
            List <IntWrapper> result = source1.Union(source2, ProjectedEqualityComparer.Create <IntWrapper, int>(
                                                         (x, y) => { return(x == y); },
                                                         s => s.Value)).ToList();

            for (int i = 0; i < result.Count; i++)
            {
                Assert.IsTrue(result.Where(x => x.Value == i).Count() == 1);
            }

            Assert.IsTrue(result.Count == 6);
            Assert.IsTrue(result.Where(x => x.Value == 3).Count() == 1);
        }