   """
   "(size (concat-suffix {1} (concat-map (fn [x] {{1}}) {1 2 3})))", 6
 
-  'overloaded subterms'
+  'overloaded subfunctions 2'
   """
   id (fn [x] x)
 

      notDeclared = filter (__ _not, isDeclaredConstraint), checked = (substituteList ctx.substitution, constraints)
      try
        [deferredConstraints, retainedConstraints] = deferConstraints ctx,
          ctx.allBoundTypeVariables(),
          (findFree unifiedType),
          notDeclared
      catch e
        throw new Error "Error when deferring #{name} #{e.message}"

    ((fold helper id over) initial)
    helper (fn [x r acc]
      (r (with x acc))))
  """
  "6", 6

  'overloaded subfunctions 3'
  """
  Deq (class [seq item]
    && (fn [what to]
      (: (Fn item seq seq))))

  array-deq (instance (Deq (Array a) a)
    && (macro [what to]
      (: (Fn a (Array a) (Array a)))
      (Js.method to "push" {what})))

  Appendable (class [collection item]
    & (fn [what to]
      (: (Fn item collection collection))))

  Bag (class [bag item]
    empty (: bag)

    fold (fn [with initial over]
      (: (Fn (Fn item a a) a bag a))))

  split (fn [bag]
    (: (Fn ba (Array ba)) (Appendable ba a) (Bag ba a))
    (fold wrap {} bag)
    wrap (fn [x all]
      (&& (& x empty) all)))
  """
  "6", 6

