### Question:
Selection implements Iterable<K> { boolean add(@NonNull K key) { return mSelection.add(key); } Selection();   Selection(@NonNull Set<K> selection); boolean contains(@Nullable K key); @Override Iterator<K> iterator(); int size(); boolean isEmpty(); @Override String toString(); @Override int hashCode(); @Override boolean equals(Object other);  }### Answer:
@Test public void testAdd() { assertEquals(3, mSelection.size()); assertContains(mIds[0]); assertContains(mIds[1]); assertContains(mIds[2]); }
@Test public void testAdd_NewItemReturnsTrue() { assertTrue(mSelection.add("poodles")); }
@Test public void testAdd_ExistingReturnsFalse() { assertFalse(mSelection.add(mIds[0])); }