 
       [branchUsedNames, precs, assigns, compiledResult])
 
-    [usedNames] = unzip compiledResults
-    lifting = map (findDeps ctx), usedNames
-    jointlyUsed = intersectSets lifting
+    [usedNameLists] = unzip compiledResults
+    lifting = map (findDeps ctx), usedNameLists
+    jointlyUsed = addSiblingDefines ctx, intersectSets lifting
 
     compiledCases = conditional (for [used, precs, assigns, compiledResult], i in compiledResults
       lifted = lifting[i]

    else
      [])

findDeps = (ctx) -> (names) ->
  auxiliaries = ctx.auxiliaries()
  depSet = newSet()
  auxiliaryDependencies auxiliaries, names, depSet
  arrayToSet reverse setToArray depSet

auxiliaryDependencies = (graph, names, allSet) ->
  for name in names
    if not inSet allSet, name
      addToSet allSet, name
      auxiliaryDependencies graph, ((lookupInMap graph, name)?.deps or []), allSet
  return
  # concat (for name in names
  #   join (deps = ((lookupInMap graph, name)?.deps or [])),

      ctx.leaveDefinition()
      ctx.closeScope()
      branchUsedNames = ctx.usedNames()
      console.log (print pattern), branchUsedNames

      if ctx.shouldDefer()
        continue
