@Override
    public Range next() {
      if (myIterable.valid()) {
        assert (myIterable.getStart1() - lastIndex1 != 0) || (myIterable.getStart2() - lastIndex2 != 0);
        Range chunk = new Range(lastIndex1, myIterable.getStart1(), lastIndex2, myIterable.getStart2());

        lastIndex1 = myIterable.getEnd1();
        lastIndex2 = myIterable.getEnd2();

        myIterable.next();

        return chunk;
      }
      else {
        assert (myLength1 - lastIndex1 != 0) || (myLength2 - lastIndex2 != 0);
        Range chunk = new Range(lastIndex1, myLength1, lastIndex2, myLength2);

        lastIndex1 = myLength1;
        lastIndex2 = myLength2;

        return chunk;
      }
    }
@Override
    public Range next()