private void ComparePluginLocation(OldPluginLocation oldLocation, PluginLocation newLocation)
        {
            if (oldLocation == null)
            {
                return;
            }

            newLocation.Should().NotBeNull();

            var propertiesToCompare = new HashSet <string>
            {
                nameof(OldPluginLocation.DllHash),
                nameof(OldPluginLocation.DllPath),
                nameof(OldPluginLocation.LastModifiedDateTime),
                nameof(OldPluginLocation.VendorVersion),
                nameof(OldPluginLocation.PluginVendor),
                nameof(OldPluginLocation.PluginName),
                nameof(OldPluginLocation.PluginProduct),
                nameof(OldPluginLocation.VstPluginId)
            };
            var comparer = new PropertyComparisonHelper(oldLocation, newLocation);

            comparer.CompareProperties(propertiesToCompare);

            comparer.GetUnvisitedProperties().Should().BeEmpty();
        }
        private void MigratePluginLocation(Plugin oldPlugin, PluginLocation oldLocation,
                                           NewModels.PluginLocation newLocation)
        {
            var propertiesToMigrate = new HashSet <string>
            {
                nameof(PluginLocation.DllHash),
                nameof(PluginLocation.DllPath),
                nameof(PluginLocation.PluginName),
                nameof(PluginLocation.PluginName),
                nameof(PluginLocation.PluginVendor),
                nameof(PluginLocation.PluginProduct),
                nameof(PluginLocation.VstPluginId),
                nameof(PluginLocation.VendorVersion),
                nameof(PluginLocation.LastModifiedDateTime),
            };

            foreach (var propertyName in propertiesToMigrate)
            {
                var oldValue = PropertyHelper.GetPropertyValue(oldLocation, propertyName);
                PropertyHelper.SetPropertyValue(newLocation, propertyName, oldValue);
            }

            newLocation.HasMetadata = oldPlugin.HasMetadata;
        }