 [:optional :wrapped :multi :list :vector :set :map :record :tuple]
 
 (macrowbar/compile-time
+  (def simple-string-generator
+    (tc.gen/fmap (fn [string]
+                   (if (> (count string) 5)
+                     (.substring string 0 5)
+                     string))
+                 tc.gen/string-alphanumeric))
+
+  (def simple-symbol-generator
+    (tc.gen/fmap symbol simple-string-generator))
+
+  (def simple-keyword-generator
+    (tc.gen/fmap keyword simple-string-generator))
+
   (defn bounds [bytes signed?]
     {:min (math/lower-bound bytes signed?)
      :max (dec (math/upper-bound bytes signed?))})

  (defmethod scalar-schema-generator :enum [_]
    (tc.gen/fmap (fn [enum-values]
                   [:enum {} enum-values])
                 (tc.gen/not-empty (tc.gen/set tc.gen/keyword))))

  (defmulti compound-schema-generator
    (fn [schema-name inner-generator] schema-name)

  (defmethod compound-schema-generator :record [_ inner-generator]
    (tc.gen/fmap (fn [schemas]
                   [:record {} schemas])
                 (tc.gen/map simple-keyword-generator inner-generator)))

  (defmethod compound-schema-generator :tuple [_ inner-generator]
    (tc.gen/fmap (fn [schemas]
