     else
       constraints = typeConstraintsCompile ctx, _terms constraintSeq
 
-    superClasses = map (({className}) -> className), constraints
+    superClasses = map (quantifyConstraintFor paramNames), constraints
+    superClassNames = map (({className}) -> className), constraints
 
     # TODO: defer if not all declared to prevent cycles in classes
     #   allDeclared = (ctx.isClass c for c in superClasses)

constraintsFromSuperClasses = (ctx, constraint) ->
  {className, types} = constraint
  join [constraint], concat (for s in (ctx.classNamed className).supers
    constraintsFromSuperClasses ctx, new ClassConstraint s, types)

constraintsFromInstance = (ctx, constraint) ->
  {className, type} = constraint


findSuperClassChain = (ctx, className, targetClassName) ->
  for s in (ctx.classNamed className).supers
    if s.className is targetClassName
      return [s.className]
    else if chain = findSuperClassChain ctx, s, targetClassName
      return join [s], chain
  undefined
