                 n
 
         visitCatchClause: (n) ->
-                new_scope = Object.create null
-                new_scope[n.param.name] = true
+                new_scope = new Map
+                new_scope.set(n.param.name, true)
                 n.guard = @visit n.guard
                 n.body = @visitWithScope new_scope, n.body
                 n

                rv

        visitVariableDeclarator: (n) ->
                @scope_stack.top[n.id.name] = true
                n

        visitImportSpecifier: (n) ->
                @scope_stack.top[n.id.name] = true
                n

        visitObjectExpression: (n) ->

                n

        visitFunction: (n) ->
                new_scope = new Map
                new_scope.set(p.name, true) for p in n.params
                new_scope.set(n.rest.name, true) if n.rest?
                new_scope.set("arguments", true)
                new_body = @visitWithScope new_scope, n.body
                n.body = new_body
                n
