 class ClassContraint
   constructor: (@className, @type) ->
 
+
+addConstraints = ({constraints, type}, addedConstraints) ->
+  new Constrained (join constraints, addedConstraints), type
+
+toConstrained = (type) ->
+  new Constrained [], type
+
 toForAll = (type) ->
   new ForAll [], type
-
-toConstrained = (type) ->
-  new Constrained [], type
 
 quantifyAll = (type) ->
   quantify (findFree type), type


  allBoundTypeVariables: ->
    concatSets (for scope in @scopes
      scope.boundTypeVariables)

  isClassDefined: (name) ->
    !!@classNamed name

    type

substituteList = (substitution, list) ->
  map ((t) -> substitute substitution, t), list

findFree = (type) ->
  if type instanceof TypeVariable
