InterruptibleIterator iter;
if (detachable) {
FileDataSource fds = new FileDataSource(filename, reader);
dataSources.add(fds);
SourceSwitchingIterator ssi = new SourceSwitchingIterator(fds);
iter = new ProblemReportingIterator(tablet.getTableId().toString(), filename, continueOnFailure, ssi);
} else {
iter = new ProblemReportingIterator(tablet.getTableId().toString(), filename, continueOnFailure, reader);
}
DataFileValue value = files.get(new FileRef(filename));
if (value.isTimeSet()) {
iter = new TimeSettingIterator(iter, value.getTime());
}