#vulnerable code 
                                void parse(File outputFile, Context context, String[] includePath, String ... includes) throws IOException, ParserException {
        ArrayList<Token> tokenList = new ArrayList<Token>();
        for (String include : includes) {
            File file = null;
            String filename = include;
            if (filename.startsWith("<") && filename.endsWith(">")) {
                filename = filename.substring(1, filename.length() - 1);
            } else {
                File f = new File(filename);
                if (f.exists()) {
                    file = f;
                }
            }
            if (file == null && includePath != null) {
                for (String path : includePath) {
                    File f = new File(path, filename);
                    if (f.exists()) {
                        file = f;
                        break;
                    }
                }
            }
            if (file == null) {
                file = new File(filename);
            }
            Info info = infoMap.getFirst(file.getName());
            if (info != null && info.skip) {
                continue;
            } else if (!file.exists()) {
                throw new FileNotFoundException("Could not parse \"" + file + "\": File does not exist");
            }
            logger.info("Parsing " + file);
            Token token = new Token();
            token.type = Token.COMMENT;
            token.value = "\n// Parsed from " + include + "\n\n";
            tokenList.add(token);
            Tokenizer tokenizer = new Tokenizer(file);
            while (!(token = tokenizer.nextToken()).isEmpty()) {
                if (token.type == -1) {
                    token.type = Token.COMMENT;
                }
                tokenList.add(token);
            }
            if (lineSeparator == null) {
                lineSeparator = tokenizer.lineSeparator;
            }
            tokenizer.close();
            token = new Token();
            token.type = Token.COMMENT;
            token.spacing = "\n";
            tokenList.add(token);
        }
        tokens = new TokenIndexer(infoMap, tokenList.toArray(new Token[tokenList.size()]));

        final String newline = lineSeparator != null ? lineSeparator : "\n";
        Writer out = outputFile != null ? new FileWriter(outputFile) {
            @Override public Writer append(CharSequence text) throws IOException {
                return super.append(((String)text).replace("\n", newline).replace("\\u", "\\u005Cu"));
            }} : new Writer() {
            @Override public void write(char[] cbuf, int off, int len) { }
            @Override public void flush() { }
            @Override public void close() { }
        };
        LinkedList<Info> infoList = leafInfoMap.get(null);
        for (Info info : infoList) {
            if (info.javaText != null && !info.javaText.startsWith("import")) {
                out.append(info.javaText + "\n");
            }
        }
        out.append("    static { Loader.load(); }\n");

        DeclarationList declList = new DeclarationList();
        containers(context, declList);
        declarations(context, declList);
        for (Declaration d : declList) {
            out.append(d.text);
        }
        out.append("\n}\n").close();
    } 
                            #location 78 
                            #vulnerability type RESOURCE_LEAK
#fixed code
                                Parser(Parser p, String text) {
        this.logger = p.logger;
        this.properties = p.properties;
        this.infoMap = p.infoMap;
        this.tokens = new TokenIndexer(infoMap, new Tokenizer(text).tokenize());
        this.lineSeparator = p.lineSeparator;
    }