 
 findDefinitions = (ctx, names) ->
   auxiliaries = ctx.auxiliaries()
+  alreadyDefined = newSet()
   concat (for name in names
-    (lookupInMap auxiliaries, name)?.definition or [])
+    aux = (lookupInMap auxiliaries, name)
+    if aux and not inSet alreadyDefined, name
+      addAllToSet alreadyDefined, aux.defines
+      aux.definition
+    else
+      [])
 
 findDeps = (ctx) -> (names) ->
   auxiliaries = ctx.auxiliaries()

      for defined in def.definedNames
        addToMap auxiliaries, defined,
          deps: def.usedNames
          definition: def
    @_scope().auxiliaries = auxiliaries


  # TODO: should we support bare records?
  #   [a: 2 b: 3]
  if not ctx.shouldDefer()
    form.tea = markOrigin (tupleOfTypes map _tea, elems), form

  if ctx.assignTo()
    combinePatterns compiledElems
