When the compiler emits jvm/jar target, only virgil class names are considered when creating the jvm class. This means private virgil classes in different files having the same name will lead to a jvm runtime error, especially when the signatures of their constructors are different. This PR incorporates the virgil type uid into the jvm class name, thus avoiding this name clash issue.
When the compiler emits jvm/jar target, only virgil class names are considered when creating the jvm class. This means private virgil classes in different files having the same name will lead to a jvm runtime error, especially when the signatures of their constructors are different. This PR incorporates the virgil type uid into the jvm class name, thus avoiding this name clash issue.