private void Show_warnings()
        {
            var num_matched_third_party_records = Reconciliator.Num_matched_third_party_records();
            var num_matched_owned_records       = Reconciliator.Num_matched_owned_records();
            var num_third_party_records         = Reconciliator.Num_third_party_records();
            var num_owned_records = Reconciliator.Num_owned_records();

            if (num_matched_third_party_records != num_matched_owned_records)
            {
                _input_output.Output_line(ReconConsts.BadTallyMatchedItems);
                _input_output.Get_input(ReconConsts.EnterAnyKeyToContinue);
            }

            if (num_matched_third_party_records > num_owned_records)
            {
                _input_output.Output_line(ReconConsts.BadTallyNumMatchedThirdParty);
                _input_output.Get_input(ReconConsts.EnterAnyKeyToContinue);
            }

            if (num_matched_owned_records > num_third_party_records)
            {
                _input_output.Output_line(ReconConsts.BadTallyNumMatchedOwned);
                _input_output.Get_input(ReconConsts.EnterAnyKeyToContinue);
            }
        }
        private void Show_final_matches(List <ConsoleLine> final_matches)
        {
            _input_output.Output_line("");
            _input_output.Output_line($"There are {Reconciliator.Num_unmatched_third_party_records()} unmatched records from {Third_party_descriptor}:");
            _input_output.Output_string_list(Reconciliator.Unmatched_third_party_records());

            _input_output.Output_line("");
            _input_output.Output_line($"There are {Reconciliator.Num_unmatched_owned_records()} unmatched records from {Owned_file_descriptor}:");
            _input_output.Output_string_list(Reconciliator.Unmatched_owned_records());

            _input_output.Output_line("");
            _input_output.Output_line($"{Reconciliator.Num_matched_third_party_records()} records have been matched:");
            _input_output.Output_all_lines(final_matches);
            _input_output.Output_line("");

            _input_output.Output_line("You can reverse one match by entering the index of the match...");
            _input_output.Output_line("...or you can reverse multiple matches, by entering a comma-separated list of indices.");
            _input_output.Output_line("Like this: '0,3,23,5,24'");
            _input_output.Output_line("");
        }
        private void Show_final_results_of_matching()
        {
            _input_output.Output_line("");
            _input_output.Output_line($"We started with {Reconciliator.Num_third_party_records()} records from {Third_party_descriptor}");
            _input_output.Output_line($"We started with {Reconciliator.Num_owned_records()} records from {Owned_file_descriptor}");
            _input_output.Output_line($"Number of matched records from {Third_party_descriptor}: {Reconciliator.Num_matched_third_party_records()}");
            _input_output.Output_line($"Number of matched records from {Owned_file_descriptor}: {Reconciliator.Num_matched_owned_records()}");

            Recursively_show_final_matches_and_get_choices();
        }