private static void findFunctionUses(JassProg prog, final HashMap<String, Boolean> useMap) { prog.accept( new JassProg.DefaultVisitor() { @Override public void visit(JassFunction func) { func.accept( new JassFunction.DefaultVisitor() { @Override public void visit(JassExprFuncRef ref) { String name = ref.getFuncName(); useMap.put(name, true); } @Override public void visit(JassExprFunctionCall call) { String name = call.getFuncName(); useMap.put(name, true); } @Override public void visit(JassStmtCall call) { String name = call.getFuncName(); useMap.put(name, true); } }); } }); }