     (conj bindings `[])
 
     (optional-path-matches-with-binding-clause? clause)
-    (conj bindings (optional-path-matches-with-binding-clause->rhs-match message clause))
-
-    (optional-clause? clause)
-    (clause->rhs message bindings (optional-clause-clause clause))))
+    (conj bindings (optional-path-matches-with-binding-clause->rhs-match message clause))))
 
 (defn pattern->rhs
   [message pattern rhs]

;; 4. Match the value at a path in a map to a specific value.
;;    - without binding - with binding
;;    - optional:  without binding - with binding
;; 5. An optional clause that contains a regular clause and makes the match optional.

;; 1.
(define-record-type KeyExistsWithoutBindingClause

                      path-matches-without-binding-clause?
                      path-matches-with-binding-clause?
                      optional-path-matches-without-binding-clause?
                      optional-path-matches-with-binding-clause?))

;; helpers
(defn clause-lens
