prelude: :gerbil/compiler/ssxi
package: std/srfi/146

(begin
  (declare-type
   std/srfi/146/hamt#hash-array-mapped-trie
   (@struct-type
    std/srfi/146/hamt#hash-array-mapped-trie
    #f
    6
    #f
    ((fields: = count hash mutable? payload? root))))
  (declare-type
   std/srfi/146/hamt#hash-array-mapped-trie?
   (@struct-pred std/srfi/146/hamt#hash-array-mapped-trie))
  (declare-type
   std/srfi/146/hamt#hamt/=
   (@struct-getf std/srfi/146/hamt#hash-array-mapped-trie 0 #f))
  (declare-type
   std/srfi/146/hamt#hamt/count
   (@struct-getf std/srfi/146/hamt#hash-array-mapped-trie 1 #f))
  (declare-type
   std/srfi/146/hamt#hamt/hash
   (@struct-getf std/srfi/146/hamt#hash-array-mapped-trie 2 #f))
  (declare-type
   std/srfi/146/hamt#hamt/mutable?
   (@struct-getf std/srfi/146/hamt#hash-array-mapped-trie 3 #f))
  (declare-type
   std/srfi/146/hamt#hamt/payload?
   (@struct-getf std/srfi/146/hamt#hash-array-mapped-trie 4 #f))
  (declare-type
   std/srfi/146/hamt#hamt/root
   (@struct-getf std/srfi/146/hamt#hash-array-mapped-trie 5 #f))
  (declare-type
   std/srfi/146/hamt#set-hamt/count!
   (@struct-setf std/srfi/146/hamt#hash-array-mapped-trie 1 #f))
  (declare-type
   std/srfi/146/hamt#set-hamt/root!
   (@struct-setf std/srfi/146/hamt#hash-array-mapped-trie 5 #f))
  (declare-type
   std/srfi/146/hamt#%make-hamt
   (@struct-cons std/srfi/146/hamt#hash-array-mapped-trie))
  (declare-type std/srfi/146/hamt#make-hamt (@lambda 3 #f))
  (declare-type
   std/srfi/146/hamt#collision
   (@struct-type std/srfi/146/hamt#collision #f 2 #f ((fields: entries hash))))
  (declare-type
   std/srfi/146/hamt#collision?
   (@struct-pred std/srfi/146/hamt#collision))
  (declare-type
   std/srfi/146/hamt#collision/entries
   (@struct-getf std/srfi/146/hamt#collision 0 #f))
  (declare-type
   std/srfi/146/hamt#collision/hash
   (@struct-getf std/srfi/146/hamt#collision 1 #f))
  (declare-type
   std/srfi/146/hamt#make-collision
   (@struct-cons std/srfi/146/hamt#collision))
  (declare-type
   std/srfi/146/hamt#narrow
   (@struct-type
    std/srfi/146/hamt#narrow
    #f
    3
    #f
    ((fields: array children leaves))))
  (declare-type
   std/srfi/146/hamt#narrow?
   (@struct-pred std/srfi/146/hamt#narrow))
  (declare-type
   std/srfi/146/hamt#narrow/array
   (@struct-getf std/srfi/146/hamt#narrow 0 #f))
  (declare-type
   std/srfi/146/hamt#narrow/children
   (@struct-getf std/srfi/146/hamt#narrow 1 #f))
  (declare-type
   std/srfi/146/hamt#narrow/leaves
   (@struct-getf std/srfi/146/hamt#narrow 2 #f))
  (declare-type
   std/srfi/146/hamt#make-narrow
   (@struct-cons std/srfi/146/hamt#narrow))
  (declare-type
   std/srfi/146/hamt#wide
   (@struct-type
    std/srfi/146/hamt#wide
    #f
    3
    #f
    ((fields: array children leaves))))
  (declare-type std/srfi/146/hamt#wide? (@struct-pred std/srfi/146/hamt#wide))
  (declare-type
   std/srfi/146/hamt#wide/array
   (@struct-getf std/srfi/146/hamt#wide 0 #f))
  (declare-type
   std/srfi/146/hamt#wide/children
   (@struct-getf std/srfi/146/hamt#wide 1 #f))
  (declare-type
   std/srfi/146/hamt#wide/leaves
   (@struct-getf std/srfi/146/hamt#wide 2 #f))
  (declare-type
   std/srfi/146/hamt#set-wide/children!
   (@struct-setf std/srfi/146/hamt#wide 1 #f))
  (declare-type
   std/srfi/146/hamt#set-wide/leaves!
   (@struct-setf std/srfi/146/hamt#wide 2 #f))
  (declare-type
   std/srfi/146/hamt#make-wide
   (@struct-cons std/srfi/146/hamt#wide))
  (declare-type std/srfi/146/hamt#hamt/empty? (@lambda 1 #f))
  (declare-type std/srfi/146/hamt#hamt/immutable-inner (@lambda 2 #f))
  (declare-type std/srfi/146/hamt#hamt/immutable__0 (@lambda 1 #f))
  (declare-type
   std/srfi/146/hamt#hamt/immutable
   (@case-lambda
    (1 std/srfi/146/hamt#hamt/immutable__0)
    (2 std/srfi/146/hamt#hamt/immutable-inner)))
  (declare-type std/srfi/146/hamt#hamt/mutable (@lambda 1 #f))
  (declare-type std/srfi/146/hamt#hamt/replace (@lambda 3 #f))
  (declare-type std/srfi/146/hamt#hamt/put (@lambda 3 #f))
  (declare-type std/srfi/146/hamt#hamt/replace! (@lambda 3 #f))
  (declare-type std/srfi/146/hamt#hamt/put! (@lambda 3 #f))
  (declare-type std/srfi/146/hamt#make-empty-narrow (@lambda 0 #f))
  (declare-type std/srfi/146/hamt#hamt-null? (@lambda 1 #f))
  (declare-type std/srfi/146/hamt#collision-single-leaf? (@lambda 1 #f))
  (declare-type std/srfi/146/hamt#narrow-single-leaf? (@lambda 1 #f))
  (declare-type std/srfi/146/hamt#wide-single-leaf? (@lambda 1 #f))
  (declare-type std/srfi/146/hamt#hash-bits (@lambda 2 #f))
  (declare-type std/srfi/146/hamt#next-set-bit (@lambda 3 #f))
  (declare-type std/srfi/146/hamt#narrow->wide (@lambda 2 #f))
  (declare-type std/srfi/146/hamt#->immutable (@lambda 3 #f))
  (declare-type std/srfi/146/hamt#hash-fragment (@lambda 2 #f))
  (declare-type std/srfi/146/hamt#fragment->mask (@lambda 1 #f))
  (declare-type std/srfi/146/hamt#mutate (@lambda 6 #f))
  (declare-type std/srfi/146/hamt#modify-wide (@lambda 6 #f))
  (declare-type std/srfi/146/hamt#modify-wide-child (@lambda 6 #f))
  (declare-type std/srfi/146/hamt#modify-wide-leaf (@lambda 6 #f))
  (declare-type std/srfi/146/hamt#add-wide-leaf-key (@lambda 6 #f))
  (declare-type std/srfi/146/hamt#modify-wide-new (@lambda 6 #f))
  (declare-type std/srfi/146/hamt#make-narrow-with-two-keys (@lambda 8 #f))
  (declare-type std/srfi/146/hamt#modify-pure (@lambda 6 #f))
  (declare-type std/srfi/146/hamt#lower-collision (@lambda 6 #f))
  (declare-type std/srfi/146/hamt#modify-collision (@lambda 6 #f))
  (declare-type std/srfi/146/hamt#leaf-stride (@lambda 1 #f))
  (declare-type std/srfi/146/hamt#narrow-child-index (@lambda 4 #f))
  (declare-type std/srfi/146/hamt#narrow-leaf-index (@lambda 3 #f))
  (declare-type std/srfi/146/hamt#modify-narrow (@lambda 6 #f))
  (declare-type std/srfi/146/hamt#modify-narrow-child (@lambda 6 #f))
  (declare-type std/srfi/146/hamt#modify-narrow-leaf (@lambda 6 #f))
  (declare-type std/srfi/146/hamt#add-narrow-leaf-key (@lambda 6 #f))
  (declare-type std/srfi/146/hamt#modify-narrow-new (@lambda 6 #f))
  (declare-type std/srfi/146/hamt#hamt-fetch (@lambda 2 #f))
  (declare-type std/srfi/146/hamt#collision/for-each (@lambda 3 #f))
  (declare-type std/srfi/146/hamt#narrow/for-each (@lambda 3 #f))
  (declare-type std/srfi/146/hamt#wide/for-each (@lambda 3 #f))
  (declare-type std/srfi/146/hamt#hamt-node/for-each (@lambda 3 #f))
  (declare-type std/srfi/146/hamt#hamt/for-each (@lambda 2 #f))
  (declare-type std/srfi/146/hamt#hamt->list (@lambda 2 #f))
  (declare-type std/srfi/146/hamt#assert-collision-valid (@lambda 3 #f))
  (declare-type std/srfi/146/hamt#assert-narrow-valid (@lambda 4 #f))
  (declare-type std/srfi/146/hamt#assert-wide-valid (@lambda 4 #f))
  (declare-type std/srfi/146/hamt#assert-hamt-node-valid (@lambda 4 #f))
  (declare-type std/srfi/146/hamt#assert-hamt-valid (@lambda 1 #f)))
