code: public Main.Result doCall() {
          try {
              return handleExceptions(() -> {
                  prepareCompiler(false);
                  if (compiler.errorCount() > 0)
                      return Main.Result.ERROR;
                  compiler.compile(args.getFileObjects(), args.getClassNames(), processors, addModules);
                  return (compiler.errorCount() > 0) ? Main.Result.ERROR : Main.Result.OK; // FIXME?
              }, Main.Result.SYSERR, Main.Result.ABNORMAL);
          } finally {
              try {
                  cleanup();
              } catch (ClientCodeException e) {
                  throw new RuntimeException(e.getCause());
              }
          }
      }
docs: /* Internal version of call exposing Main.Result.