 -        }
        };
  
--      NodeTraversal.traverse(compiler, cfgNode, gatherCb);
-+      NodeTraversal.traverse(compiler, n, gatherCb);
-     }
-   }
- 
-@@ -539,7 +527,7 @@ class FlowSensitiveInlineVariables extends AbstractPostOrderCallback
-    */
-   private static boolean checkLeftOf(
-       Node n, Node expressionRoot, Predicate<Node> predicate) {
--    for (Node p = n; p != expressionRoot; p = p.getParent()) {
-+    for (Node p = n.getParent(); p != expressionRoot; p = p.getParent()) {
-       for (Node cur = p.getParent().getFirstChild(); cur != p;
-           cur = cur.getNext()) {
-         if (predicate.apply(cur)) {
+       NodeTraversal.traverse(compiler, cfgNode, gatherCb);

               // Don't count lhs of top-level assignment chain
-              return;
-            } else {
-              numUsesWithinCfgNode++;
-            }
+            numUseWithinUseCfgNode++;
           }
         }
 

diff --git a/src/com/google/javascript/jscomp/FlowSensitiveInlineVariables.java b/src/com/google/javascript/jscomp/FlowSensitiveInlineVariables.java
index d58f80cb..ecba09b1 100644
--- a/src/com/google/javascript/jscomp/FlowSensitiveInlineVariables.java
+++ b/src/com/google/javascript/jscomp/FlowSensitiveInlineVariables.java
@@ -479,30 +479,19 @@ class FlowSensitiveInlineVariables extends AbstractPostOrderCallback
 
         @Override
         public void visit(NodeTraversal t, Node n, Node parent) {
