code: public static void generate(ConfigurationImpl configuration,
                                  IndexBuilder indexbuilder) {
          SplitIndexWriter indexgen;
          DocPath filename = DocPath.empty;
          DocPath path = DocPaths.INDEX_FILES;
          try {
              Set<Object> keys = new TreeSet<>(Arrays.asList(indexbuilder.elements()));
              keys.addAll(configuration.tagSearchIndexKeys);
              List<Object> elements = new ArrayList<>(keys);
              ListIterator<Object> li = elements.listIterator();
              while (li.hasNext()) {
                  Object ch = li.next();
                  filename = DocPaths.indexN(li.nextIndex());
                  indexgen = new SplitIndexWriter(configuration,
                          path.resolve(filename),
                          indexbuilder, elements, li.previousIndex(), li.nextIndex());
                  indexgen.generateIndexFile((Character) ch);
                  if (!li.hasNext()) {
                      indexgen.createSearchIndexFiles();
                  }
                  indexgen.close();
              }
          } catch (IOException exc) {
              configuration.standardmessage.error(
                          "doclet.exception_encountered",
                          exc.toString(), filename.getPath());
              throw new DocletAbortException(exc);
          }
      }
docs: Generate separate index files, for each Unicode character, listing all
  the members starting with the particular unicode character.
  
  @param indexbuilder IndexBuilder built by {@link IndexBuilder}
  @throws DocletAbortException