As discussed in this and surrounding comments, we could remove Term::Annotated from the eval-time representation, lowering it to a contract application at ast -> term conversion time, and compiling any resulting patterns ahead of time. Potentially we could also do this for other occurrences of Type that make it to eval-time.