public void initialize(
     String directoryProviderName, Properties properties, BuildContext context) {
   this.properties = properties;
   this.directoryProviderName = directoryProviderName;
   // source guessing
   sourceDir = DirectoryProviderHelper.getSourceDirectory(directoryProviderName, properties, true);
   log.debugf("Source directory: %s", sourceDir.getPath());
   indexDir = DirectoryProviderHelper.getVerifiedIndexDir(directoryProviderName, properties, true);
   log.debugf("Index directory: %s", indexDir.getPath());
   try {
     indexName = indexDir.getCanonicalPath();
     directory = DirectoryProviderHelper.createFSIndex(indexDir, properties);
   } catch (IOException e) {
     throw new SearchException("Unable to initialize index: " + directoryProviderName, e);
   }
   copyChunkSize = DirectoryProviderHelper.getCopyBufferSize(directoryProviderName, properties);
   this.context = context;
   current = 0; // write to volatile to publish all state
 }