So far isInMaterializationPhase() covered Materializing, Resolved and Ready. Shouldn't it include Emitted too?
I had a look over the users in Core.cpp and isInMaterializationPhase was actually being used inconsistently. I think it may have made sense when it was introduced, but shifted from its original intent at some point.
I have removed it in b7aa1cc3a43 and replaced it with direct checks on the symbol state, so I think you can discard this.