private void Write_multiple_line_headline(StreamWriter writer, Data_private_readWriteOptions_class readWriteOptions)
        {
            char lineDelimiter          = readWriteOptions.LineDelimiter;
            int  columns_length         = ColChar.Columns.Length;
            int  max_stringSplit_length = -1;

            string[]   splitStrings;
            string[][] splitStrings_array = new string[columns_length][];

            #region Fill splitStrings_array and get max stringSplit length
            for (int indexC = 0; indexC < columns_length; indexC++)
            {
                splitStrings = ColChar.Columns[indexC].Full_column_name.Split(Colchar_column_line_class.Full_name_datalimiter);
                splitStrings_array[indexC] = splitStrings;
                max_stringSplit_length     = Math.Max(max_stringSplit_length, splitStrings.Length);
            }
            #endregion

            #region Write multiple headlines
            for (int indexSplit = 0; indexSplit < max_stringSplit_length; indexSplit++)
            {
                writer.Write("RowNames");
                for (int indexColumn = 0; indexColumn < columns_length; indexColumn++)
                {
                    splitStrings = splitStrings_array[indexColumn];
                    writer.Write("{0}{1}", readWriteOptions.LineDelimiter, splitStrings[indexSplit]);
                }
                writer.WriteLine("RowNames2", lineDelimiter);
                writer.WriteLine("{0}ReadWrite_subcellular_processes", lineDelimiter);
            }
            #endregion
        }
        public void Write_with_multiple_line_headline(string subdirectory, string file_name)
        {
            Data_private_readWriteOptions_class readWriteOptions = new Data_private_readWriteOptions_class(subdirectory, file_name);
            StreamWriter writer = new StreamWriter(readWriteOptions.Complete_fileName);

            Write_multiple_line_headline(writer, readWriteOptions);
            Write_data(writer, readWriteOptions);
            writer.Close();
        }
        private void Write_simple_headline(StreamWriter writer, Data_private_readWriteOptions_class readWriteOptions)
        {
            int  columns_length = ColChar.Columns.Length;
            char lineDelimiter  = readWriteOptions.LineDelimiter;

            writer.Write("RowNames");
            for (int indexC = 0; indexC < columns_length; indexC++)
            {
                writer.Write("{0}{1}", readWriteOptions.LineDelimiter, ColChar.Columns[indexC].Full_column_name);
            }
            writer.Write("{0}RowNames2", lineDelimiter);
            writer.WriteLine("{0}ReadWrite_subcellular_processes", lineDelimiter);
        }
        private void Write_data(StreamWriter writer, Data_private_readWriteOptions_class readWriteOptions)
        {
            int  columns_length = ColChar.Columns.Length;
            char lineDelimiter  = readWriteOptions.LineDelimiter;

            Data_line_class data_line;
            int             data_length = Data.Length;

            for (int indexD = 0; indexD < data_length; indexD++)
            {
                data_line = Data[indexD];
                writer.Write("{0}", data_line.NCBI_official_symbol);
                for (int indexC = 0; indexC < columns_length; indexC++)
                {
                    writer.Write("{0}{1}", lineDelimiter, data_line.Columns[indexC]);
                }
            }
        }