private static OrderedMap<Long, Double[]> _MergeDataSets(boolean F, TemperatureSet TSList[]) {

    /* merge temperature data sets */
    OrderedMap<Long, Double[]> rowMap = new OrderedMap<Long, Double[]>();
    if (!ListTools.isEmpty(TSList)) {
      for (int d = 0; d < TSList.length; d++) {
        TemperatureSet TS = TSList[d];
        if (TS != null) {
          Collection<Temperature> TList = TS.getTemperatures();
          for (Temperature T : TList) {
            Long ts = new Long(T.getTimestamp());
            Double tmp = new Double(T.getTemperature(F));
            Double row[] = rowMap.get(ts);
            if (row == null) {
              row = new Double[TSList.length];
              rowMap.put(ts, row);
            }
            row[d] = tmp;
          }
        }
      }
    }

    /* sort by timestamp */
    rowMap.sortKeys(new ListTools.NumberComparator<Long>());

    /* return */
    return rowMap;
  }
  public static void main(String argv[]) {
    RTConfig.setCommandLineArgs(argv);
    long ts = DateTime.getCurrentTimeSec();
    double C = -5.6;

    TemperatureSet TSList[] = new TemperatureSet[3];
    for (int s = 0; s < TSList.length; s++) {
      TemperatureSet TS = new TemperatureSet();
      for (int i = 0; i < 10; i++) {
        long tempTS = ts + (12345L * (i + 1) * (s + 1));
        double tempC = C + (2.3 * i) + (1.1 * s);
        Print.logInfo(s + ":" + i + "] Adding " + tempTS + ", " + tempC);
        TS.addTemperature(tempTS, tempC);
      }
      TSList[s] = TS;
    }

    String t = TemperatureSet.CreateGoogleDataTableJavaScript(false, TSList);
    Print.sysPrintln(t);
  }