code: function readAndMergeFiles(files, cb) {
      assert.func(cb);
      if ((typeof (files)) === 'string') {
          files = [ files ];
      }
      assert.arrayOfString(files, 'files');
      var objs = [];
      function end() {
          cb(null, merge.apply(this, objs));
      }
      var i = 0;
      function next() {
          var file = files[i];
          if (!file) {
              end();
              return;
          }
  
          fs.stat(file, function (statErr, stat) {
              if (statErr && statErr.code === 'ENOENT' && i != 0) {
                  ++i;
                  next();
                  return;
              }
              if (statErr) {
                  cb(statErr);
                  return;
              }
  
              readJsonFile(file, function (readErr, s) {
                  if (readErr) {
                      cb(readErr);
                      return;
                  }
                  objs.push(s);
                  ++i;
                  next();
              });
          });
      }
      next();
  }
docs: /*
  Reads a set of files and merges them, per the merge function above.  This
  only throws if the first file isn't found (as weird as this sounds, it
  happens to be the behavior that we need.