protected void reportBusLoadTotals(SystemInstance si, final SystemOperationMode som) {
   if (som != null) {
     errManager.logInfo("\n\nConnection Budget Details for mode " + som.getName() + "\n");
   } else {
     errManager.logInfo("\n\nConnection Budget Details \n");
   }
   errManager.logInfo("Connection,Budget,Actual (Data Size * Sender Rate),Note");
   double budget = calcBandWidthLoad(si, som);
   errManager.logInfo("");
   errManager.infoSummary(
       si,
       Aadl2Util.getPrintableSOMName(som),
       "Connection bandwidth budget total: " + budget + " KBytesps");
   ForAllElement mal =
       new ForAllElement() {
         @Override
         protected void process(Element obj) {
           double buscapacity =
               GetProperties.getBandWidthCapacityInKbps((ComponentInstance) obj, 0.0);
           errManager.infoSummary(
               (NamedElement) obj,
               Aadl2Util.getPrintableSOMName(som),
               "Bus "
                   + ((ComponentInstance) obj).getFullName()
                   + " bandwidth capacity: "
                   + buscapacity
                   + " KBytesps");
         }
       };
   mal.processPreOrderComponentInstance(si, ComponentCategory.BUS);
 }
 protected void checkBusLoads(SystemInstance si, final SystemOperationMode som) {
   ForAllElement mal =
       new ForAllElement() {
         @Override
         protected void process(Element obj) {
           checkBandWidthLoad((ComponentInstance) obj, som);
         }
       };
   mal.processPreOrderComponentInstance(si, ComponentCategory.BUS);
 }
 protected void checkVirtualProcessorLoads(SystemInstance si, final SystemOperationMode som) {
   ForAllElement mal =
       new ForAllElement() {
         @Override
         protected void process(Element obj) {
           checkProcessorLoad((ComponentInstance) obj, som);
         }
       };
   mal.processPreOrderComponentInstance(si, ComponentCategory.VIRTUAL_PROCESSOR);
 }