                 if n.value is null
                         debug.log "literal: null"
                         return @loadNullEjsValue() # this isn't properly typed...  dunno what to do about this here
+                else if n.value is undefined
+                        debug.log "literal: undefined"
+                        return @loadUndefinedEjsValue() # this isn't properly typed...  dunno what to do about this here
                 else if typeof n.raw is "string" and (n.raw[0] is '"' or n.raw[0] is "'")
                         debug.log "literal string: #{n.value}"
 


                proto = @createPropertyLoad ctor, { name: "prototype" }, false
                
                thisArg = @createCall @ejs.object_new, [proto], "objtmp"
                                                
                argv.push ctor                                                      # %closure
                argv.push thisArg                                                   # %this

                                fake_literal = {
                                        type: syntax.Literal
                                        value: n.argument.property.name
                                        raw: "'#{n.argument.property.name}'"
                                }
                                return @createCall callee, [(@visitOrNull n.argument.object), (@visit fake_literal)], "result"
                        else
