     else
       # Reference
       if (isReference expression) or expression.label is 'keyword'
-        # TODO: replace free type variables with new unused names
+        # TODO: replace free type variables with new unused names in function
         concreteType = lookupInMap context, expression.token
         unless concreteType
           throw new Error "Unbound variable #{expression.token}"

        [s1, nextIndex, expression]

      # Call
      else if Array.isArray expression
        [op, arg] = inside expression
        # assume call.length is 2
        returnName = freshName nameIndex

    for k, v of map.values
      addToMap concated, k, v
  concated


# mycroft = (context, node, environment) ->
#   if node.label is 'numerical'
