 
    ::gen-join-query
    (fn gen-join-query [{::keys [gen-query gen-union gen-recursion] :as env}]
-     (gen/frequency [[10 (gen-query env)
-                      2 (gen-union env)
-                      1 (gen-recursion env)]]))
+     (gen/frequency [[10 (gen-query env)]
+                     [2 (gen-union env)]
+                     [1 (gen-recursion env)]]))
 
    ::gen-union-key
    (fn gen-union-key [_] gen/keyword)

   ::gen-query-expr
   (fn gen-query-expr [{::keys [gen-property gen-join gen-ident gen-param-expr gen-special-property]
                        :as    env}]
     (gen/one-of [(gen-property env)
                  (gen-join env)
                  (gen-ident env)
                  (gen-param-expr env)
                  (gen-special-property env)]))

   ::gen-query
   (fn gen-query [{::keys [gen-query-expr gen-max-depth] :as env}]

          :mutation ::mutation-tx)
    (default-gen ::gen-transaction)))


(comment
  (time
    (clojure.test.check/quick-check 30
      (clojure.test.check.properties/for-all [query (make-gen {::gen-params
                                                               (fn [_] (gen/map gen/keyword gen/string-ascii))}
                                                      ::gen-transaction)]
        (fp/query->ast query))))

  (gen/sample (make-gen {::gen-params
                         (fn [_] (gen/map (gen/return :param) gen/string-ascii))

                         ::gen-property
                         (fn [_] (gen/return :prop))

                         ::gen-union-key
                         (fn [_] (gen/elements [:a :b :c]))

                         ::gen-ident
                         (fn [_] (gen/return [:by-id 42]))}
                ::gen-query)
    10)

  (let [system (assoc generators
                 ::gen-params
