public void AddPredicateAndValueFunc(DelegateFunc <Option <T>, bool> predicate, DelegateFunc <T, TResult> func) { _predicatesAndResults.Add(Tuple.Create(predicate, Union <DelegateFunc <T, TResult>, DelegateFunc <Option <T>, TResult>, TResult> .CreateFirst(func))); }