@NonNull
    public <E extends T> MapperBuilder<T> bind(@NonNull Class<E> itemClass,
                                               @NonNull Binder<? super E, ?> binder,
                                               @NonNull Predicate<? super E> predicate) {
        return bind(itemClass, 0, binder, predicate);
    }
@ NonNull public < E extends T > MapperBuilder < T > bind ( @ NonNull Class < E > itemClass , @ NonNull Binder < ? super E , ? > binder , @ NonNull Predicate < ? super E > predicate ) { return bind ( itemClass , 0 , binder , predicate ) ; }
Map an item type to the specified binder.
<p>
In addition, this method accepts a {@link Predicate} that will be evaluated per-instance to determine if the
specified binder is suitable for use with the item.
@param itemClass The type of item accepted by the specified binder.
@param binder The binder to be used to bind the specified item type.
@param predicate A predicate that will be evaluated for each item instance to determine if the specified binder
is suitable.
@return This builder, to allow chaining.