anchor.diff:  						(funcall
   						  (compose #'reduce-tags
   								   #'remove-code
  -								   #'remove-void)
  +								   #'remove-void
  +)
   						  x))))
   
   	(repeat-while-changes #'rec (remove-identity x))))
  
positive.code: 						; Don't set variable that will be modified anyway.
  						(if (and (%setq? a)
  							 	 (or (atom (third a))
  									 (%stack? (third a)))
  							 	 (will-be-set-again? d (second a)))
  							(remove-code d)
  
negative.code: 									(if (and (consp a)
  										 	(eq 'vm-go (first a)))
  						    			(cons a (remove-void (find-next-tag d)))
  										; Shorten (%setq expexsym sth) (%setq %ret sth).
  										(if (and (%setq? a) (%setqret? (car d))
  												 (expex-sym? (second a))
  												 (eq (second a) (third (car d))))
  											(cons `(%setq ~%ret ,(third a))
  												   (remove-void (cdr d)))
  											(cons a (remove-void d)))))))))))
  
  		 will-be-set-again?
  		   #'((x v)
  				(or (and (atom v)
  						 (expex-sym? v)
  						 (not x)) ; End of block - value won't be used.
  			        (when (and x (not (vm-jump? (car x)))) ; We don't know what happens after a jump.
  				      (or (and (%setq? (car x))
  						       (eq v (second (car x))))
  