There is a very important difference between ADD OBJECT at the class template and CREATEOBJECT() for a member declared as a property at the class template level. The rule is that when you use ADD OBJECT in a class definition, the object becomes a member of the container and can use the Parent property to refer to the immediate container object.
When using CREATEOBJECT on an instance variable of an object, that property is simply being used as a reference to the instance of the newly created object, but is not a member of the container and therefore cannot use the "parent" property since the object is not part of the container.