         constructor: -> super
         
         visitUnaryExpression: (n) ->
-                if n.operator is "void" and n.argument.type is _Literal and n.argument.value is 0
+                if n.operator is "void" and n.argument.type is Literal and n.argument.value is 0
                         return create_intrinsic builtinUndefined_id, []
                 n
 

esprima = require 'esprima'
escodegen = require 'escodegen'

syntax = esprima.Syntax
_BinaryExpression = syntax.BinaryExpression
_UnaryExpression = syntax.UnaryExpression
_Literal = syntax.Literal
_AssignmentExpression = syntax.AssignmentExpression
_Identifier = syntax.Identifier
_UpdateExpression = syntax.UpdateExpression
_VariableDeclaration = syntax.VariableDeclaration

debug = require 'debug'
{ TreeVisitor } = require 'nodevisitor'


                # now make sure the init block initializes update_identifier_name

                if exp.init.type isnt VariableDeclaration and exp.init.type isnt AssignmentExpression
                        return super

                if exp.init.type is VariableDeclaration
                        found = false
                        # check for var/let $update_identifier_name = ...
                        found = found || (decl.id.name is update_identifier_name and decl.init.type is Literal and typeof decl.init.value is 'number') for decl in exp.init.declarations
                        if not found
                                return super
                        # else we win and the initializer is ok
                else
                        if exp.init.left.type isnt Identifier or exp.init.left.name isnt update_identifier_name
                                return super
                        # else we win and the initializer is ok
                        
