public InheritanceVisitor(File output, List<File> caches) throws IOException {
        super(Opcodes.ASM4);

        if (output != null) {
            FileOutputStream fos = new FileOutputStream(output);
            out = new PrintWriter(fos);
        }

        graph = new InheritanceGraph();

        for (File cache : caches) {
            BufferedReader contents = new BufferedReader(new InputStreamReader(new FileInputStream(cache)));

            String line = contents.readLine();
            while (line != null) {
                String parts[] = line.split(";");
                if (parts.length != 2) {
                    System.out.println("Bad stored inheritance: " + line);
                } else {
                    String parent = parts[0];
                    String child = parts[1];
                    graph.addRelationship(parent, child);
                }

                line = contents.readLine();
            }
        }
    }