     (t/is (= false (example-matcher {:kind "none"})))
     ;; FIXME: What is the difference between this and the test before?
     (t/testing "map-matcher-regex-key-not-found"
-      (t/is (= false (example-matcher three-data))))))
+      (t/is (= false (example-matcher three-data)))))
+  (t/testing "Paths"
+    ;; FIXME: path without binding not possible?
+    ;; compiler exception: class clojure.lang.PersistentVector cannot be cast to class clojure.lang.Named
+    ;; (t/is (= [] ((p/map-matcher [([:x])] []) {:x {}})))
+    ;; FIXME: key exists on a list?
+    (t/is (= [{}] ((p/map-matcher [([:a] :as a)] [a]) {:a {}})))
+    (t/is (= [] ((p/map-matcher [([:a b] "c")] []) {:a { "b" "c"}})))
+    (t/is (= [] ((p/map-matcher [([:a b c] "d")] []) {:a { "b" {"c" "d"}}})))
+    (t/is (= ["d"] ((p/map-matcher [([:a b c] "d" :as z)] [z]) {:a { "b" {"c" "d"}}})))))
 
 (t/deftest map-matcher-optional-test
   (t/testing "Optional values"

                             [a c C Z])
              {:kind "two" :a "a" :b "b"
               :d {"Z" 42 "X" 65
                   "W" {"foo" "bar"}}})))))

(p/defpattern one-or
  [(:kind #"one")

   :else false))

(t/deftest map-matcher-test
  ;; FIXME
  ;; compiler exception: not a valid pattern
  ;; (t/is (= [] ((p/map-matcher [] []) {:a "a"})))
  ;; compiler exception: Wrong number of args (0) passed to: active.clojure.match/deep-merge
  ;; (t/is (= [] ((p/map-matcher [()] []) {:a "a"})))
  ;; compiler exception: class clojure.lang.PersistentVector cannot be cast to class clojure.lang.Named
  ;; (t/is (= [] ((p/map-matcher [([])] []) {:a "a"})))

  (t/testing "Very simple example without bindings."
    ;; we thought that empty lets in the macro-expand would create problems
    (t/is (= [] ((p/map-matcher [(:a)] []) {:a "a"}))))
