You want confusing, try this: THIS.Value=THIS.Value. If you saw this line of code you would think it did nothing, but if THIS.Value has an assign method, this code could result in just about anything.
>OTOH, A&A methods can be very confusing. Imagine a line in a method where it says "This.value=0", which actually triggers value_assign, which in turn recalculates the value, so it never gets to be a zero. You can't trust code anymore :). A good way out would be to have a good crossreference on the object's .value - listing down all the referrences to it, and checking for possible surprises. We've actually got a mighty hammer here, so we should be skillful and not hit our fingers with it.