code: public void taintPackagesDependingOnChangedPackages(Set<String> pkgsWithChangedPubApi, Set<String> recentlyCompiled) {
          // For each to-be-recompiled-candidates...
          for (Package pkg : new HashSet<>(prev.packages().values())) {
              // Find out what it depends upon...
              Set<String> deps = pkg.typeDependencies()
                                    .values()
                                    .stream()
                                    .flatMap(Collection::stream)
                                    .collect(Collectors.toSet());
              for (String dep : deps) {
                  String depPkg = ":" + dep.substring(0, dep.lastIndexOf('.'));
                  if (depPkg.equals(pkg.name()))
                      continue;
                  // Checking if that dependency has changed
                  if (pkgsWithChangedPubApi.contains(depPkg) && !recentlyCompiled.contains(pkg.name())) {
                      taintPackage(pkg.name(), "its depending on " + depPkg);
                  }
              }
          }
      }
docs: Propagate recompilation through the dependency chains.
  Avoid re-tainting packages that have already been compiled.