vaadin-select setTextRenderer vis setItemLabelGenerator

I’ve just added a Select element (vaadin 12, vaadin-select-flow 1.0.0.

I tried using an item generator such as:

	Select<Timezone> regions;
	regions.setDataProvider(new ListDataProvider<Timezone>(Timezones.getZones()));
	regions.setItemLabelGenerator(timezone -> timezone.humanName);

I can see that the generator is being called for each timezone however from the results in the UI is is clear that timezone.toString() is being called to render the labels.

If I change the call to :

	Select<Timezone> regions;
	regions.setDataProvider(new ListDataProvider<Timezone>(Timezones.getZones()));
	regions.setTextRenderer(timezone -> timezone.humanName);

The labels are rendered correctly.

The vaadin doco for setTextRenderer states:



    /**
     * Convenience setter for creating a {@link TextRenderer} from the given
     * function that converts the item to a string.
     * <p>
     * <em>NOTE:</em> even though this accepts an {@link ItemLabelGenerator},
     * this is not the same as
     * {@link #setItemLabelGenerator(ItemLabelGenerator)} which does a different
     * thing.
     *
     * @param itemLabelGenerator
     *            the function that creates the text content from the item, not
     *            {@code null}
     */
    public void setTextRenderer(ItemLabelGenerator<T> itemLabelGenerator) {
        Objects.requireNonNull(itemLabelGenerator);
        setRenderer(new TextRenderer<>(itemLabelGenerator));
    }

But this doesn’t actually explain what it does and why doesn’t setItemLabelGenerator work as expected?