public TRecordType Get_most_recent_row_containing_text <TRecordType>( string sheet_name, string text_to_search_for, List <int> expected_column_numbers) where TRecordType : ICSVRecord, new() { var row_number = _spreadsheet_io.Find_row_number_of_last_row_with_cell_containing_text( sheet_name, text_to_search_for, expected_column_numbers); var csv_record = new TRecordType(); csv_record.Read_from_spreadsheet_row(_spreadsheet_io.Read_specified_row(sheet_name, row_number)); return(csv_record); }