code: public void init(String ownName,
              Iterable<String> options,
              Iterable<String> classNames,
              Iterable<? extends JavaFileObject> files) {
          this.ownName = ownName;
          this.classNames = toSet(classNames);
          this.fileObjects = toSet(files);
          this.files = null;
          errorMode = ErrorMode.ILLEGAL_ARGUMENT;
          if (options != null) {
              processArgs(toList(options), Option.getJavacToolOptions(), apiHelper, false, true);
          }
          errorMode = ErrorMode.ILLEGAL_STATE;
      }
docs: Initializes this Args instance with the parameters for a JavacTask.
  The options will be processed in conjunction with the restricted set
  of tool options, which does not include -help, -version, etc,
  nor does it include classes and filenames, which should be specified
  separately.
  File manager options are handled directly by the file manager.
  Any errors found while processing individual args will be reported
  via IllegalArgumentException.
  Any subsequent errors during validate will be reported via IllegalStateException.
  @param ownName the name of this tool; used to prefix messages
  @param options the options to be processed
  @param classNames the classes to be subject to annotation processing
  @param files the files to be compiled