/** Print total and optimal critical paths if available. */
 public void printCriticalPaths() {
   CriticalPathEntry totalPath = criticalPathStats.getTotalPath();
   printCriticalPath("Critical path", totalPath);
   // In critical path components we do not record scheduling delay data so it does not make
   // sense to differentiate it.
   if (!totalPath.isComponent()) {
     printCriticalPath(
         "Critical path excluding scheduling delays", criticalPathStats.getOptimalPath());
   }
 }
 public void printTimingBreakdown() {
   CriticalPathEntry totalPath = criticalPathStats.getTotalPath();
   CriticalPathEntry optimalPath = criticalPathStats.getOptimalPath();
   if (totalPath != null) {
     if (!totalPath.isComponent()) {
       printCriticalPathTimingBreakdown(totalPath, optimalPath);
     }
   } else {
     lnPrint("Critical path not available because no action graph was generated.");
   }
 }