I think overloading of `.` moves Nim beyond its breaking point and usually there are all sort of better designs, for instance simply writing `foo["bar"]` instead of `foo.bar` or coming up with a new operator like `foo.?bar`.
This whole feature needs to be in `experimental`.