>CLEAR > >loParameter = CREATEOBJECT( "Custom" ) >loParameter.AddProperty( "MyString", "Hello World" ) > >loMyChild = CREATEOBJECT( "MyChild", loParameter ) > >loParameter.MyString = "Hello World 2" >loMyChild.MyPrint( ) > >* Section below does not throw any error >* even though loParameter is not actually released >loParameter.MyString = "Hello World 3" >RELEASE loParameter >loParameter = .NULL. >loMyChild.MyPrint( ) > >RETURN > >DEFINE CLASS MyChild AS Custom > MyPORef = "" > > FUNCTION Init > LPARAMETERS toParameter > > This.MyPORef = toParameter > > =This.MyPrint( ) > > ENDFUNC > > FUNCTION MyPrint > ? This.MyPORef.MyString > > ENDFUNC > >ENDDEFINE >The interesting part is that this is as it should be, but it takes some thinking to understand why. The moment you released loParameter, the variable was gone. In the next line, you issue a loParameter=null, but that's a new private variable, completely unrelated to the previous one, and that line does practically nothing, as your loMyChild.MyPopRef is still a reference to the original one.