public static Option <TResult> Select <TSource, TResult>(this Option <TSource> source, Func <TSource, TResult> selector) { if (selector == null) { throw new ArgumentNullException("selector"); } return(source.Bind(x => Option <TResult> .Return(selector(x)))); }