       isDeclaredConstraint = (c) ->
         entailed = entail ctx, unifiedType.constraints, c
       notDeclared = filter (__ _not, isDeclaredConstraint), checked = (substituteList ctx.substitution, constraints)
-      {success, error} = deferConstraints ctx, notDeclared
+      {success, error} = deferConstraints ctx, notDeclared, currentType
       if error
         ctx.extendSubstitution error
       else

    (map f lines))

  f (fn [x]
    x)

  expand (fn [x]
    gg

  findFreeInList map subbed, setToArray varNames

# Returns deferred and retained constraints
deferConstraints = (ctx, constraints, type) ->
  reducedConstraints = reduceConstraints ctx, constraints
  if not reducedConstraints.success
    return reducedConstraints
