private FieldMapping ConvertClipboardRowToFieldDataMapping(string pastedRow)
        {
            var result          = new FieldMapping();
            var pastedRowValues = pastedRow.Split(new char[] { '\t' });

            for (int i = 0; i < pastedRowValues.Count(); i++)
            {
                var value = (object)pastedRowValues[i];

                // SP - the column names match the property names
                // columns are loaded dynamically with the same object property names
                var    column       = fieldMappingsDataGridView.Columns[i];
                string propertyName = column.Name;

                PropertyInfo fieldDataMappingProperty = result.GetType().GetProperty(propertyName, BindingFlags.Public | BindingFlags.Instance);
                if (fieldDataMappingProperty != null && fieldDataMappingProperty.CanWrite && value != null)
                {
                    if (value.GetType() == fieldDataMappingProperty.PropertyType == false)
                    {
                        throw new InvalidValueException($"Unable to set property '{fieldDataMappingProperty.Name}' type '{fieldDataMappingProperty.GetType()}' the value provided '{value}' type '{value.GetType()}'");
                    }

                    fieldDataMappingProperty.SetValue(result, Convert.ChangeType(value, fieldDataMappingProperty.PropertyType), null);
                }
            }

            return(result);
        }