               [`~path-map
                `[~(symbol b) (get-in ~message ~path)]]))
 
-          :optional-path-matches-with-binding
+          :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))]]))))))

                b (make-binding (:binding body))]
            `(key-matches-with-binding-clause ~k (match-value->matcher ~(:match-value body)) ~b))

          :optional-key-matches-with-binding
          (let [k (make-key (:key body))
                b (make-binding (:binding body))]
            `(optional-key-with-default-binding-clause ~k ~(:default-value body) ~b))

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

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

(s/def ::path-matches-without-binding
