It is used by the solver while using fulfillment. This means it may be broken in a bunch of ways, e.g. by resulting in unguarded recursion. We should reimplemented this using the `EvalCtxt` itself