anchor.diff:  			for (var/_T in _L) { \
   				_L[_T] &= _S;\
   				if (!length(_L[_T])) { \
  -					_L -= _T } \
  +					_L -= _T; \
  +					SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(_T)); \
  +					}; \
   				};\
  -				if (!length(_L)) { \
  -					target.status_traits = null\
  -				};\
  +			if (!length(_L)) { \
  +				target.status_traits = null\
  +			};\
   		}\
   	} while (0)
   #define HAS_TRAIT(target, trait) (target.status_traits ? (target.status_traits[trait] ? TRUE : FALSE) : FALSE)
  
positive.code: 				} \
  			};\
  			if (!length(_L[trait])) { \
  				_L -= trait \
  			}; \
  			if (!length(_L)) { \
  				target.status_traits = null \
  
negative.code: #define SIGNAL_ADDTRAIT(trait_ref) "addtrait [trait_ref]"
  #define SIGNAL_REMOVETRAIT(trait_ref) "removetrait [trait_ref]"
  
  // trait accessor defines
  #define ADD_TRAIT(target, trait, source) \
  	do { \
  