public Boolean call() {
   if (!used.getAndSet(true)) {
     initContext();
     notYetEntered = new HashMap<JavaFileObject, JCCompilationUnit>();
     compilerMain.setAPIMode(true);
     result = compilerMain.compile(args, classNames, context, fileObjects, processors);
     cleanup();
     return result == 0;
   } else {
     throw new IllegalStateException("multiple calls to method 'call'");
   }
 }