docs: 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();
  }