docs: public List<Module> sequence(List<Module> moduleList) throws CyclicDependency {
          List<Module> work;
          Graph<Module> graph;
          Module left;
          Module right;
  
          graph = new Graph<Module>();
          for (int i = 0; i < moduleList.size(); i++) {
              right = moduleList.get(i);
              graph.addNode(right);
              if (i > 0) { // inject dependency to previous modules
                  left = moduleList.get(i - 1);
                  graph.addEdge(left, right);
              }
          }
          work = new ArrayList<Module>();
          work.addAll(moduleList);
          for (int i = 0; i < work.size(); i++) { // list grows!
              right = work.get(i);
              for (Module l : right.dependencies()) {
                  graph.addEdge(l, right);
                  if (!work.contains(l)) {
                      work.add(l);
                  }
              }
          }
          return graph.sort();
      }