                                                  index nil nil))
        branches))
     (`(,(or 'condition-case 'condition-case-unless-debug)
-       ,_var ,bodyform . ,(and (pred elisp/ert/proper--list-p) clauses))
+       ,_var ,bodyform . ,(and (pred proper-list-p) clauses))
      ;; Similar to the ‘cond’ case, but here we have one branch for each handler
      ;; as well as one branch for a successful exit.
      (let ((branches (make-vector (1+ (length clauses)) nil)))

     (let ((branches (vector nil nil)))
       (elisp/ert/instrument--branch vector branches (list cond) nil 0 1)
       branches))
    (`(,(or 'and 'or) . ,(and (pred elisp/ert/proper--list-p) conditions))
     ;; The last condition form won’t introduce a new branch.
     (cl-callf butlast conditions)
     ;; Assume that each remaining condition introduces two branches.  This

       (elisp/ert/instrument--branch vector branches (list expr) nil 0 1)
       branches))
    (`(,(or 'if-let 'if-let* 'when-let 'when-let* 'and-let*)
       ,(and (pred proper-list-p) spec) . ,_)
     (let ((branches (make-vector (* 2 (length spec)) nil)))
       (cl-loop for binding in spec
                and index from 0 by 2
