public static ITask Else(this ITask task, Func<bool> predicate, Action elseAction) { Contract.Requires(task != null); Contract.Requires(predicate != null); return new TaskBranched(task, elseAction.AsTask(), predicate); }