+ class NAME ## PackageAutodestructor \
+ { \
+ public: \
+ NAME ## PackageAutodestructor() {} \
+ ~NAME ## PackageAutodestructor() \
+ { \
+ if (NAME ## GetPackagePointer().use_count()>0) \
+ { \
+ bbtk::Package::WeakPointer p = NAME ## GetPackagePointer(); \
+ bbtk::Package::Release(p); \
+ } \
+ } \
+ }; \
+ NAME ## PackageAutodestructor NAME ## PackageAutodestructorInstance; \