anchor.diff:  			return
   		switch(hint)
   			if (QDEL_HINT_QUEUE)		//qdel should queue the object for deletion.
  -				SSgarbage.PreQueue(D)
  +				SSgarbage.Queue(D)
   			if (QDEL_HINT_IWILLGC)
   				D.gc_destroyed = world.time
   				return
  
positive.code: 		queue.Cut(1,count+1)
  		count = 0
  
  /datum/controller/subsystem/garbage/proc/PreQueue(datum/D)
  	if (D.gc_destroyed == GC_CURRENTLY_BEING_QDELETED)
  		queues[GC_QUEUE_PREQUEUE] += D
  		D.gc_destroyed = GC_QUEUED_FOR_QUEUING
  
  /datum/controller/subsystem/garbage/proc/Queue(datum/D, level = GC_QUEUE_CHECK)
  	if (isnull(D))
  		return
  
negative.code: 
  /datum/controller/subsystem/garbage/fire()
  	//the fact that this resets its processing each fire (rather then resume where it left off) is intentional.
  	var/queue = GC_QUEUE_CHECK
  
  	while (state == SS_RUNNING)
  		switch (queue)
  			if (GC_QUEUE_CHECK)
  				HandleQueue(GC_QUEUE_CHECK)
  				queue = GC_QUEUE_CHECK+1
  