public void MultipleListenersTest()
        {
            const string key1 = "first";
            const string key2 = "second";
            const string key3 = "third";

            for (int changingListeners = 0; changingListeners <= 2; changingListeners++)
            {
                for (int changedListeners = 0; changedListeners <= 2; changedListeners++)
                {
                    JsonArrayTest.MultipleListenersTestHelper <JsonObject>(
                        () => new JsonObject {
                        { key1, 1 }, { key2, 2 }
                    },
                        delegate(JsonObject obj)
                    {
                        obj[key2] = "hello";
                        obj.Remove(key1);
                        obj.Add(key3, "world");
                        obj.Clear();
                    },
                        new List <JsonValueChangeEventArgs>
                    {
                        new JsonValueChangeEventArgs("hello", JsonValueChange.Replace, key2),
                        new JsonValueChangeEventArgs(1, JsonValueChange.Remove, key1),
                        new JsonValueChangeEventArgs("world", JsonValueChange.Add, key3),
                        new JsonValueChangeEventArgs(null, JsonValueChange.Clear, null),
                    },
                        new List <JsonValueChangeEventArgs>
                    {
                        new JsonValueChangeEventArgs(2, JsonValueChange.Replace, key2),
                        new JsonValueChangeEventArgs(1, JsonValueChange.Remove, key1),
                        new JsonValueChangeEventArgs("world", JsonValueChange.Add, key3),
                        new JsonValueChangeEventArgs(null, JsonValueChange.Clear, null),
                    },
                        changingListeners,
                        changedListeners);
                }
            }
        }
 private static void TestEvents(JsonObject obj, Action <JsonObject> actionToTriggerEvent, List <Tuple <bool, JsonValue, JsonValueChangeEventArgs> > expectedEvents)
 {
     JsonArrayTest.TestEvents <JsonObject>(obj, actionToTriggerEvent, expectedEvents);
 }