In Clojure due to JVM munging, static inner classes in package use the `$` delimiter. ClojureScript itself adopted this convention for `foo$macros`. We could adopt a similar convention here.
This also gives us an idiomatic way to deal with `default` exports:
We don’t need to be too concerned about clashes - we can first check that the original thing exists. If not remove the suffix and check for the prefix.
There are common cases where nested access is necessary. For example React Native native modules. After the first $ we can return to . (suggested by Thomas Heller).