package main.java; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.function.Function; public class ItemTypeProviderBuilder { private final List>> itemTypeProvider = new ArrayList<>(); public ItemTypeProviderBuilder provideItemType(Function> itemTypeProvider) { this.itemTypeProvider.add(itemTypeProvider); return this; } public Function> build() { return item -> itemTypeProvider.stream(). map(f -> f.apply(item)). filter(Objects::nonNull). findFirst().orElse(null); } }