void affectSubclasses(final int className,
                          final Collection<? super File> affectedFiles,
                          final Collection<? super UsageRepr.Usage> affectedUsages,
                          final IntSet dependants,
                          final boolean usages,
                          final Collection<? extends File> alreadyCompiledFiles,
                          IntSet visitedClasses) {
      debug("Affecting subclasses of class: ", className);

      final Iterable<File> allSources = classToSourceFileGet(className);
      if (allSources == null || Iterators.isEmpty(allSources)) {
        debug("No source file detected for class ", className);
        debug("End of affectSubclasses");
        return;
      }

      for (File fName : allSources) {
        debug("Source file name: ", fName);
        if (!alreadyCompiledFiles.contains(fName)) {
          affectedFiles.add(fName);
        }
      }

      if (usages) {
        debug("Class usages affection requested");

        for (ClassRepr classRepr : reprsByName(className, ClassRepr.class)) {
          debug("Added class usage for ", classRepr.name);
          affectedUsages.add(classRepr.createUsage());
          break;
        }
      }

      appendDependents(className, dependants);

      final IntSet directSubclasses = myClassToSubclasses.get(className);
      if (directSubclasses != null) {
        if (visitedClasses == null) {
          visitedClasses = new IntOpenHashSet();
          visitedClasses.add(className);
        }
        final IntSet _visitedClasses = visitedClasses;
        directSubclasses.forEach(subClass -> {
          if (_visitedClasses.add(subClass)) {
            affectSubclasses(subClass, affectedFiles, affectedUsages, dependants, usages, alreadyCompiledFiles, _visitedClasses);
          }
        });
      }
    }
void affectSubclasses(final int className,
                          final Collection<? super File> affectedFiles,
                          final Collection<? super UsageRepr.Usage> affectedUsages,
                          final IntSet dependants,
                          final boolean usages,
                          final Collection<? extends File> alreadyCompiledFiles,
                          IntSet visitedClasses)