org_aspectj_ajdt_ajc_BuildArgParserTestCase_java
org.aspectj.ajdt.ajc.BuildArgParser$AjcConfigParser
@Override
    public void parseOption(String arg, LinkedList<ConfigParser.Arg> args) {
        int nextArgIndex = args.indexOf(arg) + 1;
        this.buildConfig.setXlazyTjp(true);
        if (LangUtil.isEmpty(arg)) {
            this.showWarning("empty arg found");
        } else if (arg.endsWith("module-info.java")) {
            this.moduleInfoArgument = arg;
        } else if (arg.equals("-inpath")) {
            if (args.size() > nextArgIndex) {
                StringTokenizer st = new StringTokenizer(args.get(nextArgIndex).getValue(), File.pathSeparator);
                boolean inpathChange = false;
                while (st.hasMoreTokens()) {
                    String filename = st.nextToken();
                    File file = this.makeFile(filename);
                    if (FileUtil.isZipFile(file)) {
                        this.buildConfig.addToInpath(file);
                        inpathChange = true;
                        continue;
                    }
                    if (file.isDirectory()) {
                        this.buildConfig.addToInpath(file);
                        inpathChange = true;
                        continue;
                    }
                    this.showWarning("skipping missing, empty or corrupt inpath entry: " + filename);
                }
                if (inpathChange) {
                    this.buildConfig.processInPath();
                }
                args.remove(args.get(nextArgIndex));
            }
        } else if (arg.equals("-injars")) {
            if (args.size() > nextArgIndex) {
                StringTokenizer st = new StringTokenizer(args.get(nextArgIndex).getValue(), File.pathSeparator);
                while (st.hasMoreTokens()) {
                    String filename = st.nextToken();
                    File jarFile = this.makeFile(filename);
                    if (FileUtil.isZipFile(jarFile)) {
                        this.buildConfig.getInJars().add(jarFile);
                        continue;
                    }
                    File dirFile = this.makeFile(filename);
                    if (dirFile.isDirectory()) {
                        this.buildConfig.getInJars().add(dirFile);
                        continue;
                    }
                    this.showWarning("skipping missing, empty or corrupt injar: " + filename);
                }
                args.remove(args.get(nextArgIndex));
            }
        } else if (arg.equals("-aspectpath")) {
            if (args.size() > nextArgIndex) {
                StringTokenizer st = new StringTokenizer(args.get(nextArgIndex).getValue(), File.pathSeparator);
                while (st.hasMoreTokens()) {
                    String filename = st.nextToken();
                    File jarFile = this.makeFile(filename);
                    if (FileUtil.isZipFile(jarFile) || jarFile.isDirectory()) {
                        this.buildConfig.addToAspectpath(jarFile);
                        continue;
                    }
                    this.showWarning("skipping missing, empty or corrupt aspectpath entry: " + filename);
                }
                args.remove(args.get(nextArgIndex));
            }
        } else if (arg.equals("-makeAjReflectable")) {
            this.buildConfig.setMakeReflectable(true);
        } else if (arg.equals("-sourceroots")) {
            if (args.size() > nextArgIndex) {
                ArrayList<File> sourceRoots = new ArrayList<File>();
                StringTokenizer st = new StringTokenizer(args.get(nextArgIndex).getValue(), File.pathSeparator);
                while (st.hasMoreTokens()) {
                    File f = this.makeFile(st.nextToken());
                    if (f.isDirectory() && f.canRead()) {
                        sourceRoots.add(f);
                        continue;
                    }
                    this.showError("bad sourceroot: " + f);
                }
                if (0 < sourceRoots.size()) {
                    this.buildConfig.setSourceRoots(sourceRoots);
                }
                args.remove(args.get(nextArgIndex));
            } else {
                this.showError("-sourceroots requires list of directories");
            }
        } else if (arg.equals("-outjar")) {
            if (args.size() > nextArgIndex) {
                File jarFile = this.makeFile(args.get(nextArgIndex).getValue());
                if (!jarFile.isDirectory()) {
                    try {
                        if (!jarFile.exists()) {
                            jarFile.createNewFile();
                        }
                        this.buildConfig.setOutputJar(jarFile);
                    }
                    catch (IOException ioe) {
                        this.showError("unable to create outjar file: " + jarFile);
                    }
                } else {
                    this.showError("invalid -outjar file: " + jarFile);
                }
                args.remove(args.get(nextArgIndex));
            } else {
                this.showError("-outjar requires jar path argument");
            }
        } else if (arg.equals("-outxml")) {
            this.buildConfig.setOutxmlName("META-INF/aop-ajc.xml");
        } else if (arg.equals("-outxmlfile")) {
            if (args.size() > nextArgIndex) {
                String name = args.get(nextArgIndex).getValue();
                this.buildConfig.setOutxmlName(name);
                args.remove(args.get(nextArgIndex));
            } else {
                this.showError("-outxmlfile requires file name argument");
            }
        } else if (arg.equals("-log")) {
            args.remove(args.get(nextArgIndex));
        } else if (arg.equals("-messageHolder")) {
            args.remove(args.get(nextArgIndex));
        } else if (arg.equals("-incremental")) {
            this.buildConfig.setIncrementalMode(true);
        } else if (arg.equals("-XincrementalFile")) {
            if (args.size() > nextArgIndex) {
                File file = this.makeFile(args.get(nextArgIndex).getValue());
                this.buildConfig.setIncrementalFile(file);
                if (!file.canRead()) {
                    this.showError("bad -XincrementalFile : " + file);
                }
                args.remove(args.get(nextArgIndex));
            } else {
                this.showError("-XincrementalFile requires file argument");
            }
        } else if (arg.equals("-crossrefs")) {
            this.buildConfig.setGenerateCrossRefsMode(true);
            this.buildConfig.setGenerateModelMode(true);
        } else if (arg.startsWith("-checkRuntimeVersion:")) {
            String lcArg = arg.toLowerCase();
            if (lcArg.endsWith(":false")) {
                this.buildConfig.setCheckRuntimeVersion(false);
            } else if (lcArg.endsWith(":true")) {
                this.buildConfig.setCheckRuntimeVersion(true);
            } else {
                this.showError("bad value for -checkRuntimeVersion option, must be true or false");
            }
        } else if (arg.equals("-emacssym")) {
            this.buildConfig.setEmacsSymMode(true);
            this.buildConfig.setGenerateModelMode(true);
        } else if (arg.equals("-XjavadocsInModel")) {
            this.buildConfig.setGenerateModelMode(true);
            this.buildConfig.setGenerateJavadocsInModelMode(true);
        } else if (arg.equals("-Xdev:NoAtAspectJProcessing")) {
            this.buildConfig.setNoAtAspectJAnnotationProcessing(true);
        } else if (arg.equals("-XaddSerialVersionUID")) {
            this.buildConfig.setAddSerialVerUID(true);
        } else if (arg.equals("-xmlConfigured")) {
            this.buildConfig.setXmlConfigured(true);
        } else if (arg.equals("-Xdev:Pinpoint")) {
            this.buildConfig.setXdevPinpointMode(true);
        } else if (arg.startsWith("-Xjoinpoints:")) {
            this.buildConfig.setXJoinpoints(arg.substring(13));
        } else if (arg.equals("-noWeave") || arg.equals("-XnoWeave")) {
            this.showWarning("the noweave option is no longer required and is being ignored");
        } else if (arg.equals("-XterminateAfterCompilation")) {
            this.buildConfig.setTerminateAfterCompilation(true);
        } else if (arg.equals("-XserializableAspects")) {
            this.buildConfig.setXserializableAspects(true);
        } else if (arg.equals("-XlazyTjp")) {
            this.showWarning("-XlazyTjp should no longer be used, build tjps lazily is now the default");
        } else if (arg.startsWith("-Xreweavable")) {
            this.showWarning("-Xreweavable is on by default");
            if (arg.endsWith(":compress")) {
                this.showWarning("-Xreweavable:compress is no longer available - reweavable is now default");
            }
        } else if (arg.startsWith("-Xset:")) {
            this.buildConfig.setXconfigurationInfo(arg.substring(6));
        } else if (arg.startsWith("-aspectj.pushin=")) {
            try {
                System.setProperty("aspectj.pushin", arg.substring(16));
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        } else if (arg.startsWith("-XnotReweavable")) {
            this.buildConfig.setXnotReweavable(true);
        } else if (arg.equals("-XnoInline")) {
            this.buildConfig.setXnoInline(true);
        } else if (arg.equals("-XhasMember")) {
            this.buildConfig.setXHasMemberSupport(true);
        } else if (arg.startsWith("-showWeaveInfo")) {
            this.buildConfig.setShowWeavingInformation(true);
        } else if (arg.equals("-Xlintfile")) {
            if (args.size() > nextArgIndex) {
                File lintSpecFile = this.makeFile(args.get(nextArgIndex).getValue());
                if (lintSpecFile.canRead() && lintSpecFile.getName().endsWith(".properties")) {
                    this.buildConfig.setLintSpecFile(lintSpecFile);
                } else {
                    this.showError("bad -Xlintfile file: " + lintSpecFile);
                    this.buildConfig.setLintSpecFile(null);
                }
                args.remove(args.get(nextArgIndex));
            } else {
                this.showError("-Xlintfile requires .properties file argument");
            }
        } else if (arg.equals("-Xlint")) {
            this.buildConfig.setLintMode("default");
        } else if (arg.startsWith("-Xlint:")) {
            if (7 < arg.length()) {
                this.buildConfig.setLintMode(arg.substring(7));
            } else {
                this.showError("invalid lint option " + arg);
            }
        } else if (arg.equals("-bootclasspath")) {
            if (args.size() > nextArgIndex) {
                String bcpArg = args.get(nextArgIndex).getValue();
                StringBuilder bcp = new StringBuilder();
                StringTokenizer strTok = new StringTokenizer(bcpArg, File.pathSeparator);
                while (strTok.hasMoreTokens()) {
                    bcp.append(this.makeFile(strTok.nextToken()));
                    if (!strTok.hasMoreTokens()) continue;
                    bcp.append(File.pathSeparator);
                }
                this.bootclasspath = bcp.toString();
                args.remove(args.get(nextArgIndex));
            } else {
                this.showError("-bootclasspath requires classpath entries");
            }
        } else if (arg.equals("-classpath") || arg.equals("-cp")) {
            if (args.size() > nextArgIndex) {
                String cpArg = args.get(nextArgIndex).getValue();
                StringBuilder cp = new StringBuilder();
                StringTokenizer strTok = new StringTokenizer(cpArg, File.pathSeparator);
                while (strTok.hasMoreTokens()) {
                    cp.append(this.makeFile(strTok.nextToken()));
                    if (!strTok.hasMoreTokens()) continue;
                    cp.append(File.pathSeparator);
                }
                this.classpath = cp.toString();
                args.remove(args.get(nextArgIndex));
            } else {
                this.showError("-classpath requires classpath entries");
            }
        } else if (arg.equals("--module-path") || arg.equals("-p")) {
            if (args.size() > nextArgIndex) {
                String mpArg;
                this.modulepath = mpArg = args.get(nextArgIndex).getValue();
                args.remove(args.get(nextArgIndex));
            } else {
                this.showError("--module-path requires modulepath entries");
            }
        } else if (arg.equals("--module-source-path") || arg.equals("-p")) {
            if (args.size() > nextArgIndex) {
                String mspArg;
                this.modulesourcepath = mspArg = args.get(nextArgIndex).getValue();
                args.remove(args.get(nextArgIndex));
            } else {
                this.showError("--module-source-path requires modulepath entries");
            }
        } else if (arg.equals("-extdirs")) {
            if (args.size() > nextArgIndex) {
                String extdirsArg = args.get(nextArgIndex).getValue();
                StringBuilder ed = new StringBuilder();
                StringTokenizer strTok = new StringTokenizer(extdirsArg, File.pathSeparator);
                while (strTok.hasMoreTokens()) {
                    ed.append(this.makeFile(strTok.nextToken()));
                    if (!strTok.hasMoreTokens()) continue;
                    ed.append(File.pathSeparator);
                }
                this.extdirs = ed.toString();
                args.remove(args.get(nextArgIndex));
            } else {
                this.showError("-extdirs requires list of external directories");
            }
        } else if (arg.equals("-d")) {
            this.dirLookahead(arg, args, nextArgIndex);
        } else if (arg.equals("-proceedOnError")) {
            this.buildConfig.setProceedOnError(true);
        } else if (arg.equals("-processorpath")) {
            this.addPairToUnparsed(args, arg, nextArgIndex, "-processorpath requires list of external directories or zip archives");
        } else if (arg.equals("-processor")) {
            this.addPairToUnparsed(args, arg, nextArgIndex, "-processor requires list of processors' classes");
        } else if (arg.equals("-s")) {
            this.addPairToUnparsed(args, arg, nextArgIndex, "-s requires directory");
        } else if (arg.equals("-classNames")) {
            this.addPairToUnparsed(args, arg, nextArgIndex, "-classNames requires list of classes");
        } else if (new File(arg).isDirectory()) {
            this.showError("dir arg not permitted: " + arg);
        } else if (arg.startsWith("-Xajruntimetarget")) {
            if (arg.endsWith(":1.2")) {
                this.buildConfig.setTargetAspectjRuntimeLevel("1.2");
            } else if (arg.endsWith(":1.5")) {
                this.buildConfig.setTargetAspectjRuntimeLevel("1.5");
            } else if (arg.endsWith(":1.9")) {
                this.buildConfig.setTargetAspectjRuntimeLevel("1.9");
            } else {
                this.showError("-Xajruntimetarget:<level> supports a target level of 1.2, 1.5, 1.9");
            }
        } else if (arg.equals("-timers")) {
            this.buildConfig.setTiming(true);
        } else if (arg.equals("-1.3")) {
            this.buildConfig.setBehaveInJava5Way(false);
            this.unparsedArgs.add("-1.3");
        } else if (arg.equals("-1.4")) {
            this.buildConfig.setBehaveInJava5Way(false);
            this.unparsedArgs.add("-1.4");
        } else if (arg.equals("-source")) {
            if (args.size() > nextArgIndex) {
                String level = args.get(nextArgIndex).getValue();
                if (level.equals("1.3") || level.equals("1.4")) {
                    this.buildConfig.setBehaveInJava5Way(false);
                }
                this.unparsedArgs.add("-source");
                this.unparsedArgs.add(level);
                args.remove(args.get(nextArgIndex));
            }
        } else {
            this.unparsedArgs.add(arg);
        }
    }
 -> java.util.LinkedList.indexOf(java.lang.Object): int -> java.lang.String.length(): int -> java.lang.String.endsWith(java.lang.String): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.util.LinkedList.size(): int -> java.util.LinkedList.get(int): java.lang.Object -> java.util.StringTokenizer.hasMoreTokens(): boolean -> java.util.StringTokenizer.nextToken(): java.lang.String -> java.lang.System.getProperty(java.lang.String): java.lang.String -> java.lang.String.replace(char,char): java.lang.String -> java.io.File.isAbsolute(): boolean -> java.io.File.exists(): boolean -> java.io.File.getPath(): java.lang.String -> java.lang.String.startsWith(java.lang.String): boolean -> java.io.File.getCanonicalFile(): java.io.File -> java.util.zip.ZipFile.close(): void -> java.util.List.add(java.lang.Object): boolean -> java.util.StringTokenizer.hasMoreTokens(): boolean -> java.util.LinkedList.get(int): java.lang.Object -> java.util.LinkedList.remove(java.lang.Object): boolean
 [CALL] -> java.util.LinkedList.indexOf(java.lang.Object): int [CALL] [EXIT] [CALL] -> java.lang.String.length(): int [EXIT] -> java.lang.String.endsWith(java.lang.String): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.util.LinkedList.size(): int -> java.util.LinkedList.get(int): java.lang.Object [CALL] [EXIT] -> java.util.StringTokenizer.hasMoreTokens(): boolean -> java.util.StringTokenizer.nextToken(): java.lang.String [CALL] [CALL] [CALL] -> java.lang.System.getProperty(java.lang.String): java.lang.String [EXIT] [EXIT] [CALL] -> java.lang.String.replace(char,char): java.lang.String -> java.io.File.isAbsolute(): boolean -> java.io.File.exists(): boolean -> java.io.File.getPath(): java.lang.String -> java.lang.String.startsWith(java.lang.String): boolean -> java.io.File.getCanonicalFile(): java.io.File [EXIT] [EXIT] [CALL] -> java.util.zip.ZipFile.close(): void [EXIT] [CALL] [EXIT] -> java.util.List.add(java.lang.Object): boolean -> java.util.StringTokenizer.hasMoreTokens(): boolean -> java.util.LinkedList.get(int): java.lang.Object -> java.util.LinkedList.remove(java.lang.Object): boolean [EXIT]