is this custom state needed? It is actually (primaryInputs.NeedsInputOrComplete || schedulerInputs.NeedsInput) && primaryOutputs.NeedsDemand
(apart from transformer.isComplete, but I prefer handling that in the TransformPhase instead)