protected IColumn computeNext() { if (reader == null) return endOfData(); while (true) { IColumn column = reader.pollColumn(); if (column == null) return endOfData(); if (isColumnNeeded(column)) return column; } }