### Question:
SelectItemsIterator implements Iterator<SelectItem> { public SelectItem next() { if (this.selectItems.hasNext()) { return this.selectItems.next(); } while (this.children.hasNext()) { this.selectItems = newSelectItemsIterator(this.children.next()); if (this.selectItems.hasNext()) { return this.selectItems.next(); } } throw new NoSuchElementException(); } SelectItemsIterator(FacesContext context, UIComponent component); void remove(); boolean hasNext(); SelectItem next();  }### Answer:
@Test public void shouldSupportUISelectItemWithNullValue() throws Exception { UISelectItem uiSelectItem = new UISelectItem(); uiSelectItem.setItemValue("v"); uiSelectItem.setItemLabel("l"); uiSelectItem.setItemDescription("d"); uiSelectItem.setItemDisabled(true); uiSelectItem.setItemEscaped(true); uiSelectItem.setNoSelectionOption(true); this.component.getChildren().add(uiSelectItem); Iterator<SelectItem> iterator = new SelectItemsIterator(this.context, this.component); SelectItem item = iterator.next(); assertThat(item.getValue(), is((Object) "v")); assertThat(item.getLabel(), is("l")); assertThat(item.getDescription(), is("d")); assertThat(item.isDisabled(), is(true)); assertThat(item.isEscape(), is(true)); assertThat(item.isNoSelectionOption(), is(true)); }