protected FluentEventArgs OnBeforeWriteRecord(ExpandoObject record, int lineNumber)
        {
            var args = new FluentEventArgs {
                Record = record, SkipRecord = false, LineChanged = false, LineNumber = lineNumber
            };

            BeforeWriteRecord?.Invoke(this, args);

            return(args);
        }
        protected FluentEventArgs OnAfterWriteRecord(string line, int lineNumber, ExpandoObject record)
        {
            var args = new FluentEventArgs {
                Record = record, SkipRecord = false, LineChanged = false, LineNumber = lineNumber, Line = line
            };

            AfterWriteRecord?.Invoke(this, args);

            return(args);
        }
        protected FluentEventArgs OnBeforeReadRecord(string line, int lineNumber)
        {
            var args = new FluentEventArgs {
                SkipRecord = false, LineChanged = false, LineNumber = lineNumber, Line = line
            };

            BeforeReadRecord?.Invoke(this, args);

            args.LineChanged = line != args.Line;

            return(args);
        }