public CommandArguments(LeafCommand command, IReadOnlyCollection <string> arguments)
        {
            this.Command   = command ?? throw new ArgumentNullException(nameof(command));
            this.Arguments = arguments ?? Array.Empty <string>();

            this.argumentsAsDictionary = this.ProcessArgumentsAsDictionary();
        }
        private void AddCommandOptions(Command rootCommand, LeafCommand command)
        {
            if (command.Options is null)
            {
                return;
            }

            string usingCommandArgument = string.Join(" ", command.Path.Select(x => x.Label));

            foreach (CommandOption option in command.Options)
            {
                string description = string.Join(" ", option.Description).Replace("\"", "\\\"");

                this.lines.Add(
                    "complete " +
                    $"--command {rootCommand.Label} " +
                    $"--condition \"__fish_using_command {usingCommandArgument}\" " +
                    "--no-files " +
                    $"--long-option {option.Label.TrimStart('-')} " +
                    $"--description \"{description}\""
                    );
            }
        }