anchor.diff:      (unless (and (= (length successors) 1)
   		 (zerop (length results)))
         (error "Illegal context for store-car."))
  -    (let* ((temps (make-temps (sicl-ast:argument-asts ast)))
  +    (let* ((argument-asts
  +	     (list (sicl-ast:form-ast ast) (sicl-ast:value-ast ast)))
  +	   (temps (make-temps argument-asts))
   	   (instruction
   	     (sicl-mir:make-store-car-instruction
   	      temps (car successors))))
  -      (compile-arguments (sicl-ast:argument-asts ast) temps instruction))))
  +      (compile-arguments argument-asts temps instruction))))
   
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ;;;
  
positive.code:     (unless (and (= (length successors) 1)
  		 (zerop (length results)))
        (error "Illegal context for store-contents."))
      (let* ((temps (make-temps (sicl-ast:argument-asts ast)))
  	   (instruction
  	     (sicl-mir:make-store-contents-instruction
  	      temps (car successors))))
        (compile-arguments (sicl-ast:argument-asts ast) temps instruction))))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  
negative.code:   (with-accessors ((results results)
  		   (successors successors))
        context
      (let* ((temp (make-temp (sicl-ast:form-ast ast)))
  	   (instruction
  	     (ecase (length successors)
  	       (0 (let ((temp2 (sicl-mir:new-temporary)))
  		    (sicl-mir:make-load-cdr-instruction
  		     temp temp2
  		     (sicl-mir:make-return-instruction
  		      (list temp2)))))
  	       (1 (let ((next (car successors)))
  		    (cond ((null results)
  			   (warn "LOAD-CDR operation in a context of no results.")
  			   next)
  			  ((eq results t)
  			   (error "this should not happen"))
  			  (t
  			   (setf next (nil-fill (cdr results) next))
  			   (sicl-mir:make-load-cdr-instruction
  