private static Collection<?> foreach(
     ScanRanges scanRanges, int[] widths, KeyRange[] expectedSplits) {
   SkipScanFilter filter = new SkipScanFilter(scanRanges.getRanges(), buildSchema(widths));
   Scan scan =
       new Scan().setFilter(filter).setStartRow(KeyRange.UNBOUND).setStopRow(KeyRange.UNBOUND);
   List<Object> ret = Lists.newArrayList();
   ret.add(new Object[] {scan, scanRanges, Arrays.<KeyRange>asList(expectedSplits)});
   return ret;
 }
 private static Collection<?> foreach(
     KeyRange[][] ranges, int[] widths, KeyRange[] expectedSplits) {
   RowKeySchema schema = buildSchema(widths);
   List<List<KeyRange>> slots = Lists.transform(Lists.newArrayList(ranges), ARRAY_TO_LIST);
   SkipScanFilter filter = new SkipScanFilter(slots, schema);
   // Always set start and stop key to max to verify we are using the information in skipscan
   // filter over the scan's KMIN and KMAX.
   Scan scan =
       new Scan().setFilter(filter).setStartRow(KeyRange.UNBOUND).setStopRow(KeyRange.UNBOUND);
   ScanRanges scanRanges = ScanRanges.create(slots, schema);
   List<Object> ret = Lists.newArrayList();
   ret.add(new Object[] {scan, scanRanges, Arrays.<KeyRange>asList(expectedSplits)});
   return ret;
 }