I guess I'd be fine with this as long as it were possible to circumvent it by calling projectUpdate directly, (for example Stream could maintain TimeVaryingTransform *s in its single threaded stages, and make direct calls on those).

This would mean composite transforms still have to implement projectUpdate though.