This has turned into a monster. We've taken 2 or 3 wrong turns somewhere.
Perhaps we should revert to a simple set of rules.1. Empty parens are optional. If there is an ambiguity with the return value taking (), the () go on the return value.
2. the: f = g rewrite to: f(g)only happens if f is a function that only has overloads for () and (one argument). No variadics.
3. Parens are required for calling delegates or function pointers. 4. No more @property.
