public override string Convert(string argName, object value)
        {
            if (value is IDictionary <string, string> dictionary)
            {
                var builder = new StringBuilder();

                foreach (var pair in dictionary)
                {
                    if (builder.Length > 0)
                    {
                        builder.Append(" ");
                    }

                    string escapedValue = ArgumentSerializationUtility.EscapeValue($"\"{pair.Value}\"");

                    builder.Append(base.Convert(argName, $"{pair.Key}={escapedValue}"));
                }

                return(builder.ToString() ?? string.Empty);
            }

            throw new NotSupportedException($"{nameof(value)} must be of type IDictionary<string, string>.");
        }
        public override string Convert(string argName, object value)
        {
            if (value is IEnumerable <Option> options)
            {
                var builder = new StringBuilder();

                foreach (var option in options)
                {
                    if (builder.Length > 0)
                    {
                        builder.Append(":");
                    }

                    bool hasName = false;

                    if (!string.IsNullOrWhiteSpace(option?.Name))
                    {
                        hasName = true;
                        builder.Append($"{option.Name}");
                    }

                    if (!string.IsNullOrWhiteSpace(option?.Value))
                    {
                        if (hasName)
                        {
                            builder.Append("=");
                        }
                        builder.Append(ArgumentSerializationUtility.EscapeValue(option.Value));
                    }
                }

                return(builder.Length > 0 ? base.Convert(argName, builder) : string.Empty);
            }

            throw new NotSupportedException($"{nameof(value)} must be of type IEnumerable<Option>.");
        }