class AvailableValuesAspectDefinition implements LinkkiAspectDefinition {

    @Override
    public Handler createUiUpdater(PropertyDispatcher propertyDispatcher, ComponentWrapper componentWrapper) {
        Aspect<Collection<?>> aspect = createAspect(propertyDispatcher.getProperty(),
                                                    propertyDispatcher.getValueClass());

        List<Object> items = new ArrayList<>();
        ListDataProvider<Object> listDataProvider = new ListDataProvider<>(items);

        setDataProvider(componentWrapper, listDataProvider);

        return () -> updateItems(items, propertyDispatcher.pull(aspect), componentWrapper);
    }

    public  AvailableValuesAspectDefinition(AvailableValuesType availableValuesType,
            BiConsumer<C, ListDataProvider<Object>> dataProviderSetter);

}