public void SetProperties(IPropertyProvider propertyValues, IFormatProvider provider)
        {
            var properties = _type.GetProperties();

            foreach (var property in properties)
            {
                var value = propertyValues.Get <object>(property.Name);
                if (value != null)
                {
                    // for array and list properties - split value on ';'s
                    if (property.PropertyType.IsArray ||
                        (property.PropertyType.IsGenericType &&
                         property.PropertyType.GenericTypeArguments.Length == 1 &&
                         property.PropertyType == typeof(List <>).MakeGenericType(property.PropertyType.GenericTypeArguments)))
                    {
                        value = value.ToString().Split(';').ToList();
                    }
                    value = UniversalConverter.ConvertToType(value, property.PropertyType, provider);
                    property.SetValue(_targetObject, value, null);
                    Trace.TraceInformation($"Set({_type.Name}) {property.Name} = {property.GetValue(_targetObject, null)}");
                }
            }
        }