 (defprotocol AllTransformProtocol
   (all-transform [structure next-fn]))
 
+(defn void-transformed-kv-pair? [newkv]
+  (or (identical? newkv i/NONE) (< (count newkv) 2)))
+
 (defn- non-transient-map-all-transform [structure next-fn empty-map]
   (reduce-kv
     (fn [m k v]
       (let [newkv (next-fn [k v])]
-        (if (identical? newkv i/NONE)
+        (if (void-transformed-kv-pair? newkv)
           m
           (assoc m (nth newkv 0) (nth newkv 1)))))
 

  #?(:cljs
     (all-transform [structure next-fn]
       (let [empty-structure (empty structure)]
         (if (and (list? empty-structure) (not (queue? empty-structure)))
           (all-transform-list structure next-fn)
           (into empty-structure
                 (comp (map next-fn) (filter not-NONE?))
                 structure))))))

      (reduce-kv
        (fn [m k v]
          (let [newkv (next-fn [k v])]
            (if (void-transformed-kv-pair? newkv)
              m
              (assoc! m (nth newkv 0) (nth newkv 1)))))

