To add to the mess - or maybe suggest a new approach, what about:
class A { int foo(); void foo=(int a); private foo_; }Then a.foo = 42; calls the foo= method. No other conversions from a=b to a method invocation.
It may be suggested in one of these 46 pages which I haven't read. And it'll probably break a lot of stuff.