code: function readBenchConfig(minimistOpts, defaults) {
      var opts = defaults || {};
      if (process.env.BENCH_CONFIG) {
          var configParts = extractPartsList(process.env.BENCH_CONFIG);
          opts = mergeConfig(opts, loadConfigParts(configParts.all()));
      }
      if (minimistOpts && minimistOpts.boolean) {
          var def = minimistOpts.defaults || (minimistOpts.defaults = {});
          for (var i = 0; i < minimistOpts.boolean.length; i++) {
              var key = minimistOpts.boolean[i];
              def[key] = opts[key] === undefined ? def[key] || false : opts[key];
          }
          delete minimistOpts.boolean;
      }
      opts = mergeConfig(opts, parseArgs(process.argv.slice(2), minimistOpts));
      return opts;
  }
docs: TODO: use a topo-sorter to correctly resolve merge order, due to cases like:  A extends C B extends C  now say C sets foo => 1 A sets foo => 2  then the order "A,B" will have the incorrect foo value of 1 since B inherited its parent, and then merged into A overriding it.