           binding (key-exists-with-binding-clause-binding clause)]
       {(convert-path-element key) (symbol binding)})
 
-    ;; FIXME: should this be {}
     (optional-key-exists-without-binding-clause? clause)
-    (let [key     (optional-key-exists-without-binding-clause-key clause)]
-      `{~key ~'_})
+    {}
 
     (optional-key-exists-with-binding-clause? clause)
-    (let [key     (key-exists-with-binding-clause-key clause)
-          binding (key-exists-with-binding-clause-binding clause)]
-      {(convert-path-element key) (symbol binding)})
+    {}
 
     (path-exists-without-binding-clause? clause)
     (let [path    (path-exists-without-binding-clause-path clause)]

      (assoc-in {} (map convert-path-element path) (symbol binding)))

    (optional-path-exists-without-binding-clause? clause)
    (let [path    (optional-path-exists-without-binding-clause-path clause)]
      (assoc-in {} (map convert-path-element path) '_))

    (optional-path-exists-with-binding-clause? clause)
    (let [path    (optional-path-exists-with-binding-clause-path clause)
          binding (optional-path-exists-with-binding-clause-binding clause)]
      (assoc-in {} (map convert-path-element path) (symbol binding)))

    (key-matches-without-binding-clause? clause)
    (let [key         (key-matches-without-binding-clause-key clause)

        `{~key ~(match-value message [key])}))

    (optional-key-matches-without-binding-clause? clause)
    {}

    (optional-key-matches-with-binding-clause? clause)
    {}

    (path-matches-without-binding-clause? clause)
    (let [path        (path-matches-without-binding-clause-path clause)
