   polymorphicVars = filterMap ((name) -> inSet vars, name), findFree type
   kinds = mapToArray polymorphicVars
   varIndex = 0
-  quantifiedVars = mapToSubstitution mapMap (-> new QuantifiedVar varIndex++), polymorphicVars
+  quantifiedVars = mapMap (-> new QuantifiedVar varIndex++), polymorphicVars
   new ForAll kinds, (substitute quantifiedVars, type)
 
 star = '*'

subToObject = (sub) ->
  ob = {}
  for s, i in sub.vars when s
    ob["#{i}"] = s
  ob



      malformed typeParam, 'Data type parameter not used'
      throw new Error 'Data type parameter not used'

  freshingSub = mapMap ((kind) -> ctx.freshTypeVariable kind), kinds

  dataKind = kindFnOfArgs (map ((name) -> lookupInMap kinds, name), varNames)...
  typeVars = map ((name) -> new TypeVariable name, (lookupInMap kinds, name)), varNames
