public StatementEntryWithSourceData Parse(string[] csvRow)
        {
            if (csvRow == null)
            {
                throw new ArgumentNullException(nameof(csvRow));
            }

            // TODO: error/null value handling

            return(new StatementEntryWithSourceData
            {
                Date = CsvValueParser.ParseDateOrThrow(csvRow[columnMapping.Date], dateFormat).Date,
                Amount = CsvValueParser.ParseDecimalOrThrow(csvRow[columnMapping.Amount]),
                Details = csvRow[columnMapping.Details],
                SourceData = csvRow
            });
        }
        public ExpenseReportEntryWithSourceData Parse(string[] csvRow)
        {
            if (csvRow == null)
            {
                throw new ArgumentNullException(nameof(csvRow));
            }

            // TODO: error/null value handling

            return(new ExpenseReportEntryWithSourceData
            {
                Date = CsvValueParser.ParseDateOrThrow(csvRow[columnMapping.Date], dateFormat).Date,
                Amount = CsvValueParser.ParseDecimalOrThrow(csvRow[columnMapping.Amount]),
                IsPayPal = CsvValueParser.ParseBoolOrThrow(csvRow[columnMapping.IsPayPal]),
                Merchant = csvRow[columnMapping.Merchant],
                SourceData = csvRow
            });
        }