@Test
  public void testIterator() throws Exception {
    collection.add(OBJ_0);

    Iterator iterator = collection.iterator();
    assertThat(iterator.hasNext(), equalTo(true));
    assertThat(iterator.next(), sameInstance(OBJ_0));
    assertThat(iterator.hasNext(), equalTo(false));
  }
  @Test
  public void testRemoveElementAfterWhileIterating() throws Exception {
    collection.add(OBJ_0);
    collection.add(OBJ_1);

    Iterator iterator = collection.iterator();
    assertThat(iterator.hasNext(), equalTo(true));
    assertThat(iterator.next(), sameInstance(OBJ_0));
    collection.remove(OBJ_1);
    assertThat(iterator.hasNext(), equalTo(false));
  }
  @Test
  public void testAddRemove() throws Exception {
    assertThat(collection.size(), equalTo(0));
    assertThat(collection.isEmpty(), equalTo(true));

    collection.add(OBJ_0);
    assertThat(collection.size(), equalTo(1));
    assertThat(collection.isEmpty(), equalTo(false));

    assertThat(collection.contains(OBJ_0), equalTo(true));
    assertThat(collection.contains(OBJ_1), equalTo(false));

    collection.clear();
    assertThat(collection.size(), equalTo(0));

    collection.add(OBJ_0);
    collection.add(OBJ_0);

    assertThat(collection.size(), equalTo(2));

    assertThat(collection.remove(OBJ_0), equalTo(true));
    assertThat(collection.size(), equalTo(1));

    assertThat(collection.remove(OBJ_0), equalTo(true));
    assertThat(collection.size(), equalTo(0));
  }