Name conflict between internal module and second-level dependency

My application has a widely used internal module named TypedStruct. We recently added a new dependency that depends on the typed_struct package, which also defines TypedStruct. So now when we use TypedStruct, the module in the dependency seems to win.

Do I need to put a prefix on the internal module and adjust all of the use statements, or is there another way to resolve this? I realize that as an internal module it really should have been prefixed to begin with. (We have a few modules like this that were intended as libraries but never made into proper packages.)

As a side note, shouldn’t Elixir give an error when it encounters an ambiguous use statement, rather than just picking one of the modules arbitrarily? I’m on 1.16.