anchor.diff:  ;;; This :AROUND method serves as an adapter for the compilation of
   ;;; ASTs that generate a single value.  If such an AST is compiled in
   ;;; a unfit context (i.e, a context other than one that has a single
  -;;; successor and a single required value), this method creates a
  -;;; perfect context for compiling that AST together with instructions
  -;;; for satisfying the unfit context.
  +;;; successor and a single required value), this method either creates
  +;;; a perfect context for compiling that AST together with
  +;;; instructions for satisfying the unfit context, or it signals an
  +;;; error if appropriate.
   (defmethod compile-ast :around ((ast cleavir-ast:one-value-ast-mixin) context)
     (with-accessors ((results results)
   		   (successors successors)
  
positive.code: 					   (list successor)
  					   invocation))))))
        (2
         ;; We have a context where a test of a Boolean is required.  We
         ;; create a new context where the result is compared to NIL
         ;; using EQ-INSTRUCTION, and compile the AST in that context
         ;; instead.
         (let* ((false (cleavir-ir:make-constant-input NIL))
  	      (temp (cleavir-ir:new-temporary))
  	      (successor (make-instance 'cleavir-ir:eq-instruction
  			   :inputs (list temp false)
  			   :outputs '()
  			   :successors (reverse successors))))
  	 (call-next-method ast
  			   (context (list temp)
  				    (list successor)
  				    (invocation context))))))))
  
  (defun check-context-for-one-value-ast (context)
    (assert (and (= (length (results context)) 1)
  
negative.code:       context
      (ecase (length successors)
        (1
         ;; FIXME: Use a specific condition
         (error "Boolean AST in a context requiring a value"))
        (2
         (call-next-method)))))
  
  