anchor.diff:  
   }
   
  -
  -
  -//you really shouldn't need to help with frog breeding more than twice.
  -dynamic removeFrogSpam(events){
  -	List<dynamic> eventsToRemove = []; //don't mod an array as you loop over it.
  -	num frogsSoFar = 0;
  -	 for(num i = 0; i<events.length; i++){
  -		 if(events[i].constructor.name == "FrogBreedingNeedsHelp"){
  -			 frogsSoFar ++;
  -			 if(frogsSoFar > 1){
  -				 eventsToRemove.add(events[i]);
  -			 }
  -		 }
  -	 }
  -
  -	  for(num k = 0; k<eventsToRemove.length; k++){
  -		 removeFromArray(eventsToRemove[k], events);
  -	 }
  -	 return events;
  -}
  -
  -
  -//YellowYardcontroller knows what makes two events functionally equivalent
  -dynamic removeRepeatEvents(events){
  -	List<dynamic> eventsToRemove = []; //don't mod an array as you loop over it.
  -	 for(num i = 0; i<events.length; i++){
  -        var e1 = events[i];
  -		for(var j = i; j<events.length-i; j++){
  -		  var e2 = events[j];
  -		  //don't be literally teh same object, but do you match?
  -		   if(e1 != e2 && doEventsMatch(e1,e2)){
  -			 // print(e1.humanLabel() + " matches " + e2.humanLabel())
  -              eventsToRemove.add(e2);
  -			}
  -		}
  -     }
  -
  -	 for(num k = 0; k<eventsToRemove.length; k++){
  -		 removeFromArray(eventsToRemove[k], events);
  -	 }
  -	 return events;
  -}
  -
  -
  -dynamic padEventsToNumWithKilling(events, session, doomedTimeClone, num){
  -	var num = num - events.length;
  -	num = Math.min(num, session.players.length);
  -	for(int i = 0; i<num; i++){
  -			events.add(new KillPlayer(session, session.players[i]))
  -	}
  -	return events;
  -}
  -
  -
  -void sortEventsByImportance(events){
  -	return events.sort(comparePriority);
  -}
  -
  -
  -
  -function comparePriority(a,b) {
  -  return b.importanceRating - a.importanceRating;
  -}
  -
  -
  -dynamic listEvents(events){
  -	String ret = "";
  -	for(num i = 0; i<events.length; i++){
  -		ret += "\n" +events[i].humanLabel();
  -	}
  -	return ret;
  -}
  -
  -
  -
  -class undoTimeUndoScene {
  -
  -	undoTimeUndoScene(this.div, this.session, this.event, this.timeClone1, this.timeClone2) {}
  -
  -
  -
  -//	print("times called : " + this.timesCalled);
  -	String narration = "<br>A doomed " + timeClone1.htmlTitleBasic() + " suddenly warps in from the future. ";
  -	narration +=  " But before they can do anything, a second doomed " +timeClone2.htmlTitleBasic()  + " warps in and grabs them.  Both vanish in a cloud of gears and clocks to join the final battle.";
  -
  -	div.append(narration);
  -
  -	var divID = (div.attr("id")) + "_alt_" + timeClone1.chatHandle;
  -	String canvasHTML = "<br><canvas id;='canvas" + divID+"' width='" +canvasWidth + "' height;="+canvasHeight + "'>  </canvas>";
  -	div.append(canvasHTML);
  -	var canvasDiv = querySelector("#canvas"+ divID);
  -
  -	var pSpriteBuffer = getBufferCanvas(querySelector("#sprite_template"));
  -	drawTimeGears(pSpriteBuffer);
  -	drawSprite(pSpriteBuffer,timeClone1);
  -
  -	var dSpriteBuffer = getBufferCanvas(querySelector("#sprite_template"));
  -	drawTimeGears(dSpriteBuffer);
  -	drawSpriteTurnways(dSpriteBuffer,timeClone2);
  -
  -
  -	copyTmpCanvasToRealCanvasAtPos(canvasDiv, pSpriteBuffer,-100,0);
  -	copyTmpCanvasToRealCanvasAtPos(canvasDiv, dSpriteBuffer,100,0);
  -
  -	removeFromArray(event, session.yellowYardController.eventsToUndo);
  -	return false;
  -}
  
positive.code: 			this.doomedTimeClone.dead = false;
  			this.doomedTimeClone.currentHP = this.doomedTimeClone.hp;
  
  			if(this.secondTimeClone){
  				this.secondTimeClone.dead = false;
  				this.secondTimeClone.currentHP = this.secondTimeClone.hp;
  				return undoTimeUndoScene(div, this.session, this, this.doomedTimeClone, this.secondTimeClone);
  			}
  			var player = this.session.getVersionOfPlayerFromThisSession(this.player);
  			String narration = "<br>A " + this.doomedTimeClone.htmlTitleBasic() + " suddenly warps in from the future. ";
  
negative.code: 	}
    @override
  	bool alternateScene(div){
  			timesCalled ++;
  			this.doomedTimeClone.dead = false;
  			this.doomedTimeClone.currentHP = this.doomedTimeClone.hp;
  
  
  			if(secondTimeClone != null){
  				this.secondTimeClone.dead = false;
  				this.secondTimeClone.currentHP = this.secondTimeClone.hp;
  				return ImportantEvent.undoTimeUndoScene(div, this.session, this, this.doomedTimeClone, this.secondTimeClone);
  			}
  			//print("times called : " + this.timesCalled);
  			String narration = "<br>A " + this.doomedTimeClone.htmlTitleBasic() + " suddenly warps in from the future. ";
  