       ;; If we evaluated the expression to a value, just throw it
       ;; away.
       (pcase current
-        (`(unknown ,subform)
-         (push (list 'unknown subform) simplified-exprs))))
+        (`(partial ,subform)
+         (push (list 'partial subform) simplified-exprs))))
     ;; If the last expression was a value, we still need to return
     ;; it.
     (pcase current

  (should
   (equal
    (whatif--simplify '(progn nil y) nil)
    (list 'unknown 'y)))
  (should
   (equal
    (whatif--simplify '(progn x nil y) nil)
    (list 'unknown '(progn x y)))))

(ert-deftest simplify--when ()
  (should

Loops are not executed and side-effecting functions are not run.

Returns a list ('value VALUE) if we could simplify the entire
FORM to an expression, or a list ('partial NEW-FORM) if some
parts of FORM could not be simplified."
  (pcase form
    ;; nil and t evaluate to themselves.
    (`nil (list 'value nil))
