static Iterable<TabletMetadata> convert(Scanner input, EnumSet<FetchedColumns> fetchedColumns, boolean checkConsistency, boolean buildKeyValueMap) { Range range = input.getRange(); Function<Range,Iterator<TabletMetadata>> iterFactory = r -> { synchronized (input) { input.setRange(r); RowIterator rowIter = new RowIterator(input); return Iterators.transform(rowIter, ri -> convertRow(ri, fetchedColumns, buildKeyValueMap)); } }; if (checkConsistency) { return () -> new LinkingIterator(iterFactory, range); } else { return () -> iterFactory.apply(range); } }