aspect ExportedPackages { syn lazy Set ModuleCompilationUnit.getExportedPackages() { Set ret = new HashSet(); Set allPackages = new HashSet(); LinkedList memberList = getBaseCU().getSelfAndSuperMemberListNoTransform(); ModuleCompilationUnit currCU = this; while (currCU != null) { for (CompilationUnit cu : currCU.getCompilationUnitList()) { allPackages.add(cu.moduleLocalPackageName()); } currCU = currCU.getSuperModuleCUNoTransform(); } for (ModuleMemberDecl member : memberList) { if (!(member instanceof ModuleExportDecl)) { continue; } ModuleExportDecl exportDecl = (ModuleExportDecl) member; for (ModulePackageDecl packageDecl : exportDecl.getModulePackageDeclList()) { ret.add(packageDecl.getID()); } if (exportDecl instanceof ModuleExportAllDecl) { ret.addAll(allPackages); } } return ret; } }