template<class AType> class TAliasTo : public TPointerTo<AType> {
public:
TAliasTo(AType* = NIL);
TAliasTo(const TAliasTo& copy);
~TAliasTo();
TAliasTo& operator=(AType* copy);
TAliasTo& operator=(const TAliasTo<AType>& copy);
operator AType*() const {return GetAlias();}
AType* Orphan();
};
template<class AType> void
Resurrect (TAliasTo<AType>& p, TStream& from)
{auto AType* raw; Resurrect (raw, from); p = raw;}
template<class AType> void
Resurrect (TAliasTo<AType>& p, TStream& from, TMemoryHeap& heap)
{auto AType* raw; Resurrect (raw, from, heap); p = raw;}
template<class AType> void
Resurrect (TAliasTo<AType>& p, TStream& from, EHeapType t, const void* o)
{auto AType* raw; Resurrect (raw, from, t, o); p = raw;}