class AdapterDelegatesManager {

    public void onBindViewHolder(@NonNull T items, int position,
                                 @NonNull RecyclerView.ViewHolder holder, List payloads) {

        AdapterDelegate<T> delegate = getDelegateForViewType(holder.getItemViewType());
        if (delegate == null) {
            throw new NullPointerException("No delegate found for item at position = "
                    + position
                    + " for viewType = "
                    + holder.getItemViewType());
        }
        delegate.onBindViewHolder(items, position, holder,
                payloads != null ? payloads : PAYLOADS_EMPTY_LIST);
    }

    public  AdapterDelegatesManager();
    public  AdapterDelegatesManager(@NonNull AdapterDelegate<T>... delegates);

}