anchor.diff:  
   	UnregisterFromParent()
   
  +/**
  +  * Unregister signals from our parent object
  +  *
  +  * Use this proc to unregister for signals from your parent object
  +  * this is called when an object is destroyed, or is transferred
  +  * between objects
  +  * *
  +  */
   /datum/component/proc/UnregisterFromParent()
   	return
   
  +/**
  +  * Register to listen for a signal from the passed in target
  +  *
  +  * This sets up a listening relationship such that when the target object emits a signal
  +  * the source datum this proc is called upon, will recieve a callback to the given proctype
  +  *
  +  * Arguments:
  +  * * datum/target The target to listen for signals from
  +  * * sig_type_or_types Either a string signal name, or a list of signal names (strings)
  +  * * proctype The proc to call back when the signal is emitted
  +  * * override TODO, chase ninja to ask
  +  */
   /datum/proc/RegisterSignal(datum/target, sig_type_or_types, proctype, override = FALSE)
   	if(QDELETED(src) || QDELETED(target))
   		return
  
positive.code: 		. |= CallAsync(C, proctype, arguments)
  
  // The type arg is casted so initial works, you shouldn't be passing a real instance into this
  /datum/proc/GetComponent(datum/component/c_type)
  	RETURN_TYPE(c_type)
  	if(initial(c_type.dupe_mode) == COMPONENT_DUPE_ALLOWED)
  
negative.code: 
  /datum/component/proc/InheritComponent(datum/component/C, i_am_original)
  	return
  /**
    * Callback Just before this component is transferred
    *
    * Use this to do any special cleanup you might need to do before being deregged from an object
    *
    */
  /datum/component/proc/PreTransfer()
  	return
  /**
    * Callback Just after a component is transferred
    *
    * Use this to do any special setup you need to do after being moved to a new object
    *
    */
  /datum/component/proc/PostTransfer()
  	return COMPONENT_INCOMPATIBLE //Do not support transfer by default as you must properly support it
  
  