          return;   // should not examine function's children
  
        case Token.CATCH:
-@@ -148,7 +152,7 @@ class SyntacticScopeCreator implements ScopeCreator {
+@@ -148,7 +151,7 @@ class SyntacticScopeCreator implements ScopeCreator {
          final Node var = n.getFirstChild();
          final Node block = var.getNext();
  

   }
 
   /**
@@ -182,9 +187,8 @@ class SyntacticScopeCreator implements ScopeCreator {
    */
   private class DefaultRedeclarationHandler implements RedeclarationHandler {
     public void onRedeclaration(
-        Scope s, String name, Node n, CompilerInput input) {
-      Node parent = n.getParent();
-
+        Scope s, String name,
+        Node n, Node parent, Node gramps, Node nodeWithLineNumber) {
       // Don't allow multiple variables to be declared at the top level scope
       if (scope.isGlobal()) {
         Scope.Var origVar = scope.getVar(name);
@@ -228,17 +232,15 @@ class SyntacticScopeCreator implements ScopeCreator {
    * @param n The node corresponding to the variable name.
    * @param declaredType The variable's type, according to JSDoc
    */
-  private void declareVar(Node n) {
-    Preconditions.checkState(n.getType() == Token.NAME);
-
-    CompilerInput input = compiler.getInput(sourceName);
-    String name = n.getString();
+  private void declareVar(String name, Node n, Node parent,
+                          Node gramps, JSType declaredType,
+                          Node nodeWithLineNumber) {
     if (scope.isDeclared(name, false)
         || (scope.isLocal() && name.equals(ARGUMENTS))) {
       redeclarationHandler.onRedeclaration(

diff --git a/src/com/google/javascript/jscomp/Normalize.java b/src/com/google/javascript/jscomp/Normalize.java
index c14ac8f1..4c99858e 100644
--- a/src/com/google/javascript/jscomp/Normalize.java
