maybe additionally require that C is a stage. Otherwise you're still open to intermittent failure based on parse order