Repository: PowerShell/PowerShell
File: src/Microsoft.PowerShell.Commands.Utility/commands/utility/Join-String.cs (C#)

Code before:
    }

    /// <summary>
    /// Provides completion for the Separator parameter of the Join-String cmdlet.
    /// </summary>
    public class SeparatorArgumentCompleter : IArgumentCompleter
    {
        private static readonly string NewLineText =
#if UNIX
        "`n";
#else
        "`r`n";
#endif

        private static readonly IReadOnlyList<string> s_separatorValues = new List<string>
        {
            ",",
            ", ",
            ";",
            "; ",
            NewLineText,
            "-",
            " ",
        };

        private static readonly Dictionary<string, (string Tooltip, string ListItemText)> s_separatorMappings = new()
        {
            { ",", (TabCompletionStrings.SeparatorCommaToolTip, "Comma") },
            { ", ", (TabCompletionStrings.SeparatorCommaSpaceToolTip, "Comma-Space") },
            { ";", (TabCompletionStrings.SeparatorSemiColonToolTip, "Semi-Colon") },
            { "; ", (TabCompletionStrings.SeparatorSemiColonSpaceToolTip, "Semi-Colon-Space") },
            { NewLineText, (StringUtil.Format(TabCompletionStrings.SeparatorNewlineToolTip, NewLineText), "Newline") },
            { "-", (TabCompletionStrings.SeparatorDashToolTip, "Dash") },
            { " ", (TabCompletionStrings.SeparatorSpaceToolTip, "Space") },
        };

        private static string GetSeparatorToolTip(string separator)
            => s_separatorMappings.TryGetValue(separator, out var mapping)
                ? mapping.Tooltip
                : separator;

        private static string GetSeparatorListItemText(string separator)
            => s_separatorMappings.TryGetValue(separator, out var mapping)
                ? mapping.ListItemText
                : separator;

        /// <summary>
        /// Returns completion results for Separator parameter.
        /// </summary>
        /// <param name="commandName">The command name.</param>
        /// <param name="parameterName">The parameter name.</param>

Review comment (suggestion):
```suggestion
        private static readonly Dictionary<string, (string Tooltip, string ListItemText)> s_separatorMappings = new(7)
```

Code after:
    }

    /// <summary>
    /// Provides completion for the Separator parameter of the Join-String cmdlet.
    /// </summary>
    public sealed class SeparatorArgumentCompleter : IArgumentCompleter
    {
        private static readonly string NewLineText =
#if UNIX
        "`n";
#else
        "`r`n";
#endif

        private static readonly Dictionary<string, (string Tooltip, string ListItemText)> s_separatorMappings = new(capacity: 7)
        {
            { ",", (TabCompletionStrings.SeparatorCommaToolTip, "Comma") },
            { ", ", (TabCompletionStrings.SeparatorCommaSpaceToolTip, "Comma-Space") },
            { ";", (TabCompletionStrings.SeparatorSemiColonToolTip, "Semi-Colon") },
            { "; ", (TabCompletionStrings.SeparatorSemiColonSpaceToolTip, "Semi-Colon-Space") },
            { NewLineText, (StringUtil.Format(TabCompletionStrings.SeparatorNewlineToolTip, NewLineText), "Newline") },
            { "-", (TabCompletionStrings.SeparatorDashToolTip, "Dash") },
            { " ", (TabCompletionStrings.SeparatorSpaceToolTip, "Space") },
        };

        private static readonly IEnumerable<string> s_separatorValues = s_separatorMappings.Keys;

        private static string GetSeparatorToolTip(string separator)
            => s_separatorMappings.TryGetValue(separator, out var mapping)
                ? mapping.Tooltip
                : separator;

        private static string GetSeparatorListItemText(string separator)
            => s_separatorMappings.TryGetValue(separator, out var mapping)
                ? mapping.ListItemText
                : separator;

        /// <summary>
        /// Returns completion results for Separator parameter.
        /// </summary>
        /// <param name="commandName">The command name.</param>
        /// <param name="parameterName">The parameter name.</param>
        /// <param name="wordToComplete">The word to complete.</param>
        /// <param name="commandAst">The command AST.</param>
        /// <param name="fakeBoundParameters">The fake bound parameters.</param>
        /// <returns>List of Completion Results.</returns>
        public IEnumerable<CompletionResult> CompleteArgument(
            string commandName,
            string parameterName,
            string wordToComplete,
            CommandAst commandAst,