reworked Virtual.TypePattern