       if Parser.isSameLiteral child, target
         dests.push child
 
-      [ childDests, isChildFixed ] = Parser.traverseCode child, target, dests
+      [ childDests, isChildFixed ] = Parser.traverseCode child, target, isDeclaredInParent, dests
+      # console.log '------------'
+      # console.log inspect childDests
+      # console.log isChildFixed
       if isChildFixed
         dests = childDests
         isFixed = true
         return false
       else
-        dests.concat nodes
+        dests.concat nodes  #TODO `childDests` instead of `node`
 
     [ dests, isFixed ]
 

    code = new Code code.params, new Block(code.body), code.tag
    try
      code.compileNode code
      return true for variable in code.scope.variables when variable.name is target.value
    catch err
    false


        isContains = Parser.isContains child, target
        isDeclared = Parser.isDeclared child, target
        if isContains
          [ childDests, isChildFixed ] = Parser.traverseCode child, target, isDeclaredInParent or isDeclared, null
          if isDeclared or isChildFixed
            dests = childDests
            isFixed = true
