How does it handle an implementation of a trait being in scope in one compilation unit and out of scope in another? That's the wicked problem.