                 b    (make-binding (:binding body))]
             `(path-matches-with-binding-clause ~path (match-value->matcher ~(:match-value body)) ~b))
 
-          :optional-path-matches-with-binding
+          :optional-path-with-default-binding
           (let [path (mapv make-key (:path body))
                 b    (make-binding (:binding body))]
               `(optional-path-with-default-binding-clause ~path ~(:default-value body) ~b)))))))

(s/def ::path-matches-with-binding
  (s/or :required (s/cat :path ::path :match-value ::match-value :binding-key ::binding-key :binding ::binding)))

(s/def ::optional-path-matches-with-binding
  (s/or :required (s/cat :qmark ::qmark :path ::path :default-value ::default-value :binding-key ::binding-key :binding ::binding)))

(s/def ::clause

              [`~path-map
               `[~(symbol b) (get-in ~message ~path)]]))

          :optional-path-with-default-binding
          (let [path        (mapv make-key (:path body))
                b           (make-binding (:binding body))]
            [{} `[~(symbol b) (get-in ~message ~path ~(:default-value body))]]))))))
