ReducingBindingsExtension.groovy
0001 /*
0002  * SPDX-License-Identifier: Apache-2.0
0003  *
0004  * Copyright 2008-2017 the original author or authors.
0005  *
0006  * Licensed under the Apache License, Version 2.0 (the "License");
0007  * you may not use this file except in compliance with the License.
0008  * You may obtain a copy of the License at
0009  *
0010  *     http://www.apache.org/licenses/LICENSE-2.0
0011  *
0012  * Unless required by applicable law or agreed to in writing, software
0013  * distributed under the License is distributed on an "AS IS" BASIS,
0014  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
0015  * See the License for the specific language governing permissions and
0016  * limitations under the License.
0017  */
0018 package griffon.javafx
0019 
0020 import griffon.javafx.beans.binding.ReducingBindings
0021 import groovy.transform.CompileStatic
0022 import javafx.beans.binding.BooleanBinding
0023 import javafx.beans.binding.DoubleBinding
0024 import javafx.beans.binding.FloatBinding
0025 import javafx.beans.binding.IntegerBinding
0026 import javafx.beans.binding.LongBinding
0027 import javafx.beans.binding.NumberBinding
0028 import javafx.beans.binding.ObjectBinding
0029 import javafx.beans.binding.StringBinding
0030 import javafx.beans.value.ObservableValue
0031 import javafx.collections.ObservableList
0032 import javafx.collections.ObservableMap
0033 import javafx.collections.ObservableSet
0034 
0035 import javax.annotation.Nonnull
0036 import javax.annotation.Nullable
0037 import java.util.function.BinaryOperator
0038 import java.util.function.Function
0039 import java.util.function.Supplier
0040 
0041 /**
0042  @author Andres Almiray
0043  @since 2.13.0
0044  */
0045 @CompileStatic
0046 final class ReducingBindingsExtension {
0047     @Nonnull
0048     static <K, V> ObjectBinding<V> reduce(
0049         @Nonnull ObservableMap<K, V> self, @Nullable V defaultValue, @Nonnull BinaryOperator<V> reducer) {
0050         ReducingBindings.reduce(self, defaultValue, reducer)
0051     }
0052 
0053     @Nonnull
0054     static <K, V> ObjectBinding<V> reduce(
0055         @Nonnull ObservableMap<K, V> self, @Nonnull Supplier<V> supplier, @Nonnull BinaryOperator<V> reducer) {
0056         ReducingBindings.reduce(self, supplier, reducer)
0057     }
0058 
0059     @Nonnull
0060     static <K, V> ObjectBinding<V> reduce(
0061         @Nonnull ObservableMap<K, V> self,
0062         @Nullable V defaultValue, @Nonnull ObservableValue<BinaryOperator<V>> reducer) {
0063         ReducingBindings.reduce(self, defaultValue, reducer)
0064     }
0065 
0066     @Nonnull
0067     static <K, V> ObjectBinding<V> reduce(
0068         @Nonnull ObservableMap<K, V> self,
0069         @Nonnull Supplier<V> supplier, @Nonnull ObservableValue<BinaryOperator<V>> reducer) {
0070         ReducingBindings.reduce(self, supplier, reducer)
0071     }
0072 
0073     @Nonnull
0074     static <K, V> BooleanBinding reduceThenMapToBoolean(
0075         @Nonnull ObservableMap<K, V> self,
0076         @Nullable V defaultValue, @Nonnull BinaryOperator<V> reducer, @Nonnull Function<? super V, Boolean> mapper) {
0077         ReducingBindings.reduceThenMapToBoolean(self, defaultValue, reducer, mapper)
0078     }
0079 
0080     @Nonnull
0081     static <K, V> BooleanBinding reduceThenMapToBoolean(
0082         @Nonnull ObservableMap<K, V> self,
0083         @Nonnull Supplier<V> supplier,
0084         @Nonnull BinaryOperator<V> reducer, @Nonnull Function<? super V, Boolean> mapper) {
0085         ReducingBindings.reduceThenMapToBoolean(self, supplier, reducer, mapper)
0086     }
0087 
0088     @Nonnull
0089     static <K, V> BooleanBinding reduceThenMapToBoolean(
0090         @Nonnull ObservableMap<K, V> self,
0091         @Nullable V defaultValue,
0092         @Nonnull ObservableValue<BinaryOperator<V>> reducer,
0093         @Nonnull ObservableValue<Function<? super V, Boolean>> mapper) {
0094         ReducingBindings.reduceThenMapToBoolean(self, defaultValue, reducer, mapper)
0095     }
0096 
0097     @Nonnull
0098     static <K, V> BooleanBinding reduceThenMapToBoolean(
0099         @Nonnull ObservableMap<K, V> self,
0100         @Nonnull Supplier<V> supplier,
0101         @Nonnull ObservableValue<BinaryOperator<V>> reducer,
0102         @Nonnull ObservableValue<Function<? super V, Boolean>> mapper) {
0103         ReducingBindings.reduceThenMapToBoolean(self, supplier, reducer, mapper)
0104     }
0105 
0106     @Nonnull
0107     static <K, V> IntegerBinding reduceThenMapToInteger(
0108         @Nonnull ObservableMap<K, V> self,
0109         @Nullable V defaultValue, @Nonnull BinaryOperator<V> reducer, @Nonnull Function<? super V, Integer> mapper) {
0110         ReducingBindings.reduceThenMapToInteger(self, defaultValue, reducer, mapper)
0111     }
0112 
0113     @Nonnull
0114     static <K, V> IntegerBinding reduceThenMapToInteger(
0115         @Nonnull ObservableMap<K, V> self,
0116         @Nonnull Supplier<V> supplier,
0117         @Nonnull BinaryOperator<V> reducer, @Nonnull Function<? super V, Integer> mapper) {
0118         ReducingBindings.reduceThenMapToInteger(self, supplier, reducer, mapper)
0119     }
0120 
0121     @Nonnull
0122     static <K, V> IntegerBinding reduceThenMapToInteger(
0123         @Nonnull ObservableMap<K, V> self,
0124         @Nullable V defaultValue,
0125         @Nonnull ObservableValue<BinaryOperator<V>> reducer,
0126         @Nonnull ObservableValue<Function<? super V, Integer>> mapper) {
0127         ReducingBindings.reduceThenMapToInteger(self, defaultValue, reducer, mapper)
0128     }
0129 
0130     @Nonnull
0131     static <K, V> IntegerBinding reduceThenMapToInteger(
0132         @Nonnull ObservableMap<K, V> self,
0133         @Nonnull Supplier<V> supplier,
0134         @Nonnull ObservableValue<BinaryOperator<V>> reducer,
0135         @Nonnull ObservableValue<Function<? super V, Integer>> mapper) {
0136         ReducingBindings.reduceThenMapToInteger(self, supplier, reducer, mapper)
0137     }
0138 
0139     @Nonnull
0140     static <K, V> LongBinding reduceThenMapToLong(
0141         @Nonnull ObservableMap<K, V> self,
0142         @Nullable V defaultValue, @Nonnull BinaryOperator<V> reducer, @Nonnull Function<? super V, Long> mapper) {
0143         ReducingBindings.reduceThenMapToLong(self, defaultValue, reducer, mapper)
0144     }
0145 
0146     @Nonnull
0147     static <K, V> LongBinding reduceThenMapToLong(
0148         @Nonnull ObservableMap<K, V> self,
0149         @Nonnull Supplier<V> supplier, @Nonnull BinaryOperator<V> reducer, @Nonnull Function<? super V, Long> mapper) {
0150         ReducingBindings.reduceThenMapToLong(self, supplier, reducer, mapper)
0151     }
0152 
0153     @Nonnull
0154     static <K, V> LongBinding reduceThenMapToLong(
0155         @Nonnull ObservableMap<K, V> self,
0156         @Nullable V defaultValue,
0157         @Nonnull ObservableValue<BinaryOperator<V>> reducer,
0158         @Nonnull ObservableValue<Function<? super V, Long>> mapper) {
0159         ReducingBindings.reduceThenMapToLong(self, defaultValue, reducer, mapper)
0160     }
0161 
0162     @Nonnull
0163     static <K, V> LongBinding reduceThenMapToLong(
0164         @Nonnull ObservableMap<K, V> self,
0165         @Nonnull Supplier<V> supplier,
0166         @Nonnull ObservableValue<BinaryOperator<V>> reducer,
0167         @Nonnull ObservableValue<Function<? super V, Long>> mapper) {
0168         ReducingBindings.reduceThenMapToLong(self, supplier, reducer, mapper)
0169     }
0170 
0171     @Nonnull
0172     static <K, V> FloatBinding reduceThenMapToFloat(
0173         @Nonnull ObservableMap<K, V> self,
0174         @Nullable V defaultValue, @Nonnull BinaryOperator<V> reducer, @Nonnull Function<? super V, Float> mapper) {
0175         ReducingBindings.reduceThenMapToFloat(self, defaultValue, reducer, mapper)
0176     }
0177 
0178     @Nonnull
0179     static <K, V> FloatBinding reduceThenMapToFloat(
0180         @Nonnull ObservableMap<K, V> self,
0181         @Nonnull Supplier<V> supplier, @Nonnull BinaryOperator<V> reducer, @Nonnull Function<? super V, Float> mapper) {
0182         ReducingBindings.reduceThenMapToFloat(self, supplier, reducer, mapper)
0183     }
0184 
0185     @Nonnull
0186     static <K, V> FloatBinding reduceThenMapToFloat(
0187         @Nonnull ObservableMap<K, V> self,
0188         @Nullable V defaultValue,
0189         @Nonnull ObservableValue<BinaryOperator<V>> reducer,
0190         @Nonnull ObservableValue<Function<? super V, Float>> mapper) {
0191         ReducingBindings.reduceThenMapToFloat(self, defaultValue, reducer, mapper)
0192     }
0193 
0194     @Nonnull
0195     static <K, V> FloatBinding reduceThenMapToFloat(
0196         @Nonnull ObservableMap<K, V> self,
0197         @Nonnull Supplier<V> supplier,
0198         @Nonnull ObservableValue<BinaryOperator<V>> reducer,
0199         @Nonnull ObservableValue<Function<? super V, Float>> mapper) {
0200         ReducingBindings.reduceThenMapToFloat(self, supplier, reducer, mapper)
0201     }
0202 
0203     @Nonnull
0204     static <K, V> DoubleBinding reduceThenMapToDouble(
0205         @Nonnull ObservableMap<K, V> self,
0206         @Nullable V defaultValue, @Nonnull BinaryOperator<V> reducer, @Nonnull Function<? super V, Double> mapper) {
0207         ReducingBindings.reduceThenMapToDouble(self, defaultValue, reducer, mapper)
0208     }
0209 
0210     @Nonnull
0211     static <K, V> DoubleBinding reduceThenMapToDouble(
0212         @Nonnull ObservableMap<K, V> self,
0213         @Nonnull Supplier<V> supplier,
0214         @Nonnull BinaryOperator<V> reducer, @Nonnull Function<? super V, Double> mapper) {
0215         ReducingBindings.reduceThenMapToDouble(self, supplier, reducer, mapper)
0216     }
0217 
0218     @Nonnull
0219     static <K, V> DoubleBinding reduceThenMapToDouble(
0220         @Nonnull ObservableMap<K, V> self,
0221         @Nullable V defaultValue,
0222         @Nonnull ObservableValue<BinaryOperator<V>> reducer,
0223         @Nonnull ObservableValue<Function<? super V, Double>> mapper) {
0224         ReducingBindings.reduceThenMapToDouble(self, defaultValue, reducer, mapper)
0225     }
0226 
0227     @Nonnull
0228     static <K, V> DoubleBinding reduceThenMapToDouble(
0229         @Nonnull ObservableMap<K, V> self,
0230         @Nonnull Supplier<V> supplier,
0231         @Nonnull ObservableValue<BinaryOperator<V>> reducer,
0232         @Nonnull ObservableValue<Function<? super V, Double>> mapper) {
0233         ReducingBindings.reduceThenMapToDouble(self, supplier, reducer, mapper)
0234     }
0235 
0236     @Nonnull
0237     static <K, V> StringBinding reduceThenMapToString(
0238         @Nonnull ObservableMap<K, V> self,
0239         @Nullable V defaultValue, @Nonnull BinaryOperator<V> reducer, @Nonnull Function<? super V, String> mapper) {
0240         ReducingBindings.reduceThenMapToString(self, defaultValue, reducer, mapper)
0241     }
0242 
0243     @Nonnull
0244     static <K, V> StringBinding reduceThenMapToString(
0245         @Nonnull ObservableMap<K, V> self,
0246         @Nonnull Supplier<V> supplier,
0247         @Nonnull BinaryOperator<V> reducer, @Nonnull Function<? super V, String> mapper) {
0248         ReducingBindings.reduceThenMapToString(self, supplier, reducer, mapper)
0249     }
0250 
0251     @Nonnull
0252     static <K, V> StringBinding reduceThenMapToString(
0253         @Nonnull ObservableMap<K, V> self,
0254         @Nullable V defaultValue,
0255         @Nonnull ObservableValue<BinaryOperator<V>> reducer,
0256         @Nonnull ObservableValue<Function<? super V, String>> mapper) {
0257         ReducingBindings.reduceThenMapToString(self, defaultValue, reducer, mapper)
0258     }
0259 
0260     @Nonnull
0261     static <K, V> StringBinding reduceThenMapToString(
0262         @Nonnull ObservableMap<K, V> self,
0263         @Nonnull Supplier<V> supplier,
0264         @Nonnull ObservableValue<BinaryOperator<V>> reducer,
0265         @Nonnull ObservableValue<Function<? super V, String>> mapper) {
0266         ReducingBindings.reduceThenMapToString(self, supplier, reducer, mapper)
0267     }
0268 
0269     @Nonnull
0270     static <T> ObjectBinding<T> reduce(
0271         @Nonnull ObservableList<T> self, @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer) {
0272         ReducingBindings.reduce(self, defaultValue, reducer)
0273     }
0274 
0275     @Nonnull
0276     static <T> ObjectBinding<T> reduce(
0277         @Nonnull ObservableList<T> self, @Nonnull Supplier<T> supplier, @Nonnull BinaryOperator<T> reducer) {
0278         ReducingBindings.reduce(self, supplier, reducer)
0279     }
0280 
0281     @Nonnull
0282     static <T> ObjectBinding<T> reduce(
0283         @Nonnull ObservableList<T> self,
0284         @Nullable T defaultValue, @Nonnull ObservableValue<BinaryOperator<T>> reducer) {
0285         ReducingBindings.reduce(self, defaultValue, reducer)
0286     }
0287 
0288     @Nonnull
0289     static <T> ObjectBinding<T> reduce(
0290         @Nonnull ObservableList<T> self,
0291         @Nonnull Supplier<T> supplier, @Nonnull ObservableValue<BinaryOperator<T>> reducer) {
0292         ReducingBindings.reduce(self, supplier, reducer)
0293     }
0294 
0295     @Nonnull
0296     static <T> StringBinding reduceThenMapToString(
0297         @Nonnull ObservableList<T> self,
0298         @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, String> mapper) {
0299         ReducingBindings.reduceThenMapToString(self, defaultValue, reducer, mapper)
0300     }
0301 
0302     @Nonnull
0303     static <T> StringBinding reduceThenMapToString(
0304         @Nonnull ObservableList<T> self,
0305         @Nonnull Supplier<T> supplier,
0306         @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, String> mapper) {
0307         ReducingBindings.reduceThenMapToString(self, supplier, reducer, mapper)
0308     }
0309 
0310     @Nonnull
0311     static <T> StringBinding reduceThenMapToString(
0312         @Nonnull ObservableList<T> self,
0313         @Nullable T defaultValue,
0314         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0315         @Nonnull ObservableValue<Function<? super T, String>> mapper) {
0316         ReducingBindings.reduceThenMapToString(self, defaultValue, reducer, mapper)
0317     }
0318 
0319     @Nonnull
0320     static <T> StringBinding reduceThenMapToString(
0321         @Nonnull ObservableList<T> self,
0322         @Nonnull Supplier<T> supplier,
0323         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0324         @Nonnull ObservableValue<Function<? super T, String>> mapper) {
0325         ReducingBindings.reduceThenMapToString(self, supplier, reducer, mapper)
0326     }
0327 
0328     @Nonnull
0329     static <T> IntegerBinding reduceThenMapToInteger(
0330         @Nonnull ObservableList<T> self,
0331         @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Integer> mapper) {
0332         ReducingBindings.reduceThenMapToInteger(self, defaultValue, reducer, mapper)
0333     }
0334 
0335     @Nonnull
0336     static <T> IntegerBinding reduceThenMapToInteger(
0337         @Nonnull ObservableList<T> self,
0338         @Nonnull Supplier<T> supplier,
0339         @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Integer> mapper) {
0340         ReducingBindings.reduceThenMapToInteger(self, supplier, reducer, mapper)
0341     }
0342 
0343     @Nonnull
0344     static <T> IntegerBinding reduceThenMapToInteger(
0345         @Nonnull ObservableList<T> self,
0346         @Nullable T defaultValue,
0347         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0348         @Nonnull ObservableValue<Function<? super T, Integer>> mapper) {
0349         ReducingBindings.reduceThenMapToInteger(self, defaultValue, reducer, mapper)
0350     }
0351 
0352     @Nonnull
0353     static <T> IntegerBinding reduceThenMapToInteger(
0354         @Nonnull ObservableList<T> self,
0355         @Nonnull Supplier<T> supplier,
0356         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0357         @Nonnull ObservableValue<Function<? super T, Integer>> mapper) {
0358         ReducingBindings.reduceThenMapToInteger(self, supplier, reducer, mapper)
0359     }
0360 
0361     @Nonnull
0362     static <T> LongBinding reduceThenMapToLong(
0363         @Nonnull ObservableList<T> self,
0364         @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Long> mapper) {
0365         ReducingBindings.reduceThenMapToLong(self, defaultValue, reducer, mapper)
0366     }
0367 
0368     @Nonnull
0369     static <T> LongBinding reduceThenMapToLong(
0370         @Nonnull ObservableList<T> self,
0371         @Nonnull Supplier<T> supplier, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Long> mapper) {
0372         ReducingBindings.reduceThenMapToLong(self, supplier, reducer, mapper)
0373     }
0374 
0375     @Nonnull
0376     static <T> LongBinding reduceThenMapToLong(
0377         @Nonnull ObservableList<T> self,
0378         @Nullable T defaultValue,
0379         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0380         @Nonnull ObservableValue<Function<? super T, Long>> mapper) {
0381         ReducingBindings.reduceThenMapToLong(self, defaultValue, reducer, mapper)
0382     }
0383 
0384     @Nonnull
0385     static <T> LongBinding reduceThenMapToLong(
0386         @Nonnull ObservableList<T> self,
0387         @Nonnull Supplier<T> supplier,
0388         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0389         @Nonnull ObservableValue<Function<? super T, Long>> mapper) {
0390         ReducingBindings.reduceThenMapToLong(self, supplier, reducer, mapper)
0391     }
0392 
0393     @Nonnull
0394     static <T> FloatBinding reduceThenMapToFloat(
0395         @Nonnull ObservableList<T> self,
0396         @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Float> mapper) {
0397         ReducingBindings.reduceThenMapToFloat(self, defaultValue, reducer, mapper)
0398     }
0399 
0400     @Nonnull
0401     static <T> FloatBinding reduceThenMapToFloat(
0402         @Nonnull ObservableList<T> self,
0403         @Nonnull Supplier<T> supplier, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Float> mapper) {
0404         ReducingBindings.reduceThenMapToFloat(self, supplier, reducer, mapper)
0405     }
0406 
0407     @Nonnull
0408     static <T> FloatBinding reduceThenMapToFloat(
0409         @Nonnull ObservableList<T> self,
0410         @Nullable T defaultValue,
0411         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0412         @Nonnull ObservableValue<Function<? super T, Float>> mapper) {
0413         ReducingBindings.reduceThenMapToFloat(self, defaultValue, reducer, mapper)
0414     }
0415 
0416     @Nonnull
0417     static <T> FloatBinding reduceThenMapToFloat(
0418         @Nonnull ObservableList<T> self,
0419         @Nonnull Supplier<T> supplier,
0420         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0421         @Nonnull ObservableValue<Function<? super T, Float>> mapper) {
0422         ReducingBindings.reduceThenMapToFloat(self, supplier, reducer, mapper)
0423     }
0424 
0425     @Nonnull
0426     static <T> DoubleBinding reduceThenMapToDouble(
0427         @Nonnull ObservableList<T> self,
0428         @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Double> mapper) {
0429         ReducingBindings.reduceThenMapToDouble(self, defaultValue, reducer, mapper)
0430     }
0431 
0432     @Nonnull
0433     static <T> DoubleBinding reduceThenMapToDouble(
0434         @Nonnull ObservableList<T> self,
0435         @Nonnull Supplier<T> supplier,
0436         @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Double> mapper) {
0437         ReducingBindings.reduceThenMapToDouble(self, supplier, reducer, mapper)
0438     }
0439 
0440     @Nonnull
0441     static <T> DoubleBinding reduceThenMapToDouble(
0442         @Nonnull ObservableList<T> self,
0443         @Nullable T defaultValue,
0444         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0445         @Nonnull ObservableValue<Function<? super T, Double>> mapper) {
0446         ReducingBindings.reduceThenMapToDouble(self, defaultValue, reducer, mapper)
0447     }
0448 
0449     @Nonnull
0450     static <T> DoubleBinding reduceThenMapToDouble(
0451         @Nonnull ObservableList<T> self,
0452         @Nonnull Supplier<T> supplier,
0453         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0454         @Nonnull ObservableValue<Function<? super T, Double>> mapper) {
0455         ReducingBindings.reduceThenMapToDouble(self, supplier, reducer, mapper)
0456     }
0457 
0458     @Nonnull
0459     static <T> BooleanBinding reduceThenMapToBoolean(
0460         @Nonnull ObservableList<T> self,
0461         @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Boolean> mapper) {
0462         ReducingBindings.reduceThenMapToBoolean(self, defaultValue, reducer, mapper)
0463     }
0464 
0465     @Nonnull
0466     static <T> BooleanBinding reduceThenMapToBoolean(
0467         @Nonnull ObservableList<T> self,
0468         @Nonnull Supplier<T> supplier,
0469         @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Boolean> mapper) {
0470         ReducingBindings.reduceThenMapToBoolean(self, supplier, reducer, mapper)
0471     }
0472 
0473     @Nonnull
0474     static <T> BooleanBinding reduceThenMapToBoolean(
0475         @Nonnull ObservableList<T> self,
0476         @Nullable T defaultValue,
0477         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0478         @Nonnull ObservableValue<Function<? super T, Boolean>> mapper) {
0479         ReducingBindings.reduceThenMapToBoolean(self, defaultValue, reducer, mapper)
0480     }
0481 
0482     @Nonnull
0483     static <T> BooleanBinding reduceThenMapToBoolean(
0484         @Nonnull ObservableList<T> self,
0485         @Nonnull Supplier<T> supplier,
0486         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0487         @Nonnull ObservableValue<Function<? super T, Boolean>> mapper) {
0488         ReducingBindings.reduceThenMapToBoolean(self, supplier, reducer, mapper)
0489     }
0490 
0491     @Nonnull
0492     static <T> NumberBinding reduceThenMapToNumber(
0493         @Nonnull ObservableList<T> self,
0494         @Nullable T defaultValue,
0495         @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, ? extends Number> mapper) {
0496         ReducingBindings.reduceThenMapToNumber(self, defaultValue, reducer, mapper)
0497     }
0498 
0499     @Nonnull
0500     static <T> NumberBinding reduceThenMapToNumber(
0501         @Nonnull ObservableList<T> self,
0502         @Nonnull Supplier<T> supplier,
0503         @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Number> mapper) {
0504         ReducingBindings.reduceThenMapToNumber(self, supplier, reducer, mapper)
0505     }
0506 
0507     @Nonnull
0508     static <T> NumberBinding reduceThenMapToNumber(
0509         @Nonnull ObservableList<T> self,
0510         @Nullable T defaultValue,
0511         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0512         @Nonnull ObservableValue<Function<? super T, ? extends Number>> mapper) {
0513         ReducingBindings.reduceThenMapToNumber(self, defaultValue, reducer, mapper)
0514     }
0515 
0516     @Nonnull
0517     static <T> NumberBinding reduceThenMapToNumber(
0518         @Nonnull ObservableList<T> self,
0519         @Nonnull Supplier<T> supplier,
0520         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0521         @Nonnull ObservableValue<Function<? super T, Number>> mapper) {
0522         ReducingBindings.reduceThenMapToNumber(self, supplier, reducer, mapper)
0523     }
0524 
0525     @Nonnull
0526     static <T> ObjectBinding<T> reduce(
0527         @Nonnull ObservableSet<T> self, @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer) {
0528         ReducingBindings.reduce(self, defaultValue, reducer)
0529     }
0530 
0531     @Nonnull
0532     static <T> ObjectBinding<T> reduce(
0533         @Nonnull ObservableSet<T> self, @Nonnull Supplier<T> supplier, @Nonnull BinaryOperator<T> reducer) {
0534         ReducingBindings.reduce(self, supplier, reducer)
0535     }
0536 
0537     @Nonnull
0538     static <T> ObjectBinding<T> reduce(
0539         @Nonnull ObservableSet<T> self,
0540         @Nullable T defaultValue, @Nonnull ObservableValue<BinaryOperator<T>> reducer) {
0541         ReducingBindings.reduce(self, defaultValue, reducer)
0542     }
0543 
0544     @Nonnull
0545     static <T> ObjectBinding<T> reduce(
0546         @Nonnull ObservableSet<T> self,
0547         @Nonnull Supplier<T> supplier, @Nonnull ObservableValue<BinaryOperator<T>> reducer) {
0548         ReducingBindings.reduce(self, supplier, reducer)
0549     }
0550 
0551     @Nonnull
0552     static <T> StringBinding reduceThenMapToString(
0553         @Nonnull ObservableSet<T> self,
0554         @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, String> mapper) {
0555         ReducingBindings.reduceThenMapToString(self, defaultValue, reducer, mapper)
0556     }
0557 
0558     @Nonnull
0559     static <T> StringBinding reduceThenMapToString(
0560         @Nonnull ObservableSet<T> self,
0561         @Nonnull Supplier<T> supplier,
0562         @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, String> mapper) {
0563         ReducingBindings.reduceThenMapToString(self, supplier, reducer, mapper)
0564     }
0565 
0566     @Nonnull
0567     static <T> StringBinding reduceThenMapToString(
0568         @Nonnull ObservableSet<T> self,
0569         @Nullable T defaultValue,
0570         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0571         @Nonnull ObservableValue<Function<? super T, String>> mapper) {
0572         ReducingBindings.reduceThenMapToString(self, defaultValue, reducer, mapper)
0573     }
0574 
0575     @Nonnull
0576     static <T> StringBinding reduceThenMapToString(
0577         @Nonnull ObservableSet<T> self,
0578         @Nonnull Supplier<T> supplier,
0579         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0580         @Nonnull ObservableValue<Function<? super T, String>> mapper) {
0581         ReducingBindings.reduceThenMapToString(self, supplier, reducer, mapper)
0582     }
0583 
0584     @Nonnull
0585     static <T> IntegerBinding reduceThenMapToInteger(
0586         @Nonnull ObservableSet<T> self,
0587         @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Integer> mapper) {
0588         ReducingBindings.reduceThenMapToInteger(self, defaultValue, reducer, mapper)
0589     }
0590 
0591     @Nonnull
0592     static <T> IntegerBinding reduceThenMapToInteger(
0593         @Nonnull ObservableSet<T> self,
0594         @Nonnull Supplier<T> supplier,
0595         @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Integer> mapper) {
0596         ReducingBindings.reduceThenMapToInteger(self, supplier, reducer, mapper)
0597     }
0598 
0599     @Nonnull
0600     static <T> IntegerBinding reduceThenMapToInteger(
0601         @Nonnull ObservableSet<T> self,
0602         @Nullable T defaultValue,
0603         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0604         @Nonnull ObservableValue<Function<? super T, Integer>> mapper) {
0605         ReducingBindings.reduceThenMapToInteger(self, defaultValue, reducer, mapper)
0606     }
0607 
0608     @Nonnull
0609     static <T> IntegerBinding reduceThenMapToInteger(
0610         @Nonnull ObservableSet<T> self,
0611         @Nonnull Supplier<T> supplier,
0612         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0613         @Nonnull ObservableValue<Function<? super T, Integer>> mapper) {
0614         ReducingBindings.reduceThenMapToInteger(self, supplier, reducer, mapper)
0615     }
0616 
0617     @Nonnull
0618     static <T> LongBinding reduceThenMapToLong(
0619         @Nonnull ObservableSet<T> self,
0620         @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Long> mapper) {
0621         ReducingBindings.reduceThenMapToLong(self, defaultValue, reducer, mapper)
0622     }
0623 
0624     @Nonnull
0625     static <T> LongBinding reduceThenMapToLong(
0626         @Nonnull ObservableSet<T> self,
0627         @Nonnull Supplier<T> supplier, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Long> mapper) {
0628         ReducingBindings.reduceThenMapToLong(self, supplier, reducer, mapper)
0629     }
0630 
0631     @Nonnull
0632     static <T> LongBinding reduceThenMapToLong(
0633         @Nonnull ObservableSet<T> self,
0634         @Nullable T defaultValue,
0635         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0636         @Nonnull ObservableValue<Function<? super T, Long>> mapper) {
0637         ReducingBindings.reduceThenMapToLong(self, defaultValue, reducer, mapper)
0638     }
0639 
0640     @Nonnull
0641     static <T> LongBinding reduceThenMapToLong(
0642         @Nonnull ObservableSet<T> self,
0643         @Nonnull Supplier<T> supplier,
0644         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0645         @Nonnull ObservableValue<Function<? super T, Long>> mapper) {
0646         ReducingBindings.reduceThenMapToLong(self, supplier, reducer, mapper)
0647     }
0648 
0649     @Nonnull
0650     static <T> FloatBinding reduceThenMapToFloat(
0651         @Nonnull ObservableSet<T> self,
0652         @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Float> mapper) {
0653         ReducingBindings.reduceThenMapToFloat(self, defaultValue, reducer, mapper)
0654     }
0655 
0656     @Nonnull
0657     static <T> FloatBinding reduceThenMapToFloat(
0658         @Nonnull ObservableSet<T> self,
0659         @Nonnull Supplier<T> supplier, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Float> mapper) {
0660         ReducingBindings.reduceThenMapToFloat(self, supplier, reducer, mapper)
0661     }
0662 
0663     @Nonnull
0664     static <T> FloatBinding reduceThenMapToFloat(
0665         @Nonnull ObservableSet<T> self,
0666         @Nullable T defaultValue,
0667         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0668         @Nonnull ObservableValue<Function<? super T, Float>> mapper) {
0669         ReducingBindings.reduceThenMapToFloat(self, defaultValue, reducer, mapper)
0670     }
0671 
0672     @Nonnull
0673     static <T> FloatBinding reduceThenMapToFloat(
0674         @Nonnull ObservableSet<T> self,
0675         @Nonnull Supplier<T> supplier,
0676         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0677         @Nonnull ObservableValue<Function<? super T, Float>> mapper) {
0678         ReducingBindings.reduceThenMapToFloat(self, supplier, reducer, mapper)
0679     }
0680 
0681     @Nonnull
0682     static <T> DoubleBinding reduceThenMapToDouble(
0683         @Nonnull ObservableSet<T> self,
0684         @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Double> mapper) {
0685         ReducingBindings.reduceThenMapToDouble(self, defaultValue, reducer, mapper)
0686     }
0687 
0688     @Nonnull
0689     static <T> DoubleBinding reduceThenMapToDouble(
0690         @Nonnull ObservableSet<T> self,
0691         @Nonnull Supplier<T> supplier,
0692         @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Double> mapper) {
0693         ReducingBindings.reduceThenMapToDouble(self, supplier, reducer, mapper)
0694     }
0695 
0696     @Nonnull
0697     static <T> DoubleBinding reduceThenMapToDouble(
0698         @Nonnull ObservableSet<T> self,
0699         @Nullable T defaultValue,
0700         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0701         @Nonnull ObservableValue<Function<? super T, Double>> mapper) {
0702         ReducingBindings.reduceThenMapToDouble(self, defaultValue, reducer, mapper)
0703     }
0704 
0705     @Nonnull
0706     static <T> DoubleBinding reduceThenMapToDouble(
0707         @Nonnull ObservableSet<T> self,
0708         @Nonnull Supplier<T> supplier,
0709         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0710         @Nonnull ObservableValue<Function<? super T, Double>> mapper) {
0711         ReducingBindings.reduceThenMapToDouble(self, supplier, reducer, mapper)
0712     }
0713 
0714     @Nonnull
0715     static <T> BooleanBinding reduceThenMapToBoolean(
0716         @Nonnull ObservableSet<T> self,
0717         @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Boolean> mapper) {
0718         ReducingBindings.reduceThenMapToBoolean(self, defaultValue, reducer, mapper)
0719     }
0720 
0721     @Nonnull
0722     static <T> BooleanBinding reduceThenMapToBoolean(
0723         @Nonnull ObservableSet<T> self,
0724         @Nonnull Supplier<T> supplier,
0725         @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Boolean> mapper) {
0726         ReducingBindings.reduceThenMapToBoolean(self, supplier, reducer, mapper)
0727     }
0728 
0729     @Nonnull
0730     static <T> BooleanBinding reduceThenMapToBoolean(
0731         @Nonnull ObservableSet<T> self,
0732         @Nullable T defaultValue,
0733         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0734         @Nonnull ObservableValue<Function<? super T, Boolean>> mapper) {
0735         ReducingBindings.reduceThenMapToBoolean(self, defaultValue, reducer, mapper)
0736     }
0737 
0738     @Nonnull
0739     static <T> BooleanBinding reduceThenMapToBoolean(
0740         @Nonnull ObservableSet<T> self,
0741         @Nonnull Supplier<T> supplier,
0742         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0743         @Nonnull ObservableValue<Function<? super T, Boolean>> mapper) {
0744         ReducingBindings.reduceThenMapToBoolean(self, supplier, reducer, mapper)
0745     }
0746 
0747     @Nonnull
0748     static <T> NumberBinding reduceThenMapToNumber(
0749         @Nonnull ObservableSet<T> self,
0750         @Nullable T defaultValue,
0751         @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, ? extends Number> mapper) {
0752         ReducingBindings.reduceThenMapToNumber(self, defaultValue, reducer, mapper)
0753     }
0754 
0755     @Nonnull
0756     static <T> NumberBinding reduceThenMapToNumber(
0757         @Nonnull ObservableSet<T> self,
0758         @Nonnull Supplier<T> supplier,
0759         @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, Number> mapper) {
0760         ReducingBindings.reduceThenMapToNumber(self, supplier, reducer, mapper)
0761     }
0762 
0763     @Nonnull
0764     static <T> NumberBinding reduceThenMapToNumber(
0765         @Nonnull ObservableSet<T> self,
0766         @Nullable T defaultValue,
0767         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0768         @Nonnull ObservableValue<Function<? super T, ? extends Number>> mapper) {
0769         ReducingBindings.reduceThenMapToNumber(self, defaultValue, reducer, mapper)
0770     }
0771 
0772     @Nonnull
0773     static <T> NumberBinding reduceThenMapToNumber(
0774         @Nonnull ObservableSet<T> self,
0775         @Nonnull Supplier<T> supplier,
0776         @Nonnull ObservableValue<BinaryOperator<T>> reducer,
0777         @Nonnull ObservableValue<Function<? super T, Number>> mapper) {
0778         ReducingBindings.reduceThenMapToNumber(self, supplier, reducer, mapper)
0779     }
0780 
0781     @Nonnull
0782     static <T, R> ObjectBinding<R> reduceThenMap(
0783         @Nonnull ObservableList<T> self,
0784         @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, R> mapper) {
0785         ReducingBindings.reduceThenMap(self, defaultValue, reducer, mapper)
0786     }
0787 
0788     @Nonnull
0789     static <T, R> ObjectBinding<R> reduceThenMap(
0790         @Nonnull ObservableList<T> self,
0791         @Nonnull Supplier<T> supplier, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, R> mapper) {
0792         ReducingBindings.reduceThenMap(self, supplier, reducer, mapper)
0793     }
0794 
0795     @Nonnull
0796     static <T, R> ObjectBinding<R> reduceThenMap(
0797         @Nonnull ObservableList<T> self,
0798         @Nullable T defaultValue,
0799         @Nonnull ObservableValue<BinaryOperator<T>> reducer, @Nonnull ObservableValue<Function<? super T, R>> mapper) {
0800         ReducingBindings.reduceThenMap(self, defaultValue, reducer, mapper)
0801     }
0802 
0803     @Nonnull
0804     static <T, R> ObjectBinding<R> reduceThenMap(
0805         @Nonnull ObservableList<T> self,
0806         @Nonnull Supplier<T> supplier,
0807         @Nonnull ObservableValue<BinaryOperator<T>> reducer, @Nonnull ObservableValue<Function<? super T, R>> mapper) {
0808         ReducingBindings.reduceThenMap(self, supplier, reducer, mapper)
0809     }
0810 
0811     @Nonnull
0812     static <T, R> ObjectBinding<R> reduceThenMap(
0813         @Nonnull ObservableSet<T> self,
0814         @Nullable T defaultValue, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, R> mapper) {
0815         ReducingBindings.reduceThenMap(self, defaultValue, reducer, mapper)
0816     }
0817 
0818     @Nonnull
0819     static <T, R> ObjectBinding<R> reduceThenMap(
0820         @Nonnull ObservableSet<T> self,
0821         @Nonnull Supplier<T> supplier, @Nonnull BinaryOperator<T> reducer, @Nonnull Function<? super T, R> mapper) {
0822         ReducingBindings.reduceThenMap(self, supplier, reducer, mapper)
0823     }
0824 
0825     @Nonnull
0826     static <T, R> ObjectBinding<R> reduceThenMap(
0827         @Nonnull ObservableSet<T> self,
0828         @Nullable T defaultValue,
0829         @Nonnull ObservableValue<BinaryOperator<T>> reducer, @Nonnull ObservableValue<Function<? super T, R>> mapper) {
0830         ReducingBindings.reduceThenMap(self, defaultValue, reducer, mapper)
0831     }
0832 
0833     @Nonnull
0834     static <T, R> ObjectBinding<R> reduceThenMap(
0835         @Nonnull ObservableSet<T> self,
0836         @Nonnull Supplier<T> supplier,
0837         @Nonnull ObservableValue<BinaryOperator<T>> reducer, @Nonnull ObservableValue<Function<? super T, R>> mapper) {
0838         ReducingBindings.reduceThenMap(self, supplier, reducer, mapper)
0839     }
0840 
0841     @Nonnull
0842     static <K, V, R> ObjectBinding<R> reduceThenMap(
0843         @Nonnull ObservableMap<K, V> self,
0844         @Nullable V defaultValue, @Nonnull BinaryOperator<V> reducer, @Nonnull Function<? super V, R> mapper) {
0845         ReducingBindings.reduceThenMap(self, defaultValue, reducer, mapper)
0846     }
0847 
0848     @Nonnull
0849     static <K, V, R> ObjectBinding<R> reduceThenMap(
0850         @Nonnull ObservableMap<K, V> self,
0851         @Nonnull Supplier<V> supplier, @Nonnull BinaryOperator<V> reducer, @Nonnull Function<? super V, R> mapper) {
0852         ReducingBindings.reduceThenMap(self, supplier, reducer, mapper)
0853     }
0854 
0855     @Nonnull
0856     static <K, V, R> ObjectBinding<R> reduceThenMap(
0857         @Nonnull ObservableMap<K, V> self,
0858         @Nullable V defaultValue,
0859         @Nonnull ObservableValue<BinaryOperator<V>> reducer, @Nonnull ObservableValue<Function<? super V, R>> mapper) {
0860         ReducingBindings.reduceThenMap(self, defaultValue, reducer, mapper)
0861     }
0862 
0863     @Nonnull
0864     static <K, V, R> ObjectBinding<R> reduceThenMap(
0865         @Nonnull ObservableMap<K, V> self,
0866         @Nonnull Supplier<V> supplier,
0867         @Nonnull ObservableValue<BinaryOperator<V>> reducer, @Nonnull ObservableValue<Function<? super V, R>> mapper) {
0868         ReducingBindings.reduceThenMap(self, supplier, reducer, mapper)
0869     }
0870 
0871     @Nonnull
0872     static <T, R> ObjectBinding<R> mapThenReduce(
0873         @Nonnull ObservableList<T> self,
0874         @Nullable R defaultValue, @Nonnull Function<? super T, R> mapper, @Nonnull BinaryOperator<R> reducer) {
0875         ReducingBindings.mapThenReduce(self, defaultValue, mapper, reducer)
0876     }
0877 
0878     @Nonnull
0879     static <T, R> ObjectBinding<R> mapThenReduce(
0880         @Nonnull ObservableList<T> self,
0881         @Nonnull Supplier<R> supplier, @Nonnull Function<? super T, R> mapper, @Nonnull BinaryOperator<R> reducer) {
0882         ReducingBindings.mapThenReduce(self, supplier, mapper, reducer)
0883     }
0884 
0885     @Nonnull
0886     static <T, R> ObjectBinding<R> mapThenReduce(
0887         @Nonnull ObservableList<T> self,
0888         @Nullable R defaultValue,
0889         @Nonnull ObservableValue<Function<? super T, R>> mapper, @Nonnull ObservableValue<BinaryOperator<R>> reducer) {
0890         ReducingBindings.mapThenReduce(self, defaultValue, mapper, reducer)
0891     }
0892 
0893     @Nonnull
0894     static <T, R> ObjectBinding<R> mapThenReduce(
0895         @Nonnull ObservableList<T> self,
0896         @Nonnull Supplier<R> supplier,
0897         @Nonnull ObservableValue<Function<? super T, R>> mapper, @Nonnull ObservableValue<BinaryOperator<R>> reducer) {
0898         ReducingBindings.mapThenReduce(self, supplier, mapper, reducer)
0899     }
0900 
0901     @Nonnull
0902     static <T, R> ObjectBinding<R> mapThenReduce(
0903         @Nonnull ObservableSet<T> self,
0904         @Nullable R defaultValue, @Nonnull Function<? super T, R> mapper, @Nonnull BinaryOperator<R> reducer) {
0905         ReducingBindings.mapThenReduce(self, defaultValue, mapper, reducer)
0906     }
0907 
0908     @Nonnull
0909     static <T, R> ObjectBinding<R> mapThenReduce(
0910         @Nonnull ObservableSet<T> self,
0911         @Nonnull Supplier<R> supplier, @Nonnull Function<? super T, R> mapper, @Nonnull BinaryOperator<R> reducer) {
0912         ReducingBindings.mapThenReduce(self, supplier, mapper, reducer)
0913     }
0914 
0915     @Nonnull
0916     static <T, R> ObjectBinding<R> mapThenReduce(
0917         @Nonnull ObservableSet<T> self,
0918         @Nullable R defaultValue,
0919         @Nonnull ObservableValue<Function<? super T, R>> mapper, @Nonnull ObservableValue<BinaryOperator<R>> reducer) {
0920         ReducingBindings.mapThenReduce(self, defaultValue, mapper, reducer)
0921     }
0922 
0923     @Nonnull
0924     static <T, R> ObjectBinding<R> mapThenReduce(
0925         @Nonnull ObservableSet<T> self,
0926         @Nonnull Supplier<R> supplier,
0927         @Nonnull ObservableValue<Function<? super T, R>> mapper, @Nonnull ObservableValue<BinaryOperator<R>> reducer) {
0928         ReducingBindings.mapThenReduce(self, supplier, mapper, reducer)
0929     }
0930 
0931     @Nonnull
0932     static <K, V, R> ObjectBinding<R> mapThenReduce(
0933         @Nonnull ObservableMap<K, V> self,
0934         @Nullable R defaultValue, @Nonnull Function<? super V, R> mapper, @Nonnull BinaryOperator<R> reducer) {
0935         ReducingBindings.mapThenReduce(self, defaultValue, mapper, reducer)
0936     }
0937 
0938     @Nonnull
0939     static <K, V, R> ObjectBinding<R> mapThenReduce(
0940         @Nonnull ObservableMap<K, V> self,
0941         @Nonnull Supplier<R> supplier, @Nonnull Function<? super V, R> mapper, @Nonnull BinaryOperator<R> reducer) {
0942         ReducingBindings.mapThenReduce(self, supplier, mapper, reducer)
0943     }
0944 
0945     @Nonnull
0946     static <K, V, R> ObjectBinding<R> mapThenReduce(
0947         @Nonnull ObservableMap<K, V> self,
0948         @Nullable R defaultValue,
0949         @Nonnull ObservableValue<Function<? super V, R>> mapper, @Nonnull ObservableValue<BinaryOperator<R>> reducer) {
0950         ReducingBindings.mapThenReduce(self, defaultValue, mapper, reducer)
0951     }
0952 
0953     @Nonnull
0954     static <K, V, R> ObjectBinding<R> mapThenReduce(
0955         @Nonnull ObservableMap<K, V> self,
0956         @Nonnull Supplier<R> supplier,
0957         @Nonnull ObservableValue<Function<? super V, R>> mapper, @Nonnull ObservableValue<BinaryOperator<R>> reducer) {
0958         ReducingBindings.mapThenReduce(self, supplier, mapper, reducer)
0959     }
0960 
0961     @Nonnull
0962     static <T> BooleanBinding mapToBooleanThenReduce(
0963         @Nonnull ObservableList<T> self,
0964         @Nullable Boolean defaultValue,
0965         @Nonnull Function<? super T, Boolean> mapper, @Nonnull BinaryOperator<Boolean> reducer) {
0966         ReducingBindings.mapToBooleanThenReduce(self, defaultValue, mapper, reducer)
0967     }
0968 
0969     @Nonnull
0970     static <T> BooleanBinding mapToBooleanThenReduce(
0971         @Nonnull ObservableList<T> self,
0972         @Nonnull Supplier<Boolean> supplier,
0973         @Nonnull Function<? super T, Boolean> mapper, @Nonnull BinaryOperator<Boolean> reducer) {
0974         ReducingBindings.mapToBooleanThenReduce(self, supplier, mapper, reducer)
0975     }
0976 
0977     @Nonnull
0978     static <T> BooleanBinding mapToBooleanThenReduce(
0979         @Nonnull ObservableList<T> self,
0980         @Nullable Boolean defaultValue,
0981         @Nonnull ObservableValue<Function<? super T, Boolean>> mapper,
0982         @Nonnull ObservableValue<BinaryOperator<Boolean>> reducer) {
0983         ReducingBindings.mapToBooleanThenReduce(self, defaultValue, mapper, reducer)
0984     }
0985 
0986     @Nonnull
0987     static <T> BooleanBinding mapToBooleanThenReduce(
0988         @Nonnull ObservableList<T> self,
0989         @Nonnull Supplier<Boolean> supplier,
0990         @Nonnull ObservableValue<Function<? super T, Boolean>> mapper,
0991         @Nonnull ObservableValue<BinaryOperator<Boolean>> reducer) {
0992         ReducingBindings.mapToBooleanThenReduce(self, supplier, mapper, reducer)
0993     }
0994 
0995     @Nonnull
0996     static <T> BooleanBinding mapToBooleanThenReduce(
0997         @Nonnull ObservableSet<T> self,
0998         @Nullable Boolean defaultValue,
0999         @Nonnull Function<? super T, Boolean> mapper, @Nonnull BinaryOperator<Boolean> reducer) {
1000         ReducingBindings.mapToBooleanThenReduce(self, defaultValue, mapper, reducer)
1001     }
1002 
1003     @Nonnull
1004     static <T> BooleanBinding mapToBooleanThenReduce(
1005         @Nonnull ObservableSet<T> self,
1006         @Nonnull Supplier<Boolean> supplier,
1007         @Nonnull Function<? super T, Boolean> mapper, @Nonnull BinaryOperator<Boolean> reducer) {
1008         ReducingBindings.mapToBooleanThenReduce(self, supplier, mapper, reducer)
1009     }
1010 
1011     @Nonnull
1012     static <T> BooleanBinding mapToBooleanThenReduce(
1013         @Nonnull ObservableSet<T> self,
1014         @Nullable Boolean defaultValue,
1015         @Nonnull ObservableValue<Function<? super T, Boolean>> mapper,
1016         @Nonnull ObservableValue<BinaryOperator<Boolean>> reducer) {
1017         ReducingBindings.mapToBooleanThenReduce(self, defaultValue, mapper, reducer)
1018     }
1019 
1020     @Nonnull
1021     static <T> BooleanBinding mapToBooleanThenReduce(
1022         @Nonnull ObservableSet<T> self,
1023         @Nonnull Supplier<Boolean> supplier,
1024         @Nonnull ObservableValue<Function<? super T, Boolean>> mapper,
1025         @Nonnull ObservableValue<BinaryOperator<Boolean>> reducer) {
1026         ReducingBindings.mapToBooleanThenReduce(self, supplier, mapper, reducer)
1027     }
1028 
1029     @Nonnull
1030     static <K, V> BooleanBinding mapToBooleanThenReduce(
1031         @Nonnull ObservableMap<K, V> self,
1032         @Nullable Boolean defaultValue,
1033         @Nonnull Function<? super V, Boolean> mapper, @Nonnull BinaryOperator<Boolean> reducer) {
1034         ReducingBindings.mapToBooleanThenReduce(self, defaultValue, mapper, reducer)
1035     }
1036 
1037     @Nonnull
1038     static <K, V> BooleanBinding mapToBooleanThenReduce(
1039         @Nonnull ObservableMap<K, V> self,
1040         @Nonnull Supplier<Boolean> supplier,
1041         @Nonnull Function<? super V, Boolean> mapper, @Nonnull BinaryOperator<Boolean> reducer) {
1042         ReducingBindings.mapToBooleanThenReduce(self, supplier, mapper, reducer)
1043     }
1044 
1045     @Nonnull
1046     static <K, V> BooleanBinding mapToBooleanThenReduce(
1047         @Nonnull ObservableMap<K, V> self,
1048         @Nullable Boolean defaultValue,
1049         @Nonnull ObservableValue<Function<? super V, Boolean>> mapper,
1050         @Nonnull ObservableValue<BinaryOperator<Boolean>> reducer) {
1051         ReducingBindings.mapToBooleanThenReduce(self, defaultValue, mapper, reducer)
1052     }
1053 
1054     @Nonnull
1055     static <K, V> BooleanBinding mapToBooleanThenReduce(
1056         @Nonnull ObservableMap<K, V> self,
1057         @Nonnull Supplier<Boolean> supplier,
1058         @Nonnull ObservableValue<Function<? super V, Boolean>> mapper,
1059         @Nonnull ObservableValue<BinaryOperator<Boolean>> reducer) {
1060         ReducingBindings.mapToBooleanThenReduce(self, supplier, mapper, reducer)
1061     }
1062 
1063     @Nonnull
1064     static <T> IntegerBinding mapToIntegerThenReduce(
1065         @Nonnull ObservableList<T> self,
1066         @Nullable Integer defaultValue,
1067         @Nonnull Function<? super T, Integer> mapper, @Nonnull BinaryOperator<Integer> reducer) {
1068         ReducingBindings.mapToIntegerThenReduce(self, defaultValue, mapper, reducer)
1069     }
1070 
1071     @Nonnull
1072     static <T> IntegerBinding mapToIntegerThenReduce(
1073         @Nonnull ObservableList<T> self,
1074         @Nonnull Supplier<Integer> supplier,
1075         @Nonnull Function<? super T, Integer> mapper, @Nonnull BinaryOperator<Integer> reducer) {
1076         ReducingBindings.mapToIntegerThenReduce(self, supplier, mapper, reducer)
1077     }
1078 
1079     @Nonnull
1080     static <T> IntegerBinding mapToIntegerThenReduce(
1081         @Nonnull ObservableList<T> self,
1082         @Nullable Integer defaultValue,
1083         @Nonnull ObservableValue<Function<? super T, Integer>> mapper,
1084         @Nonnull ObservableValue<BinaryOperator<Integer>> reducer) {
1085         ReducingBindings.mapToIntegerThenReduce(self, defaultValue, mapper, reducer)
1086     }
1087 
1088     @Nonnull
1089     static <T> IntegerBinding mapToIntegerThenReduce(
1090         @Nonnull ObservableList<T> self,
1091         @Nonnull Supplier<Integer> supplier,
1092         @Nonnull ObservableValue<Function<? super T, Integer>> mapper,
1093         @Nonnull ObservableValue<BinaryOperator<Integer>> reducer) {
1094         ReducingBindings.mapToIntegerThenReduce(self, supplier, mapper, reducer)
1095     }
1096 
1097     @Nonnull
1098     static <T> IntegerBinding mapToIntegerThenReduce(
1099         @Nonnull ObservableSet<T> self,
1100         @Nullable Integer defaultValue,
1101         @Nonnull Function<? super T, Integer> mapper, @Nonnull BinaryOperator<Integer> reducer) {
1102         ReducingBindings.mapToIntegerThenReduce(self, defaultValue, mapper, reducer)
1103     }
1104 
1105     @Nonnull
1106     static <T> IntegerBinding mapToIntegerThenReduce(
1107         @Nonnull ObservableSet<T> self,
1108         @Nonnull Supplier<Integer> supplier,
1109         @Nonnull Function<? super T, Integer> mapper, @Nonnull BinaryOperator<Integer> reducer) {
1110         ReducingBindings.mapToIntegerThenReduce(self, supplier, mapper, reducer)
1111     }
1112 
1113     @Nonnull
1114     static <T> IntegerBinding mapToIntegerThenReduce(
1115         @Nonnull ObservableSet<T> self,
1116         @Nullable Integer defaultValue,
1117         @Nonnull ObservableValue<Function<? super T, Integer>> mapper,
1118         @Nonnull ObservableValue<BinaryOperator<Integer>> reducer) {
1119         ReducingBindings.mapToIntegerThenReduce(self, defaultValue, mapper, reducer)
1120     }
1121 
1122     @Nonnull
1123     static <T> IntegerBinding mapToIntegerThenReduce(
1124         @Nonnull ObservableSet<T> self,
1125         @Nonnull Supplier<Integer> supplier,
1126         @Nonnull ObservableValue<Function<? super T, Integer>> mapper,
1127         @Nonnull ObservableValue<BinaryOperator<Integer>> reducer) {
1128         ReducingBindings.mapToIntegerThenReduce(self, supplier, mapper, reducer)
1129     }
1130 
1131     @Nonnull
1132     static <K, V> IntegerBinding mapToIntegerThenReduce(
1133         @Nonnull ObservableMap<K, V> self,
1134         @Nullable Integer defaultValue,
1135         @Nonnull Function<? super V, Integer> mapper, @Nonnull BinaryOperator<Integer> reducer) {
1136         ReducingBindings.mapToIntegerThenReduce(self, defaultValue, mapper, reducer)
1137     }
1138 
1139     @Nonnull
1140     static <K, V> IntegerBinding mapToIntegerThenReduce(
1141         @Nonnull ObservableMap<K, V> self,
1142         @Nonnull Supplier<Integer> supplier,
1143         @Nonnull Function<? super V, Integer> mapper, @Nonnull BinaryOperator<Integer> reducer) {
1144         ReducingBindings.mapToIntegerThenReduce(self, supplier, mapper, reducer)
1145     }
1146 
1147     @Nonnull
1148     static <K, V> IntegerBinding mapToIntegerThenReduce(
1149         @Nonnull ObservableMap<K, V> self,
1150         @Nullable Integer defaultValue,
1151         @Nonnull ObservableValue<Function<? super V, Integer>> mapper,
1152         @Nonnull ObservableValue<BinaryOperator<Integer>> reducer) {
1153         ReducingBindings.mapToIntegerThenReduce(self, defaultValue, mapper, reducer)
1154     }
1155 
1156     @Nonnull
1157     static <K, V> IntegerBinding mapToIntegerThenReduce(
1158         @Nonnull ObservableMap<K, V> self,
1159         @Nonnull Supplier<Integer> supplier,
1160         @Nonnull ObservableValue<Function<? super V, Integer>> mapper,
1161         @Nonnull ObservableValue<BinaryOperator<Integer>> reducer) {
1162         ReducingBindings.mapToIntegerThenReduce(self, supplier, mapper, reducer)
1163     }
1164 
1165     @Nonnull
1166     static <T> LongBinding mapToLongThenReduce(
1167         @Nonnull ObservableList<T> self,
1168         @Nullable Long defaultValue, @Nonnull Function<? super T, Long> mapper, @Nonnull BinaryOperator<Long> reducer) {
1169         ReducingBindings.mapToLongThenReduce(self, defaultValue, mapper, reducer)
1170     }
1171 
1172     @Nonnull
1173     static <T> LongBinding mapToLongThenReduce(
1174         @Nonnull ObservableList<T> self,
1175         @Nonnull Supplier<Long> supplier,
1176         @Nonnull Function<? super T, Long> mapper, @Nonnull BinaryOperator<Long> reducer) {
1177         ReducingBindings.mapToLongThenReduce(self, supplier, mapper, reducer)
1178     }
1179 
1180     @Nonnull
1181     static <T> LongBinding mapToLongThenReduce(
1182         @Nonnull ObservableList<T> self,
1183         @Nullable Long defaultValue,
1184         @Nonnull ObservableValue<Function<? super T, Long>> mapper,
1185         @Nonnull ObservableValue<BinaryOperator<Long>> reducer) {
1186         ReducingBindings.mapToLongThenReduce(self, defaultValue, mapper, reducer)
1187     }
1188 
1189     @Nonnull
1190     static <T> LongBinding mapToLongThenReduce(
1191         @Nonnull ObservableList<T> self,
1192         @Nonnull Supplier<Long> supplier,
1193         @Nonnull ObservableValue<Function<? super T, Long>> mapper,
1194         @Nonnull ObservableValue<BinaryOperator<Long>> reducer) {
1195         ReducingBindings.mapToLongThenReduce(self, supplier, mapper, reducer)
1196     }
1197 
1198     @Nonnull
1199     static <T> LongBinding mapToLongThenReduce(
1200         @Nonnull ObservableSet<T> self,
1201         @Nullable Long defaultValue, @Nonnull Function<? super T, Long> mapper, @Nonnull BinaryOperator<Long> reducer) {
1202         ReducingBindings.mapToLongThenReduce(self, defaultValue, mapper, reducer)
1203     }
1204 
1205     @Nonnull
1206     static <T> LongBinding mapToLongThenReduce(
1207         @Nonnull ObservableSet<T> self,
1208         @Nonnull Supplier<Long> supplier,
1209         @Nonnull Function<? super T, Long> mapper, @Nonnull BinaryOperator<Long> reducer) {
1210         ReducingBindings.mapToLongThenReduce(self, supplier, mapper, reducer)
1211     }
1212 
1213     @Nonnull
1214     static <T> LongBinding mapToLongThenReduce(
1215         @Nonnull ObservableSet<T> self,
1216         @Nullable Long defaultValue,
1217         @Nonnull ObservableValue<Function<? super T, Long>> mapper,
1218         @Nonnull ObservableValue<BinaryOperator<Long>> reducer) {
1219         ReducingBindings.mapToLongThenReduce(self, defaultValue, mapper, reducer)
1220     }
1221 
1222     @Nonnull
1223     static <T> LongBinding mapToLongThenReduce(
1224         @Nonnull ObservableSet<T> self,
1225         @Nonnull Supplier<Long> supplier,
1226         @Nonnull ObservableValue<Function<? super T, Long>> mapper,
1227         @Nonnull ObservableValue<BinaryOperator<Long>> reducer) {
1228         ReducingBindings.mapToLongThenReduce(self, supplier, mapper, reducer)
1229     }
1230 
1231     @Nonnull
1232     static <K, V> LongBinding mapToLongThenReduce(
1233         @Nonnull ObservableMap<K, V> self,
1234         @Nullable Long defaultValue, @Nonnull Function<? super V, Long> mapper, @Nonnull BinaryOperator<Long> reducer) {
1235         ReducingBindings.mapToLongThenReduce(self, defaultValue, mapper, reducer)
1236     }
1237 
1238     @Nonnull
1239     static <K, V> LongBinding mapToLongThenReduce(
1240         @Nonnull ObservableMap<K, V> self,
1241         @Nonnull Supplier<Long> supplier,
1242         @Nonnull Function<? super V, Long> mapper, @Nonnull BinaryOperator<Long> reducer) {
1243         ReducingBindings.mapToLongThenReduce(self, supplier, mapper, reducer)
1244     }
1245 
1246     @Nonnull
1247     static <K, V> LongBinding mapToLongThenReduce(
1248         @Nonnull ObservableMap<K, V> self,
1249         @Nullable Long defaultValue,
1250         @Nonnull ObservableValue<Function<? super V, Long>> mapper,
1251         @Nonnull ObservableValue<BinaryOperator<Long>> reducer) {
1252         ReducingBindings.mapToLongThenReduce(self, defaultValue, mapper, reducer)
1253     }
1254 
1255     @Nonnull
1256     static <K, V> LongBinding mapToLongThenReduce(
1257         @Nonnull ObservableMap<K, V> self,
1258         @Nonnull Supplier<Long> supplier,
1259         @Nonnull ObservableValue<Function<? super V, Long>> mapper,
1260         @Nonnull ObservableValue<BinaryOperator<Long>> reducer) {
1261         ReducingBindings.mapToLongThenReduce(self, supplier, mapper, reducer)
1262     }
1263 
1264     @Nonnull
1265     static <T> FloatBinding mapToFloatThenReduce(
1266         @Nonnull ObservableList<T> self,
1267         @Nullable Float defaultValue,
1268         @Nonnull Function<? super T, Float> mapper, @Nonnull BinaryOperator<Float> reducer) {
1269         ReducingBindings.mapToFloatThenReduce(self, defaultValue, mapper, reducer)
1270     }
1271 
1272     @Nonnull
1273     static <T> FloatBinding mapToFloatThenReduce(
1274         @Nonnull ObservableList<T> self,
1275         @Nonnull Supplier<Float> supplier,
1276         @Nonnull Function<? super T, Float> mapper, @Nonnull BinaryOperator<Float> reducer) {
1277         ReducingBindings.mapToFloatThenReduce(self, supplier, mapper, reducer)
1278     }
1279 
1280     @Nonnull
1281     static <T> FloatBinding mapToFloatThenReduce(
1282         @Nonnull ObservableList<T> self,
1283         @Nullable Float defaultValue,
1284         @Nonnull ObservableValue<Function<? super T, Float>> mapper,
1285         @Nonnull ObservableValue<BinaryOperator<Float>> reducer) {
1286         ReducingBindings.mapToFloatThenReduce(self, defaultValue, mapper, reducer)
1287     }
1288 
1289     @Nonnull
1290     static <T> FloatBinding mapToFloatThenReduce(
1291         @Nonnull ObservableList<T> self,
1292         @Nonnull Supplier<Float> supplier,
1293         @Nonnull ObservableValue<Function<? super T, Float>> mapper,
1294         @Nonnull ObservableValue<BinaryOperator<Float>> reducer) {
1295         ReducingBindings.mapToFloatThenReduce(self, supplier, mapper, reducer)
1296     }
1297 
1298     @Nonnull
1299     static <T> FloatBinding mapToFloatThenReduce(
1300         @Nonnull ObservableSet<T> self,
1301         @Nullable Float defaultValue,
1302         @Nonnull Function<? super T, Float> mapper, @Nonnull BinaryOperator<Float> reducer) {
1303         ReducingBindings.mapToFloatThenReduce(self, defaultValue, mapper, reducer)
1304     }
1305 
1306     @Nonnull
1307     static <T> FloatBinding mapToFloatThenReduce(
1308         @Nonnull ObservableSet<T> self,
1309         @Nonnull Supplier<Float> supplier,
1310         @Nonnull Function<? super T, Float> mapper, @Nonnull BinaryOperator<Float> reducer) {
1311         ReducingBindings.mapToFloatThenReduce(self, supplier, mapper, reducer)
1312     }
1313 
1314     @Nonnull
1315     static <T> FloatBinding mapToFloatThenReduce(
1316         @Nonnull ObservableSet<T> self,
1317         @Nullable Float defaultValue,
1318         @Nonnull ObservableValue<Function<? super T, Float>> mapper,
1319         @Nonnull ObservableValue<BinaryOperator<Float>> reducer) {
1320         ReducingBindings.mapToFloatThenReduce(self, defaultValue, mapper, reducer)
1321     }
1322 
1323     @Nonnull
1324     static <T> FloatBinding mapToFloatThenReduce(
1325         @Nonnull ObservableSet<T> self,
1326         @Nonnull Supplier<Float> supplier,
1327         @Nonnull ObservableValue<Function<? super T, Float>> mapper,
1328         @Nonnull ObservableValue<BinaryOperator<Float>> reducer) {
1329         ReducingBindings.mapToFloatThenReduce(self, supplier, mapper, reducer)
1330     }
1331 
1332     @Nonnull
1333     static <K, V> FloatBinding mapToFloatThenReduce(
1334         @Nonnull ObservableMap<K, V> self,
1335         @Nullable Float defaultValue,
1336         @Nonnull Function<? super V, Float> mapper, @Nonnull BinaryOperator<Float> reducer) {
1337         ReducingBindings.mapToFloatThenReduce(self, defaultValue, mapper, reducer)
1338     }
1339 
1340     @Nonnull
1341     static <K, V> FloatBinding mapToFloatThenReduce(
1342         @Nonnull ObservableMap<K, V> self,
1343         @Nonnull Supplier<Float> supplier,
1344         @Nonnull Function<? super V, Float> mapper, @Nonnull BinaryOperator<Float> reducer) {
1345         ReducingBindings.mapToFloatThenReduce(self, supplier, mapper, reducer)
1346     }
1347 
1348     @Nonnull
1349     static <K, V> FloatBinding mapToFloatThenReduce(
1350         @Nonnull ObservableMap<K, V> self,
1351         @Nullable Float defaultValue,
1352         @Nonnull ObservableValue<Function<? super V, Float>> mapper,
1353         @Nonnull ObservableValue<BinaryOperator<Float>> reducer) {
1354         ReducingBindings.mapToFloatThenReduce(self, defaultValue, mapper, reducer)
1355     }
1356 
1357     @Nonnull
1358     static <K, V> FloatBinding mapToFloatThenReduce(
1359         @Nonnull ObservableMap<K, V> self,
1360         @Nonnull Supplier<Float> supplier,
1361         @Nonnull ObservableValue<Function<? super V, Float>> mapper,
1362         @Nonnull ObservableValue<BinaryOperator<Float>> reducer) {
1363         ReducingBindings.mapToFloatThenReduce(self, supplier, mapper, reducer)
1364     }
1365 
1366     @Nonnull
1367     static <T> DoubleBinding mapToDoubleThenReduce(
1368         @Nonnull ObservableList<T> self,
1369         @Nullable Double defaultValue,
1370         @Nonnull Function<? super T, Double> mapper, @Nonnull BinaryOperator<Double> reducer) {
1371         ReducingBindings.mapToDoubleThenReduce(self, defaultValue, mapper, reducer)
1372     }
1373 
1374     @Nonnull
1375     static <T> DoubleBinding mapToDoubleThenReduce(
1376         @Nonnull ObservableList<T> self,
1377         @Nonnull Supplier<Double> supplier,
1378         @Nonnull Function<? super T, Double> mapper, @Nonnull BinaryOperator<Double> reducer) {
1379         ReducingBindings.mapToDoubleThenReduce(self, supplier, mapper, reducer)
1380     }
1381 
1382     @Nonnull
1383     static <T> DoubleBinding mapToDoubleThenReduce(
1384         @Nonnull ObservableList<T> self,
1385         @Nullable Double defaultValue,
1386         @Nonnull ObservableValue<Function<? super T, Double>> mapper,
1387         @Nonnull ObservableValue<BinaryOperator<Double>> reducer) {
1388         ReducingBindings.mapToDoubleThenReduce(self, defaultValue, mapper, reducer)
1389     }
1390 
1391     @Nonnull
1392     static <T> DoubleBinding mapToDoubleThenReduce(
1393         @Nonnull ObservableList<T> self,
1394         @Nonnull Supplier<Double> supplier,
1395         @Nonnull ObservableValue<Function<? super T, Double>> mapper,
1396         @Nonnull ObservableValue<BinaryOperator<Double>> reducer) {
1397         ReducingBindings.mapToDoubleThenReduce(self, supplier, mapper, reducer)
1398     }
1399 
1400     @Nonnull
1401     static <T> DoubleBinding mapToDoubleThenReduce(
1402         @Nonnull ObservableSet<T> self,
1403         @Nullable Double defaultValue,
1404         @Nonnull Function<? super T, Double> mapper, @Nonnull BinaryOperator<Double> reducer) {
1405         ReducingBindings.mapToDoubleThenReduce(self, defaultValue, mapper, reducer)
1406     }
1407 
1408     @Nonnull
1409     static <T> DoubleBinding mapToDoubleThenReduce(
1410         @Nonnull ObservableSet<T> self,
1411         @Nonnull Supplier<Double> supplier,
1412         @Nonnull Function<? super T, Double> mapper, @Nonnull BinaryOperator<Double> reducer) {
1413         ReducingBindings.mapToDoubleThenReduce(self, supplier, mapper, reducer)
1414     }
1415 
1416     @Nonnull
1417     static <T> DoubleBinding mapToDoubleThenReduce(
1418         @Nonnull ObservableSet<T> self,
1419         @Nullable Double defaultValue,
1420         @Nonnull ObservableValue<Function<? super T, Double>> mapper,
1421         @Nonnull ObservableValue<BinaryOperator<Double>> reducer) {
1422         ReducingBindings.mapToDoubleThenReduce(self, defaultValue, mapper, reducer)
1423     }
1424 
1425     @Nonnull
1426     static <T> DoubleBinding mapToDoubleThenReduce(
1427         @Nonnull ObservableSet<T> self,
1428         @Nonnull Supplier<Double> supplier,
1429         @Nonnull ObservableValue<Function<? super T, Double>> mapper,
1430         @Nonnull ObservableValue<BinaryOperator<Double>> reducer) {
1431         ReducingBindings.mapToDoubleThenReduce(self, supplier, mapper, reducer)
1432     }
1433 
1434     @Nonnull
1435     static <K, V> DoubleBinding mapToDoubleThenReduce(
1436         @Nonnull ObservableMap<K, V> self,
1437         @Nullable Double defaultValue,
1438         @Nonnull Function<? super V, Double> mapper, @Nonnull BinaryOperator<Double> reducer) {
1439         ReducingBindings.mapToDoubleThenReduce(self, defaultValue, mapper, reducer)
1440     }
1441 
1442     @Nonnull
1443     static <K, V> DoubleBinding mapToDoubleThenReduce(
1444         @Nonnull ObservableMap<K, V> self,
1445         @Nonnull Supplier<Double> supplier,
1446         @Nonnull Function<? super V, Double> mapper, @Nonnull BinaryOperator<Double> reducer) {
1447         ReducingBindings.mapToDoubleThenReduce(self, supplier, mapper, reducer)
1448     }
1449 
1450     @Nonnull
1451     static <K, V> DoubleBinding mapToDoubleThenReduce(
1452         @Nonnull ObservableMap<K, V> self,
1453         @Nullable Double defaultValue,
1454         @Nonnull ObservableValue<Function<? super V, Double>> mapper,
1455         @Nonnull ObservableValue<BinaryOperator<Double>> reducer) {
1456         ReducingBindings.mapToDoubleThenReduce(self, defaultValue, mapper, reducer)
1457     }
1458 
1459     @Nonnull
1460     static <K, V> DoubleBinding mapToDoubleThenReduce(
1461         @Nonnull ObservableMap<K, V> self,
1462         @Nonnull Supplier<Double> supplier,
1463         @Nonnull ObservableValue<Function<? super V, Double>> mapper,
1464         @Nonnull ObservableValue<BinaryOperator<Double>> reducer) {
1465         ReducingBindings.mapToDoubleThenReduce(self, supplier, mapper, reducer)
1466     }
1467 
1468     @Nonnull
1469     static <T> NumberBinding mapToNumberThenReduce(
1470         @Nonnull ObservableList<T> self,
1471         @Nullable Number defaultValue,
1472         @Nonnull Function<? super T, Number> mapper, @Nonnull BinaryOperator<Number> reducer) {
1473         ReducingBindings.mapToNumberThenReduce(self, defaultValue, mapper, reducer)
1474     }
1475 
1476     @Nonnull
1477     static <T> NumberBinding mapToNumberThenReduce(
1478         @Nonnull ObservableList<T> self,
1479         @Nonnull Supplier<Number> supplier,
1480         @Nonnull Function<? super T, Number> mapper, @Nonnull BinaryOperator<Number> reducer) {
1481         ReducingBindings.mapToNumberThenReduce(self, supplier, mapper, reducer)
1482     }
1483 
1484     @Nonnull
1485     static <T> NumberBinding mapToNumberThenReduce(
1486         @Nonnull ObservableList<T> self,
1487         @Nullable Number defaultValue,
1488         @Nonnull ObservableValue<Function<? super T, Number>> mapper,
1489         @Nonnull ObservableValue<BinaryOperator<Number>> reducer) {
1490         ReducingBindings.mapToNumberThenReduce(self, defaultValue, mapper, reducer)
1491     }
1492 
1493     @Nonnull
1494     static <T> NumberBinding mapToNumberThenReduce(
1495         @Nonnull ObservableList<T> self,
1496         @Nonnull Supplier<Number> supplier,
1497         @Nonnull ObservableValue<Function<? super T, Number>> mapper,
1498         @Nonnull ObservableValue<BinaryOperator<Number>> reducer) {
1499         ReducingBindings.mapToNumberThenReduce(self, supplier, mapper, reducer)
1500     }
1501 
1502     @Nonnull
1503     static <T> NumberBinding mapToNumberThenReduce(
1504         @Nonnull ObservableSet<T> self,
1505         @Nullable Number defaultValue,
1506         @Nonnull Function<? super T, Number> mapper, @Nonnull BinaryOperator<Number> reducer) {
1507         ReducingBindings.mapToNumberThenReduce(self, defaultValue, mapper, reducer)
1508     }
1509 
1510     @Nonnull
1511     static <T> NumberBinding mapToNumberThenReduce(
1512         @Nonnull ObservableSet<T> self,
1513         @Nonnull Supplier<Number> supplier,
1514         @Nonnull Function<? super T, Number> mapper, @Nonnull BinaryOperator<Number> reducer) {
1515         ReducingBindings.mapToNumberThenReduce(self, supplier, mapper, reducer)
1516     }
1517 
1518     @Nonnull
1519     static <T> NumberBinding mapToNumberThenReduce(
1520         @Nonnull ObservableSet<T> self,
1521         @Nullable Number defaultValue,
1522         @Nonnull ObservableValue<Function<? super T, Number>> mapper,
1523         @Nonnull ObservableValue<BinaryOperator<Number>> reducer) {
1524         ReducingBindings.mapToNumberThenReduce(self, defaultValue, mapper, reducer)
1525     }
1526 
1527     @Nonnull
1528     static <T> NumberBinding mapToNumberThenReduce(
1529         @Nonnull ObservableSet<T> self,
1530         @Nonnull Supplier<Number> supplier,
1531         @Nonnull ObservableValue<Function<? super T, Number>> mapper,
1532         @Nonnull ObservableValue<BinaryOperator<Number>> reducer) {
1533         ReducingBindings.mapToNumberThenReduce(self, supplier, mapper, reducer)
1534     }
1535 
1536     @Nonnull
1537     static <K, V> NumberBinding mapToNumberThenReduce(
1538         @Nonnull ObservableMap<K, V> self,
1539         @Nullable Number defaultValue,
1540         @Nonnull Function<? super V, Number> mapper, @Nonnull BinaryOperator<Number> reducer) {
1541         ReducingBindings.mapToNumberThenReduce(self, defaultValue, mapper, reducer)
1542     }
1543 
1544     @Nonnull
1545     static <K, V> NumberBinding mapToNumberThenReduce(
1546         @Nonnull ObservableMap<K, V> self,
1547         @Nonnull Supplier<Number> supplier,
1548         @Nonnull Function<? super V, Number> mapper, @Nonnull BinaryOperator<Number> reducer) {
1549         ReducingBindings.mapToNumberThenReduce(self, supplier, mapper, reducer)
1550     }
1551 
1552     @Nonnull
1553     static <K, V> NumberBinding mapToNumberThenReduce(
1554         @Nonnull ObservableMap<K, V> self,
1555         @Nullable Number defaultValue,
1556         @Nonnull ObservableValue<Function<? super V, Number>> mapper,
1557         @Nonnull ObservableValue<BinaryOperator<Number>> reducer) {
1558         ReducingBindings.mapToNumberThenReduce(self, defaultValue, mapper, reducer)
1559     }
1560 
1561     @Nonnull
1562     static <K, V> NumberBinding mapToNumberThenReduce(
1563         @Nonnull ObservableMap<K, V> self,
1564         @Nonnull Supplier<Number> supplier,
1565         @Nonnull ObservableValue<Function<? super V, Number>> mapper,
1566         @Nonnull ObservableValue<BinaryOperator<Number>> reducer) {
1567         ReducingBindings.mapToNumberThenReduce(self, supplier, mapper, reducer)
1568     }
1569 
1570     @Nonnull
1571     static <T> StringBinding mapToStringThenReduce(
1572         @Nonnull ObservableList<T> self,
1573         @Nullable String defaultValue,
1574         @Nonnull Function<? super T, String> mapper, @Nonnull BinaryOperator<String> reducer) {
1575         ReducingBindings.mapToStringThenReduce(self, defaultValue, mapper, reducer)
1576     }
1577 
1578     @Nonnull
1579     static <T> StringBinding mapToStringThenReduce(
1580         @Nonnull ObservableList<T> self,
1581         @Nonnull Supplier<String> supplier,
1582         @Nonnull Function<? super T, String> mapper, @Nonnull BinaryOperator<String> reducer) {
1583         ReducingBindings.mapToStringThenReduce(self, supplier, mapper, reducer)
1584     }
1585 
1586     @Nonnull
1587     static <T> StringBinding mapToStringThenReduce(
1588         @Nonnull ObservableList<T> self,
1589         @Nullable String defaultValue,
1590         @Nonnull ObservableValue<Function<? super T, String>> mapper,
1591         @Nonnull ObservableValue<BinaryOperator<String>> reducer) {
1592         ReducingBindings.mapToStringThenReduce(self, defaultValue, mapper, reducer)
1593     }
1594 
1595     @Nonnull
1596     static <T> StringBinding mapToStringThenReduce(
1597         @Nonnull ObservableList<T> self,
1598         @Nonnull Supplier<String> supplier,
1599         @Nonnull ObservableValue<Function<? super T, String>> mapper,
1600         @Nonnull ObservableValue<BinaryOperator<String>> reducer) {
1601         ReducingBindings.mapToStringThenReduce(self, supplier, mapper, reducer)
1602     }
1603 
1604     @Nonnull
1605     static <T> StringBinding mapToStringThenReduce(
1606         @Nonnull ObservableSet<T> self,
1607         @Nullable String defaultValue,
1608         @Nonnull Function<? super T, String> mapper, @Nonnull BinaryOperator<String> reducer) {
1609         ReducingBindings.mapToStringThenReduce(self, defaultValue, mapper, reducer)
1610     }
1611 
1612     @Nonnull
1613     static <T> StringBinding mapToStringThenReduce(
1614         @Nonnull ObservableSet<T> self,
1615         @Nonnull Supplier<String> supplier,
1616         @Nonnull Function<? super T, String> mapper, @Nonnull BinaryOperator<String> reducer) {
1617         ReducingBindings.mapToStringThenReduce(self, supplier, mapper, reducer)
1618     }
1619 
1620     @Nonnull
1621     static <T> StringBinding mapToStringThenReduce(
1622         @Nonnull ObservableSet<T> self,
1623         @Nullable String defaultValue,
1624         @Nonnull ObservableValue<Function<? super T, String>> mapper,
1625         @Nonnull ObservableValue<BinaryOperator<String>> reducer) {
1626         ReducingBindings.mapToStringThenReduce(self, defaultValue, mapper, reducer)
1627     }
1628 
1629     @Nonnull
1630     static <T> StringBinding mapToStringThenReduce(
1631         @Nonnull ObservableSet<T> self,
1632         @Nonnull Supplier<String> supplier,
1633         @Nonnull ObservableValue<Function<? super T, String>> mapper,
1634         @Nonnull ObservableValue<BinaryOperator<String>> reducer) {
1635         ReducingBindings.mapToStringThenReduce(self, supplier, mapper, reducer)
1636     }
1637 
1638     @Nonnull
1639     static <K, V> StringBinding mapToStringThenReduce(
1640         @Nonnull ObservableMap<K, V> self,
1641         @Nullable String defaultValue,
1642         @Nonnull Function<? super V, String> mapper, @Nonnull BinaryOperator<String> reducer) {
1643         ReducingBindings.mapToStringThenReduce(self, defaultValue, mapper, reducer)
1644     }
1645 
1646     @Nonnull
1647     static <K, V> StringBinding mapToStringThenReduce(
1648         @Nonnull ObservableMap<K, V> self,
1649         @Nonnull Supplier<String> supplier,
1650         @Nonnull Function<? super V, String> mapper, @Nonnull BinaryOperator<String> reducer) {
1651         ReducingBindings.mapToStringThenReduce(self, supplier, mapper, reducer)
1652     }
1653 
1654     @Nonnull
1655     static <K, V> StringBinding mapToStringThenReduce(
1656         @Nonnull ObservableMap<K, V> self,
1657         @Nullable String defaultValue,
1658         @Nonnull ObservableValue<Function<? super V, String>> mapper,
1659         @Nonnull ObservableValue<BinaryOperator<String>> reducer) {
1660         ReducingBindings.mapToStringThenReduce(self, defaultValue, mapper, reducer)
1661     }
1662 
1663     @Nonnull
1664     static <K, V> StringBinding mapToStringThenReduce(
1665         @Nonnull ObservableMap<K, V> self,
1666         @Nonnull Supplier<String> supplier,
1667         @Nonnull ObservableValue<Function<? super V, String>> mapper,
1668         @Nonnull ObservableValue<BinaryOperator<String>> reducer) {
1669         ReducingBindings.mapToStringThenReduce(self, supplier, mapper, reducer)
1670     }
1671 }