Some of the objects used by the runtime use reference counting to control their life-cycle. When an objects is returned in such a pointer, the user should keep this pointer valid while the data is in use, and clear it when done by assigning nullptr to it. The data returned in Ptr pointers should never be directly deleted.