code: public synchronized void use() {
          assert(!inUse);
          inUse = true;
          compiler = com.sun.tools.javac.api.JavacTool.create();
          fileManager = compiler.getStandardFileManager(null, null, null);
          fileManagerBase = (BaseFileManager)fileManager;
          smartFileManager = new SmartFileManager(fileManager);
          context = new Context();
          context.put(JavaFileManager.class, smartFileManager);
          ResolveWithDeps.preRegister(context);
          JavaCompilerWithDeps.preRegister(context, this);
          subTasks = new ArrayList<Future<?>>();
      }
docs: Prepare the compiler thread for use. It is not yet started.
  It will be started by the executor service.