protected void buildAfterBatchBuild() {
    // called from a batch builder once all source files have been compiled AND some changes
    // need to be propagated incrementally (annotations, missing secondary types)

    if (JavaBuilder.DEBUG)
      System.out.println(
          "INCREMENTAL build after batch build @ "
              + new Date(System.currentTimeMillis())); // $NON-NLS-1$

    // this is a copy of the incremental build loop
    try {
      addAffectedSourceFiles();
      while (this.sourceFiles.size() > 0) {
        this.notifier.checkCancel();
        SourceFile[] allSourceFiles = new SourceFile[this.sourceFiles.size()];
        this.sourceFiles.toArray(allSourceFiles);
        resetCollections();
        this.notifier.setProgressPerCompilationUnit(0.08f / allSourceFiles.length);
        this.workQueue.addAll(allSourceFiles);
        compile(allSourceFiles);
        removeSecondaryTypes();
        addAffectedSourceFiles();
      }
    } catch (CoreException e) {
      throw internalException(e);
    } finally {
      cleanUp();
    }
  }