public void ExceptReturnsExpectedValues(int[] first, int[] second)
        {
            var nm1 = new NativeMethodsMock {
                ProcessIds = first
            };
            var pl1 = new ProcessList(nm1);

            pl1.Refresh();

            var nm2 = new NativeMethodsMock {
                ProcessIds = second
            };
            var pl2 = new ProcessList(nm2);

            pl2.Refresh();

            var expectedAdded   = second.Except(first).ToList();
            var expectedRemoved = first.Except(second).ToList();
            var expectedAll     = expectedAdded.Union(expectedRemoved).OrderBy(x => x).ToList();

            var diff = pl2.Diff(pl1).ToList();

            var added   = diff.Where(x => x.Added).Select(x => x.ProcessId).ToList();
            var removed = diff.Where(x => !x.Added).Select(x => x.ProcessId).ToList();
            var all     = diff.Select(x => x.ProcessId).ToList();

            Assert.Equal <int>(expectedAll, all);
            Assert.Equal(expectedAdded, added);
            Assert.Equal(expectedRemoved, removed);
        }