This isn't clear, what about `flatten` or lazy initializers, or cached methods? How do I know how any one thing is implemented? I'm a user of the interface, whether or nor a method without arguments is just an attribute access should be clear from the method name. I, as a user of the interface, should not have to look under the covers. What about `flatten` if there's a subclass of Array that caches the result? Do I put parens then? What if that subclass is immutable and calculates flatten on creation? Then it's only a property access? I think this stuff should be a local decision, i.e, if there are arguments, put parens, otherwise leave them off