Do you really think it's safer to use identical syntax for member
access when the two types are otherwise handled entirely differently?
Counterpoint: C++ object references and Lua UserData with metatables. They look (and at a shallow level, act) like completely different data types (the type referred to, and a table, respectively). I don't hear very many people complaining about this convenience, or calling it intrinsically unsafe. But maybe that's just because we're drinking the kool-aid?