public Holder<List<TypedRow>> previousImpl() {
boolean atLeastOneCursorHasNext = false;
List<TypedRow> rows = new ArrayList<TypedRow>();
for(int i = 0; i < cursors.size(); i++) {
DirectCursor<KeyValue<TypedRow>> cursor = cursors.get(i);
ViewInfo view = views.get(i);
Holder<KeyValue<TypedRow>> next = cursor.previousImpl();
if(next != null) {
atLeastOneCursorHasNext = true;
KeyValue<TypedRow> kv = next.getValue();
TypedRow row = kv.getValue();
if(row != null)
row.setView(view);
rows.add(row);
} else {
TypedRow row = new TypedRow(view, view.getTableMeta());
rows.add(row);
}
}
if(atLeastOneCursorHasNext)