code: function(data, cb) {
          async.series([
              cntUtils.many('shutdownChild', unknown(), data),
              function (cb1) {
                  var cb2 = function(err, res) {
                      if (err) {
                          if (data && data.doNotRestart) {
                              var logMsg = 'Cannot restart children in ' +
                                      spec.name + ' got error ' +
                                      myUtils.errToPrettyStr(err);
                              $._.$.log && $._.$.log.trace(logMsg);
                              cb1(err);
                          } else {
                              logMsg = 'Restarting children in ' + spec.name +
                                  ' due to error ' + myUtils.errToPrettyStr(err);
                              $._.$.log && $._.$.log.trace(logMsg);
                              restartAll(data, cb1);
                          }
                      } else {
                          cb1(err, res);
                      }
                  };
                  cntUtils.many('checkChild', childrenNames, data)(cb2);
              }
          ], cb);
      }
docs: /*
  Reconciliates the current children state with the expected one.
  
  
  @param {Object} data A hint on how to perform the checkup. If
  `data.doNotRestart` is true, we do not attempt recovery, propagating
  an error in the callback instead.
  @param {cbType} cb A callback to propagate a checkup error/success.