docs: public static JavaRDD<MultiDataSet> mapRRMDSI(List<JavaRDD<List<Writable>>> rdds, List<JavaRDD<List<List<Writable>>>> seqRdds,
                                                    int[] rddsKeyColumns, int[] seqRddsKeyColumns, boolean filterMissing,
                                                    RecordReaderMultiDataSetIterator iterator){
          checkIterator(iterator, (rdds == null ? 0 : rdds.size()), (seqRdds == null ? 0 : seqRdds.size()));
          assertNullOrSameLength(rdds, rddsKeyColumns, false);
          assertNullOrSameLength(seqRdds, seqRddsKeyColumns, true);
          if((rdds == null || rdds.isEmpty()) && (seqRdds == null || seqRdds.isEmpty()) ){
              throw new IllegalArgumentException();
          }
  
          JavaPairRDD<Writable,DataVecRecord> allPairs = null;
          if(rdds != null){
              for( int i=0; i<rdds.size(); i++ ){
                  JavaRDD<List<Writable>> rdd = rdds.get(i);
                  JavaPairRDD<Writable,DataVecRecord> currPairs = rdd.mapToPair(new MapToPairFn(i, rddsKeyColumns[i]));
                  if(allPairs == null){
                      allPairs = currPairs;
                  } else {
                      allPairs = allPairs.union(currPairs);
                  }
              }
          }
  
  
          if(seqRdds != null){
              for( int i=0; i<seqRdds.size(); i++ ){
                  JavaRDD<List<List<Writable>>> rdd = seqRdds.get(i);
                  JavaPairRDD<Writable,DataVecRecord> currPairs = rdd.mapToPair(new MapToPairSeqFn(i, seqRddsKeyColumns[i]));
                  if(allPairs == null){
                      allPairs = currPairs;
                  } else {
                      allPairs = allPairs.union(currPairs);
                  }
              }
          }
  
          int expNumRec = (rddsKeyColumns == null ? 0 : rddsKeyColumns.length);
          int expNumSeqRec = (seqRddsKeyColumns == null ? 0 : seqRddsKeyColumns.length);
  
          //Finally: group by key, filter (if necessary), convert
          JavaPairRDD<Writable, Iterable<DataVecRecord>> grouped = allPairs.groupByKey();
          if(filterMissing){
              //TODO
              grouped = grouped.filter(new FilterMissingFn(expNumRec, expNumSeqRec));
          }
  
          JavaRDD<DataVecRecords> combined = grouped.map(new CombineFunction(expNumRec, expNumSeqRec));
          return mapRRMDSIRecords(combined, iterator);
      }