typedef FeatureReferenceHelper<FeatureSpecialized> SP; \
virtual void setReference(FeatureAbstract *sdes) { \
if (sdes == NULL) { \
\
if (SP::isReferenceSet()) removeDependenciesFromReference(); \
SP::unsetReference(); \
} else { \
\
SP::setReference(sdes); \
if (SP::isReferenceSet()) addDependenciesFromReference(); \
} \
} \
virtual const FeatureAbstract *getReferenceAbstract(void) const { \
return SP::getReference(); \
} \
virtual FeatureAbstract *getReferenceAbstract(void) { \
return (FeatureAbstract *)SP::getReference(); \
} \
bool isReferenceSet(void) const { return SP::isReferenceSet(); } \
virtual void addDependenciesFromReference(void); \
virtual void removeDependenciesFromReference(void)