private static global::RecordParser.Parsers.IVariableLengthReader <string[]> BuildReader <T>(Activate <T> activate) where T : ICsvReadable { var columnCount = activate().GetColumnCount(); var buffer = new string[columnCount]; var builder = new global::RecordParser.Builders.Reader.VariableLengthReaderSequentialBuilder <string[]>(); var cache = new InternPool(); for (var i = 0; i < columnCount; i++) { builder.Map(buildExpression(i), cache.Intern); } var reader = builder.Build(",", factory: () => buffer); return(reader); }