Walter,
Now I've snipped out all of your messages for the sake of brevity.
Have you actually QEDed (quod erat demonstratum)? I'm not so sure. When I replace the code posted with This.MyObject = NEWOBJECT("Label") I don't see the same thing from the call stack. However, in both cases I see a duplicate call to the _assign method.
Due to the behavior I am seeing, and due to the documentation I'd have to say that what we're seeing here is the result of the design.
Point: If you have a property that is not an object (IOW, a string, numeric, date, logical etc.), this type of behavior doesn't occur. You can (and I have) make assignment statements to that property as long as you're willing to test and never see the same sort of behavior you do if it's an object.
It's my contention that objects were never intended to have _assign statements attached to them. It's my belief that, if there's an error involved here, it's a documentation error telling us: "Don't do that".
This is founded on the belief that properties are not the same as properties that hold object references. This is my opinion, if you disagree, fine. I should point out, however, that no where in the documentation does it mention that objects can have an _assign event, only properties.
George
Ubi caritas et amor, deus ibi est