code: private void initializeItems(Object kid) {
  
          if (kid instanceof UISelectItem) {
              UISelectItem ui = (UISelectItem) kid;
              SelectItem item = (SelectItem) ui.getValue();
              if (item == null) {
                  item = new SelectItem(ui.getItemValue(),
                                        ui.getItemLabel(),
                                        ui.getItemDescription(),
                                        ui.isItemDisabled(),
                                        ui.isItemEscaped(),
                                        ui.isNoSelectionOption());
              }
              updateSingeItemIterator(item);
              items = singleItemIterator;
          } else if (kid instanceof UISelectItems) {
              UISelectItems ui = (UISelectItems) kid;
              Object value = ui.getValue();
              if (value != null) {
                  if (value instanceof SelectItem) {
                      updateSingeItemIterator((SelectItem) value);
                      items = singleItemIterator;
                  } else if (value.getClass().isArray()) {
                      items = new ArrayIterator(ctx, (UISelectItems) kid, value);
                  } else if (value instanceof Iterable) {
                      items = new IterableItemIterator(ctx,
                                                       (UISelectItems) kid,
                                                       (Iterable<?>) value);
                  } else if (value instanceof Map) {
                      items = new MapIterator((Map) value);
                  } else {
                      throw new IllegalArgumentException();
                  }
              }
              if (items != null && !items.hasNext()) {
                  items = null;
              }
          } 
  
      }
docs: <p>
  Initializes the <code>items</code> instance variable with an
  <code>Iterator</code> appropriate to the UISelectItem(s) value.
  </p>