thinking about the naming of `NeedsInput` and `NeedsDemand`, wouldn't it read better with 
`primaryInputs.HasInput && substream.HasDemand`?