anchor.diff:  		return new_comp
   	return old_comp
   
  +/**
  +  * Get existing component of type, or create it and return a reference to it
  +  *
  +  * Use this if the item needs to exist at the time of this call, but may not have been created before now
  +  *
  +  * Arguments:
  +  * * component_type The typepath of the component to create or return
  +  * * ... additional arguments to be passed when creating the component if it does not exist
  +  */
   /datum/proc/LoadComponent(component_type, ...)
   	. = GetComponent(component_type)
   	if(!.)
   		return AddComponent(arglist(args))
  -
  +/**
  +  * Remove this component from it's parent
  +  */
   /datum/component/proc/RemoveComponent()
   	if(!parent)
   		return
  
positive.code: 	RegisterWithParent()
  
  // If you want/expect to be moving the component around between parents, use this to register on the parent for signals
  /datum/component/proc/RegisterWithParent()
  	return
  
  
negative.code: 	//At a minimum RegisterWithParent and UnregisterFromParent should be used
  	//Make sure you also implement PostTransfer for any post transfer handling
  	var/can_transfer = FALSE
  /**
    * Create a new component
    *
    * Arguments:
    * * datum/P the parent datum this component reacts to signals from
    */
  /datum/component/New(datum/P, ...)
  	parent = P
  	var/list/arguments = args.Copy(2)
  