Is there a specific reason that these checks are moved inside the resolve_variant?
All these kind of checks should be done as early as possible. That is on purpose everywhere like this, I see it being moved in some places.
But if not possible (e.g. there should be resolved something), it is of course OK to move it.

Sorry I come quite late with this, I was not really available last days, and since then a lot happened :-)