     isSubset fixedVars, (findUnconstrained constraint)
   [deferred, retained] = partition isFixed, impliedConstraints
   quantifiedVars = findFree finalType = substitute ctx.substitution, type
-  impliedVars = concatSets (map findConstrained, impliedConstraints)...
+  impliedVars = concatSets (map findConstrained, retained)...
   validVars = concatSets quantifiedVars, impliedVars
   isAmbiguous = (constraint) ->
     not isSubset validVars, (findUnconstrained constraint)

    malformed ctx, typeExpression, 'Type doesn\'t match class type'
    return null

  ctx.bindTypeVariablesToOuterScope setToArray (findFree freshInstanceType)
  for name, {arity, type} of values classDeclaration.declarations
    freshType = freshInstance ctx, type
    instanceSpecificType = substitute sub, freshType

  inferredType = freshInstance ctx, canonicalType
  ctx.extendSubstitution matchType inferredType.type, (substitute ctx.substitution, type).type
  reduceConstraints ctx, inferredType.constraints
  console.log (printType (substitute ctx.substitution, inferredType))
  (substitute ctx.substitution, inferredType).constraints

irReference = (name, type, scopeIndex) ->
