     @parenthesizeObjectIfFunction node
   Identifier: (node) ->
     @escapeUndefined node
-
-  pushStack: (node) ->
-    @scopes.push node
-    @block = node
-
-  popStack: (node) ->
-    @block = @scopes.pop()
-
-  ###*
-  # syntaxError():
-  # Throws a syntax error for the given `node`.
-  #
-  #     @syntaxError node, "Not supported"
-  ###
-
-  syntaxError: (node, description) ->
-    err = buildError(
-      lineNumber: node.loc?.start?.line,
-      column: node.loc?.start?.column,
-      description: description
-    , @options.source, @options.filename)
-    throw err
+  BinaryExpression: (node) ->
+    @updateBinaryExpression node
+  UnaryExpression: (node) ->
+    @updateVoidToUndefined node
+
+  ###
+  # Updates `void 0` UnaryExpressions to `undefined` identifiers
+  ###
+
+  updateVoidToUndefined: (node) ->
+    if node.operator is 'void'
+      @replace node, type: 'Identifier', name: 'undefined'
+    else
+      node
 
   ###
   # Turn 'undefined' into '`undefined`'

    newNode.range = node.range
    newNode.loc = node.loc
    newNode

###*
# Builder : new Builder(ast, [options])

      @replace node, type: 'Identifier', name: node.id.name

  ###*
  # replace() : @replace(node, newNode)
  # Fabricates a replacement node for `node` that maintains the same source
  # location.
  #
