@Test
 public void forEachOnFromToByInterval2() {
   List<Integer> result = new ArrayList<>();
   Interval interval = Interval.fromToBy(5, 1, -2);
   interval.forEach(CollectionAddProcedure.on(result));
   Verify.assertSize(3, result);
   Verify.assertContains(1, result);
   Verify.assertNotContains(2, result);
   Verify.assertContains(5, result);
 }
  @Override
  @Test
  public void removeAllIterable() {
    super.removeAllIterable();

    MutableList<Integer> objects = MultiReaderFastList.newListWith(1, 2, 3);
    objects.removeAllIterable(Lists.fixedSize.of(1, 2));
    Verify.assertSize(1, objects);
    Verify.assertContains(3, objects);
    MutableList<Integer> objects2 = MultiReaderFastList.newListWith(1, 2, 3);
    objects2.removeAllIterable(Lists.fixedSize.of(1));
    Verify.assertSize(2, objects2);
    Verify.assertContainsAll(objects2, 2, 3);
    MutableList<Integer> objects3 = MultiReaderFastList.newListWith(1, 2, 3);
    objects3.removeAllIterable(Lists.fixedSize.of(3));
    Verify.assertSize(2, objects3);
    Verify.assertContainsAll(objects3, 1, 2);
    MutableList<Integer> objects4 = MultiReaderFastList.newListWith(1, 2, 3);
    objects4.removeAllIterable(Lists.fixedSize.of());
    Verify.assertSize(3, objects4);
    Verify.assertContainsAll(objects4, 1, 2, 3);
    MutableList<Integer> objects5 = MultiReaderFastList.newListWith(1, 2, 3);
    objects5.removeAllIterable(Lists.fixedSize.of(1, 2, 3));
    Verify.assertEmpty(objects5);
    MutableList<Integer> objects6 = MultiReaderFastList.newListWith(1, 2, 3);
    objects6.removeAllIterable(Lists.fixedSize.of(2));
    Verify.assertSize(2, objects6);
    Verify.assertContainsAll(objects6, 1, 3);
  }
 @Test
 public void forLoop() {
   MutableList<String> list = SingletonListTest.newWith("one");
   MutableList<String> upperList = SingletonListTest.newWith("ONE");
   for (String each : list) {
     Verify.assertContains(each.toUpperCase(), upperList);
   }
 }
  @Test
  public void reverseForEachOnFromToInterval() {
    List<Integer> result = new ArrayList<>();
    Interval interval = Interval.oneTo(5);
    interval.reverseForEach(result::add);
    Verify.assertSize(5, result);
    Verify.assertContains(1, result);
    Verify.assertContains(5, result);
    Assert.assertEquals(Integer.valueOf(5), Iterate.getFirst(result));
    Assert.assertEquals(Integer.valueOf(1), Iterate.getLast(result));

    result.clear();
    interval.reverseThis().reverseForEach(result::add);
    Verify.assertSize(5, result);
    Verify.assertContains(1, result);
    Verify.assertContains(5, result);
    Assert.assertEquals(Integer.valueOf(1), Iterate.getFirst(result));
    Assert.assertEquals(Integer.valueOf(5), Iterate.getLast(result));
  }
 @Test
 public void subList() {
   MutableList<String> list = SingletonListTest.newWith("one");
   MutableList<String> subList = list.subList(0, 1);
   MutableList<String> upperList = SingletonListTest.newWith("ONE");
   for (String each : subList) {
     Verify.assertContains(each.toUpperCase(), upperList);
   }
   Assert.assertEquals("one", subList.getFirst());
   Assert.assertEquals("one", subList.getLast());
 }
  @Test
  public void setKeyPreservation() {
    Key key = new Key("key");

    Key duplicateKey1 = new Key("key");
    ImmutableSet<Key> set1 = Sets.immutable.of(key, duplicateKey1);
    Verify.assertSize(1, set1);
    Verify.assertContains(key, set1);
    Assert.assertSame(key, set1.getFirst());

    Key duplicateKey2 = new Key("key");
    ImmutableSet<Key> set2 = Sets.immutable.of(key, duplicateKey1, duplicateKey2);
    Verify.assertSize(1, set2);
    Verify.assertContains(key, set2);
    Assert.assertSame(key, set2.getFirst());

    Key duplicateKey3 = new Key("key");
    ImmutableSet<Key> set3 = Sets.immutable.of(key, new Key("not a dupe"), duplicateKey3);
    Verify.assertSize(2, set3);
    Verify.assertContainsAll("immutable set", set3, key, new Key("not a dupe"));
    Assert.assertSame(key, set3.detect(key::equals));

    Key duplicateKey4 = new Key("key");
    ImmutableSet<Key> set4 =
        Sets.immutable.of(key, new Key("not a dupe"), duplicateKey3, duplicateKey4);
    Verify.assertSize(2, set4);
    Verify.assertContainsAll("immutable set", set4, key, new Key("not a dupe"));
    Assert.assertSame(key, set4.detect(key::equals));

    ImmutableSet<Key> set5 =
        Sets.immutable.of(key, new Key("not a dupe"), new Key("me neither"), duplicateKey4);
    Verify.assertSize(3, set5);
    Verify.assertContainsAll(
        "immutable set", set5, key, new Key("not a dupe"), new Key("me neither"));
    Assert.assertSame(key, set5.detect(key::equals));

    ImmutableSet<Key> set6 = Sets.immutable.of(key, duplicateKey2, duplicateKey3, duplicateKey4);
    Verify.assertSize(1, set6);
    Verify.assertContains(key, set6);
    Assert.assertSame(key, set6.detect(key::equals));
  }