private ChangeData CreateChangeData(DescriptorData descriptorData, IDictionary <object, IEnumerable <NamedValue> > propertyValuesBeforeSave)
        {
            var entityDescriptorData = descriptorData as EntityDescriptorData;

            if (entityDescriptorData != null)
            {
                IEnumerable <NamedValue> propertyValues;
                ExceptionUtilities.Assert(propertyValuesBeforeSave.TryGetValue(entityDescriptorData.Entity, out propertyValues), "Could not find property values for descriptor: {0}", entityDescriptorData);

                return(EntityChangeData.Create(entityDescriptorData, propertyValues));
            }

            var linkDescriptorData = descriptorData as LinkDescriptorData;

            ExceptionUtilities.CheckObjectNotNull(linkDescriptorData, "Descriptor was neither an entity nor a link");

            return(LinkChangeData.Create(linkDescriptorData));
        }