Just to make everything harder. If all the Apply()/Create() methods are synchronous, build up a synchronous Func<T?, IEvent, T?> lambda.