anchor.diff:  /datum/chatmessage/proc/generate_image(text, atom/target, mob/owner, list/extra_classes, lifespan)
   	// Register client who owns this message
   	owned_by = owner.client
  -	RegisterSignal(owned_by, COMSIG_PARENT_QDELETING, .proc/qdel, src)
  +	RegisterSignal(owned_by, COMSIG_PARENT_QDELETING, .proc/on_parent_qdel)
   
   	// Clip message
   	var/maxlen = owned_by.prefs.max_chat_length
  
positive.code: 	return ..()
  
  /**
    * Generates a chat message image representation
    *
    * Arguments:
  
negative.code:   * * extra_classes - Extra classes to apply to the span that holds the text
    * * lifespan - The lifespan of the message in deciseconds
    */
  /datum/chatmessage/New(text, atom/target, mob/owner, list/extra_classes = list(), lifespan = CHAT_MESSAGE_LIFESPAN)
  	. = ..()
  	if (!istype(target))
  		CRASH("Invalid target given for chatmessage")
  