void ShowHelp(bool showSecondLevelHelp)
        {
            _assemblyInfo.ShowTitleLines();
            WriteLine(Usage);
            WriteLine(_("Options:"));
            var lines   = new ArrayList(_list.Count);
            int tabSize = 0;

            foreach (OptionDetails option in _list)
            {
                if (option.SecondLevelHelp == showSecondLevelHelp)
                {
                    string[] optionLines = option.ToString().Split('\n');
                    foreach (string line in optionLines)
                    {
                        int pos = line.IndexOf('\t');
                        if (pos > tabSize)
                        {
                            tabSize = pos;
                        }
                        lines.Add(line);
                    }
                }
            }
            tabSize += 2;
            foreach (string line in lines)
            {
                string[] parts = line.Split('\t');
                Write(parts[0].PadRight(tabSize));
                WriteLine(parts[1]);
                if (parts.Length > 2)
                {
                    var spacer = new string(' ', tabSize);
                    for (int i = 2; i < parts.Length; i++)
                    {
                        Write(spacer);
                        WriteLine(parts[i]);
                    }
                }
            }
            _assemblyInfo.ShowFooter();
        }