anchor.diff:  	..(msg)
   
   /datum/subsystem/garbage_collector/fire()
  +	var/time_to_stop = world.timeofday + max_run_time
  +	HandleToBeQueued(time_to_stop)
  +	HandleQueue(time_to_stop)
  +	
  +//If you see this proc high on the profile, what you are really seeing is the garbage collection/soft delete overhead in byond.
  +//Don't attempt to optimize, not worth the effort.
  +/datum/subsystem/garbage_collector/proc/HandleToBeQueued(time_to_stop)
  +	while(tobequeued.len && world.timeofday < time_to_stop)
  +		var/ref = tobequeued[1]
  +		Queue(ref)
  +		tobequeued.Cut(1, 2)
  +
  +/datum/subsystem/garbage_collector/proc/HandleQueue(time_to_stop)
   	delslasttick = 0
   	gcedlasttick = 0
  -	var/time_to_stop = world.timeofday + max_run_time
   	var/time_to_kill = world.time - collection_timeout // Anything qdel() but not GC'd BEFORE this time needs to be manually del()
  -
  -
  +	
   	while(queue.len && world.timeofday < time_to_stop)
   		var/refID = queue[1]
   		if (!refID)
  
positive.code: 				if(!("[D.type]" in SSgarbage.noqdelhint))
  					SSgarbage.noqdelhint += "[D.type]"
  					testing("WARNING: [D.type] is not returning a qdel hint. It is being placed in the queue. Further instances of this type will also be queued.")
  				SSgarbage.Queue(D)
  
  // Returns 1 if the object has been queued for deletion.
  /proc/qdeleted(datum/D)
  
negative.code: 		dat += "[path] - [tmplist[path]] times<BR>"
  
  	usr << browse(dat, "window=qdeletedlog")
  #endif
  