static IterableIterator countIterator_exclusive_step(final int a, final int b, final int step) { assertTrue("step > 0", step > 0); ret new IterableIterator() { int i = a; public bool hasNext() { ret i < b; } public Int next() { var j = i; i += step; ret j; } }; } static IterableIterator countIterator_exclusive_step(double a, double b, double step) { assertTrue("step > 0", step > 0); ret new IterableIterator() { double i = a; public bool hasNext() { ret i < b; } public Double next() { var j = i; i += step; ret j; } }; }