@Override
  public BytesRefIterator iterator() throws IOException {
    if (sorted == null) {
      closeWriter();

      sorted = Files.createTempFile(OfflineSorter.getDefaultTempDir(), "RefSorter-", ".sorted");
      boolean success = false;
      try {
        sort.sort(input, sorted);
        success = true;
      } finally {
        if (success) {
          Files.delete(input);
        } else {
          IOUtils.deleteFilesIgnoringExceptions(input);
        }
      }

      input = null;
    }

    return new ByteSequenceIterator(new OfflineSorter.ByteSequencesReader(sorted));
  }