boolean traverse(JvmClass cl, boolean isRoot) {
          boolean parentsMarked = false;
          for (JvmClass superCl : present.allDirectSupertypes(cl)) {
            parentsMarked |= traverse(superCl, false);
          }
          if (isRoot) {
            return true;
          }
          Iterable<NodeSource> nodeSources = present.getNodeSources(cl.getReferenceID());
          if (parentsMarked) {
            for (NodeSource source : filter(nodeSources, s -> !isMarked(s) && inCurrentChunk.test(s))) {
              LOG.debug("Intermediate class in a class hierarchy is not marked for compilation, while one of its subclasses and superclasses are going to be recompiled. Affecting  " + source.toString());
              context.affectNodeSource(source);
            }
          }
          return parentsMarked || isMarked(nodeSources);
        }
boolean traverse(JvmClass cl, boolean isRoot)