private object ReadRecord(object reuse, Decoder decoder, RecordAccess recordAccess, IEnumerable <FieldReader> readSteps) { var rec = recordAccess.CreateRecord(reuse); foreach (FieldReader fr in readSteps) { fr(rec, decoder); // TODO: on exception, report offending field } return(rec); }