protected override void Arrange()
            {
                _suppliedSourceEntityExtension1 = Stub <ISynchronizable>();

                _suppliedSourceEntityExtension1
                .Expect(x => x.Synchronize(Arg <object> .Is.Anything))
                .Return(true);

                // Source extension entry, mapped from the resource object, will be a "transient" entity
                var sourceExtensions = new Dictionary <string, object>();

                _suppliedSourceEntity = new FakeEntityWithExtensions(sourceExtensions);

                // Target extension entries during synchronization are "persistent" entities loaded through NHibernate, and due to the NHibernate mapping approach for extensions, will be a list with a single "persistent" entity
                _suppliedTargetEntityExtension1 = Stub <ISynchronizable>();

                var targetExtensions = new Dictionary <string, object>
                {
                    {
                        "Extension1", new List <ISynchronizable>
                        {
                            _suppliedTargetEntityExtension1
                        }
                    }
                };

                _suppliedTargetEntity = new FakeEntityWithExtensions(targetExtensions);
            }
            protected override void Arrange()
            {
                _suppliedSourceEntityExtension1 = Stub <ISynchronizable>();
                _suppliedSourceEntityExtension2 = Stub <ISynchronizable>();

                // First extension has modifications
                _suppliedSourceEntityExtension1
                .Expect(x => x.Synchronize(Arg <object> .Is.Anything))
                .Return(true);

                // Second extension has no modifications, but should not overwrite state
                _suppliedSourceEntityExtension2
                .Expect(x => x.Synchronize(Arg <object> .Is.Anything))
                .Return(false);

                // Source extension entry, mapped from the resource object, will be a ArrayList of "transient" entities
                var sourceExtensions = new Dictionary <string, object>
                {
                    {
                        "Extension1", new ArrayList
                        {
                            _suppliedSourceEntityExtension1
                        }
                    },
                    {
                        "Extension2", new ArrayList
                        {
                            _suppliedSourceEntityExtension2
                        }
                    }
                };

                _suppliedSourceEntity = new FakeEntityWithExtensions(sourceExtensions);

                // Target extension entries during synchronization are "persistent" entities loaded through NHibernate, and due to the NHibernate mapping approach for extensions, will be a list with a single "persistent" entity
                _suppliedTargetEntityExtension1 = Stub <ISynchronizable>();
                _suppliedTargetEntityExtension2 = Stub <ISynchronizable>();

                var targetExtensions = new Dictionary <string, object>
                {
                    {
                        "Extension1", new List <ISynchronizable>
                        {
                            _suppliedTargetEntityExtension1
                        }
                    },
                    {
                        "Extension2", new List <ISynchronizable>
                        {
                            _suppliedTargetEntityExtension2
                        }
                    }
                };

                _suppliedTargetEntity = new FakeEntityWithExtensions(targetExtensions);
            }