anchor.diff:  				} \
   			};\
   			if (!length(_L[trait])) { \
  -				_L -= trait \
  +				_L -= trait; \
  +				SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(trait)); \
   			}; \
   			if (!length(_L)) { \
   				target.status_traits = null \
  
positive.code: 			target.status_traits = list(); \
  			_L = target.status_traits; \
  			_L[trait] = list(source); \
  		} else { \
  			_L = target.status_traits; \
  			if (_L[trait]) { \
  				_L[trait] |= list(source); \
  			} else { \
  				_L[trait] = list(source); \
  			} \
  		} \
  	} while (0)
  
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 { \
  