@Test
 public void run() {
   IntegerSum sum = new IntegerSum(0);
   Interval.oneTo(5).run(() -> sum.add(1));
   Assert.assertEquals(5, sum.getIntSum());
   IntegerSum sum2 = new IntegerSum(0);
   Interval.fromTo(5, 1).run(() -> sum2.add(1));
   Assert.assertEquals(5, sum2.getIntSum());
 }
 @Test
 public void forEachWith() {
   IntegerSum sum = new IntegerSum(0);
   Interval.oneTo(5)
       .forEachWith((Integer each, Integer parameter) -> sum.add(each + parameter), 0);
   Assert.assertEquals(15, sum.getIntSum());
   IntegerSum sum2 = new IntegerSum(0);
   Interval.fromTo(5, 1)
       .forEachWith((Integer each, Integer parameter) -> sum2.add(each + parameter), 0);
   Assert.assertEquals(15, sum2.getIntSum());
 }
  @Test
  public void forEachWithIndex() {
    IntegerSum sum = new IntegerSum(0);
    Interval.oneTo(5)
        .forEachWithIndex((ObjectIntProcedure<Integer>) (each, index) -> sum.add(each + index));
    Assert.assertEquals(25, sum.getIntSum());
    IntegerSum zeroSum = new IntegerSum(0);
    Interval.fromTo(0, -4)
        .forEachWithIndex((ObjectIntProcedure<Integer>) (each, index) -> zeroSum.add(each + index));
    Assert.assertEquals(0, zeroSum.getIntSum());

    Verify.assertThrows(
        IndexOutOfBoundsException.class, () -> Interval.zeroTo(10).forEachWithIndex(null, -1, 10));
  }