It is possible to get a FALSE executing something like this:
where Address is an @Embeddable.
The problem is here:
This is creating a new EmbeddableTypeImpl each time an @Embeddable is used on a different Attribute.
The problem is that EmbeddableTypeImpl (and also its class hierarchy) doesn't implement equals() so each instance is compared for equivalence as with ==.
I see 2 simple solutions:
prevent the duplicated instantiation in getMetaModelType() (maybe using a Map<Class<?>, EmbeddableTypeImpl<?>>)
let EmbeddableTypeImpl (maybe TypeImpl?) implement hashCode() and equals() based on getJavaType() comparison (since it is a natural unique key)
I think the problem is immediate enough to verify just looking at the code snipped, but if you need a Test Case, I'll do it asap.
If you decide to accept any of the proposed solutions, I can try to solve it and submit a PR on github.