 (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/def ::optional-path-with-default-binding
   (s/or :required (s/cat :qmark ::qmark :path ::path :default-value ::default-value :binding-key ::binding-key :binding ::binding)))
 
 (s/def ::clause

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

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

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

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