private void AddSerializer(StringBuilder source, IFieldSymbol field,
                                   char delimiter)
        {
            string fieldName = $"this.{field.FieldName()}";

            source.Append($"return {fieldName} != null ? string.Join('{delimiter}', {fieldName}) : null;");
        }
        private void AddDeserializer(StringBuilder source, IFieldSymbol field,
                                     char delimiter)
        {
            var arrayType = field.Type as IArrayTypeSymbol;

            string fieldName = $"this.{field.FieldName()}";

            source.AppendLine($@"
string[] split = value.Split('{delimiter}', StringSplitOptions.RemoveEmptyEntries);
{fieldName} = new {arrayType.ElementType}[split.Length];
for (int i = 0; i < split.Length; i++) {{");
            source.AppendLine(arrayType.ElementType.IsValueType
                ? $"{fieldName}[i] = {arrayType.ElementType}.Parse(split[i].Trim());"
                : $"{fieldName}[i] = split[i].Trim();");
            source.Append('}');
        }