There is a corner case if there's an empty record reader in the middle that is not the last one (could happen at the end of a file in the middle of the last record). if recordReaders is not empty at that point it should recursively call nextKeyValue().