| Index: sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart | 
| diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart b/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart | 
| index 4d32c899c6eede74c1243b77c3cd871e2448a91f..1a25d7328ffb7b32e8c73a03e89a8ffd9d40b62c 100644 | 
| --- a/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart | 
| +++ b/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart | 
| @@ -218,46 +218,46 @@ class CodeEmitterTask extends CompilerTask { | 
|  | 
| // function generateAccessor(field, prototype) { | 
| jsAst.Fun fun = js.fun(['field', 'prototype'], [ | 
| -      js['var len = field.length'], | 
| -      js['var code = field.charCodeAt(len - 1)'], | 
| -      js['code = ((code >= $RANGE1_FIRST) && (code <= $RANGE1_LAST))' | 
| +      js('var len = field.length'), | 
| +      js('var code = field.charCodeAt(len - 1)'), | 
| +      js('code = ((code >= $RANGE1_FIRST) && (code <= $RANGE1_LAST))' | 
| '    ? code - $RANGE1_ADJUST' | 
| '    : ((code >= $RANGE2_FIRST) && (code <= $RANGE2_LAST))' | 
| '      ? code - $RANGE2_ADJUST' | 
| '      : ((code >= $RANGE3_FIRST) && (code <= $RANGE3_LAST))' | 
| '        ? code - $RANGE3_ADJUST' | 
| -          '        : $NO_FIELD_CODE'], | 
| +          '        : $NO_FIELD_CODE'), | 
|  | 
| // if (needsAccessor) { | 
| js.if_('code', [ | 
| -        js['var getterCode = code & 3'], | 
| -        js['var setterCode = code >> 2'], | 
| -        js['var accessorName = field = field.substring(0, len - 1)'], | 
| +        js('var getterCode = code & 3'), | 
| +        js('var setterCode = code >> 2'), | 
| +        js('var accessorName = field = field.substring(0, len - 1)'), | 
|  | 
| -        js['var divider = field.indexOf(":")'], | 
| +        js('var divider = field.indexOf(":")'), | 
| js.if_('divider > 0', [  // Colon never in first position. | 
| -          js['accessorName = field.substring(0, divider)'], | 
| -          js['field = field.substring(divider + 1)'] | 
| +          js('accessorName = field.substring(0, divider)'), | 
| +          js('field = field.substring(divider + 1)') | 
| ]), | 
|  | 
| // if (needsGetter) { | 
| js.if_('getterCode', [ | 
| -          js['var args = (getterCode & 2) ? "$receiverParamName" : ""'], | 
| -          js['var receiver = (getterCode & 1) ? "this" : "$receiverParamName"'], | 
| -          js['var body = "return " + receiver + "." + field'], | 
| -          js['prototype["${namer.getterPrefix}" + accessorName] = ' | 
| -                 'new Function(args, body)'] | 
| +          js('var args = (getterCode & 2) ? "$receiverParamName" : ""'), | 
| +          js('var receiver = (getterCode & 1) ? "this" : "$receiverParamName"'), | 
| +          js('var body = "return " + receiver + "." + field'), | 
| +          js('prototype["${namer.getterPrefix}" + accessorName] = ' | 
| +                 'new Function(args, body)') | 
| ]), | 
|  | 
| // if (needsSetter) { | 
| js.if_('setterCode', [ | 
| -          js['var args = (setterCode & 2)' | 
| +          js('var args = (setterCode & 2)' | 
| '  ? "$receiverParamName,${_}$valueParamName"' | 
| -              '  : "$valueParamName"'], | 
| -          js['var receiver = (setterCode & 1) ? "this" : "$receiverParamName"'], | 
| -          js['var body = receiver + "." + field + "$_=$_$valueParamName"'], | 
| -          js['prototype["${namer.setterPrefix}" + accessorName] = ' | 
| -                 'new Function(args, body)'] | 
| +              '  : "$valueParamName"'), | 
| +          js('var receiver = (setterCode & 1) ? "this" : "$receiverParamName"'), | 
| +          js('var body = receiver + "." + field + "$_=$_$valueParamName"'), | 
| +          js('prototype["${namer.setterPrefix}" + accessorName] = ' | 
| +                 'new Function(args, body)') | 
| ]), | 
|  | 
| ]), | 
| @@ -288,33 +288,33 @@ class CodeEmitterTask extends CompilerTask { | 
|  | 
| // function(cls, fields, prototype) { | 
| var defineClass = js.fun(['cls', 'fields', 'prototype'], [ | 
| -      js['var constructor'], | 
| +      js('var constructor'), | 
|  | 
| // if (typeof fields == "function") { | 
| -      js.if_(js['typeof fields == "function"'], [ | 
| -        js['constructor = fields'] | 
| +      js.if_(js('typeof fields == "function"'), [ | 
| +        js('constructor = fields') | 
| ], /* else */ [ | 
| -        js['var str = "function " + cls + "("'], | 
| -        js['var body = ""'], | 
| +        js('var str = "function " + cls + "("'), | 
| +        js('var body = ""'), | 
|  | 
| // for (var i = 0; i < fields.length; i++) { | 
| js.for_('var i = 0', 'i < fields.length', 'i++', [ | 
| // if (i != 0) str += ", "; | 
| -          js.if_('i != 0', js['str += ", "']), | 
| +          js.if_('i != 0', js('str += ", "')), | 
|  | 
| -          js['var field = fields[i]'], | 
| -          js['field = generateAccessor(field, prototype)'], | 
| -          js['str += field'], | 
| -          js['body += ("this." + field + " = " + field + ";\\n")'] | 
| +          js('var field = fields[i]'), | 
| +          js('field = generateAccessor(field, prototype)'), | 
| +          js('str += field'), | 
| +          js('body += ("this." + field + " = " + field + ";\\n")') | 
| ]), | 
|  | 
| -        js['str += (") {" + body + "}\\nreturn " + cls)'], | 
| +        js('str += (") {" + body + "}\\nreturn " + cls)'), | 
|  | 
| -        js['constructor = (new Function(str))()'] | 
| +        js('constructor = (new Function(str))()') | 
| ]), | 
|  | 
| -      js['constructor.prototype = prototype'], | 
| -      js['constructor.builtin\$cls = cls'], | 
| +      js('constructor.prototype = prototype'), | 
| +      js('constructor.builtin\$cls = cls'), | 
|  | 
| // return constructor; | 
| js.return_('constructor') | 
| @@ -323,7 +323,7 @@ class CodeEmitterTask extends CompilerTask { | 
| // defineClassFunction (it's a local declaration in init()). | 
| return [ | 
| generateAccessorFunction, | 
| -        js['$generateAccessorHolder = generateAccessor'], | 
| +        js('$generateAccessorHolder = generateAccessor'), | 
| new jsAst.FunctionDeclaration( | 
| new jsAst.VariableDeclaration('defineClass'), defineClass) ]; | 
| } | 
| @@ -341,13 +341,13 @@ class CodeEmitterTask extends CompilerTask { | 
| // TODO(8541): Remove this work around. | 
|  | 
| return [ | 
| -      js['var $supportsProtoName = false'], | 
| -      js['var tmp = (defineClass("c", ["f?"], {})).prototype'], | 
| +      js('var $supportsProtoName = false'), | 
| +      js('var tmp = (defineClass("c", ["f?"], {})).prototype'), | 
|  | 
| -      js.if_(js['tmp.__proto__'], [ | 
| -        js['tmp.__proto__ = {}'], | 
| -        js.if_(js[r'typeof tmp.get$f != "undefined"'], | 
| -               js['$supportsProtoName = true']) | 
| +      js.if_(js('tmp.__proto__'), [ | 
| +        js('tmp.__proto__ = {}'), | 
| +        js.if_(js(r'typeof tmp.get$f != "undefined"'), | 
| +               js('$supportsProtoName = true')) | 
|  | 
| ]) | 
| ]; | 
| @@ -498,37 +498,37 @@ class CodeEmitterTask extends CompilerTask { | 
| var type = 0; | 
| if (useDiffEncoding) { | 
| statements.addAll([ | 
| -        js['var objectClassObject = ' | 
| +        js('var objectClassObject = ' | 
| '        collectedClasses["${namer.getName(objectClass)}"],' | 
| '    shortNames = "$diffEncoding".split(","),' | 
| '    nameNumber = 0,' | 
| '    diffEncodedString = shortNames[0],' | 
| -           '    calculatedShortNames = [0, 1]'],  // 0, 1 are args for splice. | 
| +           '    calculatedShortNames = [0, 1]'),  // 0, 1 are args for splice. | 
| js.for_('var i = 0', 'i < diffEncodedString.length', 'i++', [ | 
| -          js['var codes = [],' | 
| +          js('var codes = [],' | 
| '    diff = 0,' | 
| -             '    digit = diffEncodedString.charCodeAt(i)'], | 
| +             '    digit = diffEncodedString.charCodeAt(i)'), | 
| js.if_('digit == ${$PERIOD}', [ | 
| -            js['nameNumber = 0'], | 
| -            js['digit = diffEncodedString.charCodeAt(++i)'] | 
| +            js('nameNumber = 0'), | 
| +            js('digit = diffEncodedString.charCodeAt(++i)') | 
| ]), | 
| js.while_('digit <= ${$Z}', [ | 
| -            js['diff *= 26'], | 
| -            js['diff += (digit - ${$A})'], | 
| -            js['digit = diffEncodedString.charCodeAt(++i)'] | 
| +            js('diff *= 26'), | 
| +            js('diff += (digit - ${$A})'), | 
| +            js('digit = diffEncodedString.charCodeAt(++i)') | 
| ]), | 
| -          js['diff *= 26'], | 
| -          js['diff += (digit - ${$a})'], | 
| -          js['nameNumber += diff'], | 
| +          js('diff *= 26'), | 
| +          js('diff += (digit - ${$a})'), | 
| +          js('nameNumber += diff'), | 
| js.for_('var remaining = nameNumber', | 
| 'remaining > 0', | 
| 'remaining = ((remaining / 88) | 0)', [ | 
| -            js['codes.unshift(${$HASH} + (remaining % 88))'] | 
| +            js('codes.unshift(${$HASH} + (remaining % 88))') | 
| ]), | 
| -          js['calculatedShortNames.push(' | 
| -             '    String.fromCharCode.apply(String, codes))'] | 
| +          js('calculatedShortNames.push(' | 
| +             '    String.fromCharCode.apply(String, codes))') | 
| ]), | 
| -        js['shortNames.splice.apply(shortNames, calculatedShortNames)'] | 
| +        js('shortNames.splice.apply(shortNames, calculatedShortNames)') | 
| ]); | 
| } else { | 
| // No useDiffEncoding version. | 
| @@ -537,10 +537,10 @@ class CodeEmitterTask extends CompilerTask { | 
| String longNamesConstant = minify ? "" : | 
| ',longNames = "${longs.join(",")}".split(",")'; | 
| statements.add( | 
| -        js['var objectClassObject = ' | 
| +        js('var objectClassObject = ' | 
| '        collectedClasses["${namer.getName(objectClass)}"],' | 
| '    shortNames = "$diffEncoding".split(",")' | 
| -           '    $longNamesConstant']); | 
| +           '    $longNamesConstant')); | 
| } | 
|  | 
| String sliceOffset = '," + (j < $firstNormalSelector ? 1 : 0)'; | 
| @@ -553,11 +553,11 @@ class CodeEmitterTask extends CompilerTask { | 
|  | 
| statements.addAll([ | 
| js.for_('var j = 0', 'j < shortNames.length', 'j++', [ | 
| -        js['var type = 0'], | 
| -        js['var short = shortNames[j]'], | 
| -        js.if_('short[0] == "${namer.getterPrefix[0]}"', js['type = 1']), | 
| -        js.if_('short[0] == "${namer.setterPrefix[0]}"', js['type = 2']), | 
| -        js['$whatToPatch[short] = Function("' | 
| +        js('var type = 0'), | 
| +        js('var short = shortNames[j]'), | 
| +        js.if_('short[0] == "${namer.getterPrefix[0]}"', js('type = 1')), | 
| +        js.if_('short[0] == "${namer.setterPrefix[0]}"', js('type = 2')), | 
| +        js('$whatToPatch[short] = Function("' | 
| 'return this.$noSuchMethodName(' | 
| 'this,' | 
| '${namer.CURRENT_ISOLATE}.$createInvocationMirror(\'"' | 
| @@ -566,7 +566,7 @@ class CodeEmitterTask extends CompilerTask { | 
| ' + type' | 
| ' + ",Array.prototype.slice.call(arguments' | 
| '$sliceOffset' | 
| -                       ' + "),[]))")'] | 
| +                       ' + "),[]))")') | 
| ]) | 
| ]); | 
| } | 
| @@ -586,15 +586,15 @@ class CodeEmitterTask extends CompilerTask { | 
| // object and copy over the members. | 
|  | 
| List<jsAst.Node> statements = [ | 
| -      js['var pendingClasses = {}'], | 
| +      js('var pendingClasses = {}'), | 
|  | 
| -      js['var hasOwnProperty = Object.prototype.hasOwnProperty'], | 
| +      js('var hasOwnProperty = Object.prototype.hasOwnProperty'), | 
|  | 
| // for (var cls in collectedClasses) { | 
| js.forIn('cls', 'collectedClasses', [ | 
| // if (hasOwnProperty.call(collectedClasses, cls)) { | 
| js.if_('hasOwnProperty.call(collectedClasses, cls)', [ | 
| -          js['var desc = collectedClasses[cls]'], | 
| +          js('var desc = collectedClasses[cls]'), | 
|  | 
| /* The 'fields' are either a constructor function or a | 
| * string encoding fields, constructor and superclass.  Get | 
| @@ -603,24 +603,24 @@ class CodeEmitterTask extends CompilerTask { | 
| * descriptor. | 
| */ | 
| // var fields = desc[""], supr; | 
| -          js['var fields = desc[""], supr'], | 
| +          js('var fields = desc[""], supr'), | 
|  | 
| js.if_('typeof fields == "string"', [ | 
| -            js['var s = fields.split(";")'], | 
| -            js['supr = s[0]'], | 
| -            js['fields = s[1] == "" ? [] : s[1].split(",")'], | 
| +            js('var s = fields.split(";")'), | 
| +            js('supr = s[0]'), | 
| +            js('fields = s[1] == "" ? [] : s[1].split(",")'), | 
| ], /* else */ [ | 
| -            js['supr = desc.super'] | 
| +            js('supr = desc.super') | 
| ]), | 
|  | 
| -          js['isolateProperties[cls] = defineClass(cls, fields, desc)'], | 
| +          js('isolateProperties[cls] = defineClass(cls, fields, desc)'), | 
|  | 
| // if (supr) pendingClasses[cls] = supr; | 
| -          js.if_('supr', js['pendingClasses[cls] = supr']) | 
| +          js.if_('supr', js('pendingClasses[cls] = supr')) | 
| ]) | 
| ]), | 
|  | 
| -      js['var finishedClasses = {}'], | 
| +      js('var finishedClasses = {}'), | 
|  | 
| // function finishClass(cls) { ... } | 
| buildFinishClass(), | 
| @@ -630,7 +630,7 @@ class CodeEmitterTask extends CompilerTask { | 
|  | 
| statements.add( | 
| // for (var cls in pendingClasses) finishClass(cls); | 
| -      js.forIn('cls', 'pendingClasses', js['finishClass(cls)']) | 
| +      js.forIn('cls', 'pendingClasses', js('finishClass(cls)')) | 
| ); | 
| // function(collectedClasses, | 
| //          isolateProperties, | 
| @@ -646,37 +646,37 @@ class CodeEmitterTask extends CompilerTask { | 
| // TODO(8540): Remove this work around. | 
| /* Opera does not support 'getOwnPropertyNames'. Therefore we use | 
| hasOwnProperty instead. */ | 
| -      js['var hasOwnProperty = Object.prototype.hasOwnProperty'], | 
| +      js('var hasOwnProperty = Object.prototype.hasOwnProperty'), | 
|  | 
| // if (hasOwnProperty.call(finishedClasses, cls)) return; | 
| js.if_('hasOwnProperty.call(finishedClasses, cls)', | 
| js.return_()), | 
|  | 
| -      js['finishedClasses[cls] = true'], | 
| +      js('finishedClasses[cls] = true'), | 
|  | 
| -      js['var superclass = pendingClasses[cls]'], | 
| +      js('var superclass = pendingClasses[cls]'), | 
|  | 
| // The superclass is only false (empty string) for Dart's Object class. | 
| // The minifier together with noSuchMethod can put methods on the | 
| // Object.prototype object, and they show through here, so we check that | 
| // we have a string. | 
| js.if_('!superclass || typeof superclass != "string"', js.return_()), | 
| -      js['finishClass(superclass)'], | 
| -      js['var constructor = isolateProperties[cls]'], | 
| -      js['var superConstructor = isolateProperties[superclass]'], | 
| +      js('finishClass(superclass)'), | 
| +      js('var constructor = isolateProperties[cls]'), | 
| +      js('var superConstructor = isolateProperties[superclass]'), | 
|  | 
| // if (!superConstructor) | 
| //   superConstructor = existingIsolateProperties[superclass]; | 
| -      js.if_(js['superConstructor'].not, | 
| -             js['superConstructor'].assign( | 
| -                 js['existingIsolateProperties'][js['superclass']])), | 
| +      js.if_(js('superConstructor').not, | 
| +             js('superConstructor').assign( | 
| +                 js('existingIsolateProperties')[js('superclass')])), | 
|  | 
| -      js['var prototype = constructor.prototype'], | 
| +      js('var prototype = constructor.prototype'), | 
|  | 
| // if ($supportsProtoName) { | 
| js.if_(supportsProtoName, [ | 
| -        js['prototype.__proto__ = superConstructor.prototype'], | 
| -        js['prototype.constructor = constructor'], | 
| +        js('prototype.__proto__ = superConstructor.prototype'), | 
| +        js('prototype.constructor = constructor'), | 
|  | 
| ], /* else */ [ | 
| // function tmp() {}; | 
| @@ -684,11 +684,11 @@ class CodeEmitterTask extends CompilerTask { | 
| new jsAst.VariableDeclaration('tmp'), | 
| js.fun([], [])), | 
|  | 
| -        js['tmp.prototype = superConstructor.prototype'], | 
| -        js['var newPrototype = new tmp()'], | 
| +        js('tmp.prototype = superConstructor.prototype'), | 
| +        js('var newPrototype = new tmp()'), | 
|  | 
| -        js['constructor.prototype = newPrototype'], | 
| -        js['newPrototype.constructor = constructor'], | 
| +        js('constructor.prototype = newPrototype'), | 
| +        js('newPrototype.constructor = constructor'), | 
|  | 
| // for (var member in prototype) { | 
| js.forIn('member', 'prototype', [ | 
| @@ -698,7 +698,7 @@ class CodeEmitterTask extends CompilerTask { | 
|  | 
| // if (hasOwnProperty.call(prototype, member)) { | 
| js.if_('hasOwnProperty.call(prototype, member)', [ | 
| -            js['newPrototype[member] = prototype[member]'] | 
| +            js('newPrototype[member] = prototype[member]') | 
| ]) | 
| ]) | 
|  | 
| @@ -737,40 +737,40 @@ class CodeEmitterTask extends CompilerTask { | 
| if (needsDefineClass) { | 
| copyFinishClasses.add( | 
| // newIsolate.$finishClasses = oldIsolate.$finishClasses; | 
| -          js['newIsolate'][finishClassesProperty].assign( | 
| -              js['oldIsolate'][finishClassesProperty])); | 
| +          js('newIsolate')[finishClassesProperty].assign( | 
| +              js('oldIsolate')[finishClassesProperty])); | 
| } | 
|  | 
| // function(oldIsolate) { | 
| return js.fun('oldIsolate', [ | 
| -      js['var isolateProperties = oldIsolate.${namer.isolatePropertiesName}'], | 
| +      js('var isolateProperties = oldIsolate.${namer.isolatePropertiesName}'), | 
|  | 
| -      js[r'isolateProperties.$currentScript =' | 
| +      js(r'isolateProperties.$currentScript =' | 
| 'typeof document == "object" ?' | 
| '(document.currentScript ||' | 
| 'document.scripts[document.scripts.length - 1]) :' | 
| -              'null'], | 
| +              'null'), | 
|  | 
| -      js['var isolatePrototype = oldIsolate.prototype'], | 
| -      js['var str = "{\\n"'], | 
| -      js['str += ' | 
| -             '"var properties = $isolate.${namer.isolatePropertiesName};\\n"'], | 
| -      js['var hasOwnProperty = Object.prototype.hasOwnProperty'], | 
| +      js('var isolatePrototype = oldIsolate.prototype'), | 
| +      js('var str = "{\\n"'), | 
| +      js('str += ' | 
| +             '"var properties = $isolate.${namer.isolatePropertiesName};\\n"'), | 
| +      js('var hasOwnProperty = Object.prototype.hasOwnProperty'), | 
|  | 
| // for (var staticName in isolateProperties) { | 
| js.forIn('staticName', 'isolateProperties', [ | 
| js.if_('hasOwnProperty.call(isolateProperties, staticName)', [ | 
| -          js['str += ("this." + staticName + "= properties." + staticName + ' | 
| -                          '";\\n")'] | 
| +          js('str += ("this." + staticName + "= properties." + staticName + ' | 
| +                          '";\\n")') | 
| ]) | 
| ]), | 
|  | 
| -      js['str += "}\\n"'], | 
| +      js('str += "}\\n"'), | 
|  | 
| -      js['var newIsolate = new Function(str)'], | 
| -      js['newIsolate.prototype = isolatePrototype'], | 
| -      js['isolatePrototype.constructor = newIsolate'], | 
| -      js['newIsolate.${namer.isolatePropertiesName} = isolateProperties'], | 
| +      js('var newIsolate = new Function(str)'), | 
| +      js('newIsolate.prototype = isolatePrototype'), | 
| +      js('isolatePrototype.constructor = newIsolate'), | 
| +      js('newIsolate.${namer.isolatePropertiesName} = isolateProperties'), | 
| ]..addAll(copyFinishClasses) | 
| ..addAll([ | 
|  | 
| @@ -786,7 +786,7 @@ class CodeEmitterTask extends CompilerTask { | 
| var parameters = <String>['prototype', 'staticName', 'fieldName', | 
| 'getterName', 'lazyValue']; | 
| return js.fun(parameters, [ | 
| -      js['var getter = new Function("{ return $isolate." + fieldName + ";}")'], | 
| +      js('var getter = new Function("{ return $isolate." + fieldName + ";}")'), | 
| ]..addAll(addLazyInitializerLogic()) | 
| ); | 
| } | 
| @@ -796,22 +796,22 @@ class CodeEmitterTask extends CompilerTask { | 
| String cyclicThrow = namer.isolateAccess(backend.getCyclicThrowHelper()); | 
|  | 
| return [ | 
| -      js['var sentinelUndefined = {}'], | 
| -      js['var sentinelInProgress = {}'], | 
| -      js['prototype[fieldName] = sentinelUndefined'], | 
| +      js('var sentinelUndefined = {}'), | 
| +      js('var sentinelInProgress = {}'), | 
| +      js('prototype[fieldName] = sentinelUndefined'), | 
|  | 
| // prototype[getterName] = function() { | 
| -      js['prototype'][js['getterName']].assign(js.fun([], [ | 
| -        js['var result = $isolate[fieldName]'], | 
| +      js('prototype')[js('getterName')].assign(js.fun([], [ | 
| +        js('var result = $isolate[fieldName]'), | 
|  | 
| // try { | 
| js.try_([ | 
| js.if_('result === sentinelUndefined', [ | 
| -            js['$isolate[fieldName] = sentinelInProgress'], | 
| +            js('$isolate[fieldName] = sentinelInProgress'), | 
|  | 
| // try { | 
| js.try_([ | 
| -              js['result = $isolate[fieldName] = lazyValue()'], | 
| +              js('result = $isolate[fieldName] = lazyValue()'), | 
|  | 
| ], finallyPart: [ | 
| // Use try-finally, not try-catch/throw as it destroys the | 
| @@ -821,13 +821,13 @@ class CodeEmitterTask extends CompilerTask { | 
| js.if_('result === sentinelUndefined', [ | 
| // if ($isolate[fieldName] === sentinelInProgress) { | 
| js.if_('$isolate[fieldName] === sentinelInProgress', [ | 
| -                  js['$isolate[fieldName] = null'], | 
| +                  js('$isolate[fieldName] = null'), | 
| ]) | 
| ]) | 
| ]) | 
| ], /* else */ [ | 
| js.if_('result === sentinelInProgress', | 
| -              js['$cyclicThrow(staticName)'] | 
| +              js('$cyclicThrow(staticName)') | 
| ) | 
| ]), | 
|  | 
| @@ -835,7 +835,7 @@ class CodeEmitterTask extends CompilerTask { | 
| js.return_('result') | 
|  | 
| ], finallyPart: [ | 
| -          js['$isolate[getterName] = getter'] | 
| +          js('$isolate[getterName] = getter') | 
| ]) | 
| ])) | 
| ]; | 
| @@ -846,7 +846,7 @@ class CodeEmitterTask extends CompilerTask { | 
| return defineClassFunction | 
| ..addAll(buildProtoSupportCheck()) | 
| ..addAll([ | 
| -      js[finishClassesName].assign(finishClassesFunction) | 
| +      js(finishClassesName).assign(finishClassesFunction) | 
| ]); | 
| } | 
|  | 
| @@ -854,13 +854,13 @@ class CodeEmitterTask extends CompilerTask { | 
| if (!needsLazyInitializer) return []; | 
|  | 
| // $lazyInitializerName = $lazyInitializerFunction | 
| -    return [js[lazyInitializerName].assign(lazyInitializerFunction)]; | 
| +    return [js(lazyInitializerName).assign(lazyInitializerFunction)]; | 
| } | 
|  | 
| List buildFinishIsolateConstructor() { | 
| return [ | 
| // $finishIsolateConstructorName = $finishIsolateConstructorFunction | 
| -      js[finishIsolateConstructorName].assign(finishIsolateConstructorFunction) | 
| +      js(finishIsolateConstructorName).assign(finishIsolateConstructorFunction) | 
| ]; | 
| } | 
|  | 
| @@ -922,7 +922,7 @@ class CodeEmitterTask extends CompilerTask { | 
| if (isInterceptedMethod) { | 
| count++; | 
| parametersBuffer[0] = new jsAst.Parameter(receiverArgumentName); | 
| -      argumentsBuffer[0] = js[receiverArgumentName]; | 
| +      argumentsBuffer[0] = js(receiverArgumentName); | 
| } | 
|  | 
| int optionalParameterStart = positionalArgumentCount + extraArgumentCount; | 
| @@ -937,14 +937,14 @@ class CodeEmitterTask extends CompilerTask { | 
| assert(jsName != receiverArgumentName); | 
| if (count < optionalParameterStart) { | 
| parametersBuffer[count] = new jsAst.Parameter(jsName); | 
| -        argumentsBuffer[count] = js[jsName]; | 
| +        argumentsBuffer[count] = js(jsName); | 
| } else { | 
| int index = names.indexOf(element.name); | 
| if (index != -1) { | 
| indexOfLastOptionalArgumentInParameters = count; | 
| // The order of the named arguments is not the same as the | 
| // one in the real method (which is in Dart source order). | 
| -          argumentsBuffer[count] = js[jsName]; | 
| +          argumentsBuffer[count] = js(jsName); | 
| parametersBuffer[optionalParameterStart + index] = | 
| new jsAst.Parameter(jsName); | 
| // Note that [elements] may be null for a synthesized [member]. | 
| @@ -974,7 +974,7 @@ class CodeEmitterTask extends CompilerTask { | 
| parametersBuffer, argumentsBuffer, | 
| indexOfLastOptionalArgumentInParameters); | 
| } else { | 
| -      body = [js.return_(js['this'][namer.getName(member)](argumentsBuffer))]; | 
| +      body = [js.return_(js('this')[namer.getName(member)](argumentsBuffer))]; | 
| } | 
|  | 
| jsAst.Fun function = js.fun(parametersBuffer, body); | 
| @@ -1416,7 +1416,7 @@ class CodeEmitterTask extends CompilerTask { | 
| ? ['receiver'] | 
| : []; | 
| builder.addProperty(getterName, | 
| -        js.fun(args, js.return_(js['$receiver.$fieldName']))); | 
| +        js.fun(args, js.return_(js('$receiver.$fieldName')))); | 
| } | 
|  | 
| void generateSetter(Element member, String fieldName, String accessorName, | 
| @@ -1428,7 +1428,7 @@ class CodeEmitterTask extends CompilerTask { | 
| ? ['receiver', 'v'] | 
| : ['v']; | 
| builder.addProperty(setterName, | 
| -        js.fun(args, js[receiver][fieldName].assign('v'))); | 
| +        js.fun(args, js(receiver)[fieldName].assign('v'))); | 
| } | 
|  | 
| bool canGenerateCheckedSetter(Element member) { | 
| @@ -1453,7 +1453,7 @@ class CodeEmitterTask extends CompilerTask { | 
| FunctionElement helperElement | 
| = backend.getCheckedModeHelper(type, typeCast: false); | 
| String helperName = namer.isolateAccess(helperElement); | 
| -    List<jsAst.Expression> arguments = <jsAst.Expression>[js['v']]; | 
| +    List<jsAst.Expression> arguments = <jsAst.Expression>[js('v')]; | 
| if (helperElement.computeSignature(compiler).parameterCount != 1) { | 
| arguments.add(js.string(namer.operatorIs(type.element))); | 
| } | 
| @@ -1466,7 +1466,7 @@ class CodeEmitterTask extends CompilerTask { | 
| : ['v']; | 
| builder.addProperty(setterName, | 
| js.fun(args, | 
| -            js[receiver][fieldName].assign(js[helperName](arguments)))); | 
| +            js(receiver)[fieldName].assign(js(helperName)(arguments)))); | 
| } | 
|  | 
| void emitClassConstructor(ClassElement classElement, ClassBuilder builder) { | 
| @@ -1610,7 +1610,7 @@ class CodeEmitterTask extends CompilerTask { | 
| emitInstanceMembers(classElement, builder); | 
|  | 
| jsAst.Expression init = | 
| -        js[classesCollector][className].assign(builder.toObjectInitializer()); | 
| +        js(classesCollector)[className].assign(builder.toObjectInitializer()); | 
| buffer.write(jsAst.prettyPrint(init, compiler)); | 
| buffer.write('$N$n'); | 
| } | 
| @@ -1833,7 +1833,7 @@ class CodeEmitterTask extends CompilerTask { | 
| String name, | 
| jsAst.Expression functionExpression) { | 
| jsAst.Expression assignment = | 
| -        js[isolateProperties][name].assign(functionExpression); | 
| +        js(isolateProperties)[name].assign(functionExpression); | 
| buffer.write(jsAst.prettyPrint(assignment, compiler)); | 
| buffer.write('$N$n'); | 
| } | 
| @@ -1890,7 +1890,7 @@ class CodeEmitterTask extends CompilerTask { | 
|  | 
| addParameterStubs(callElement, (String name, jsAst.Expression value) { | 
| jsAst.Expression assignment = | 
| -            js[isolateProperties][staticName][name].assign(value); | 
| +            js(isolateProperties)[staticName][name].assign(value); | 
| buffer.write(jsAst.prettyPrint(assignment.toStatement(), compiler)); | 
| buffer.write('$N'); | 
| }); | 
| @@ -2012,18 +2012,18 @@ class CodeEmitterTask extends CompilerTask { | 
| List<String> parameters = <String>[]; | 
| List<jsAst.Expression> arguments = <jsAst.Expression>[]; | 
| if (inInterceptor) { | 
| -        arguments.add(js['this'][fieldNames[2]]); | 
| +        arguments.add(js('this')[fieldNames[2]]); | 
| } | 
| for (int i = 0; i < parameterCount; i++) { | 
| String name = 'p$i'; | 
| parameters.add(name); | 
| -        arguments.add(js[name]); | 
| +        arguments.add(js(name)); | 
| } | 
|  | 
| jsAst.Expression fun = js.fun( | 
| parameters, | 
| js.return_( | 
| -              js['this'][fieldNames[0]][js['this'][fieldNames[1]]](arguments))); | 
| +              js('this')[fieldNames[0]][js('this')[fieldNames[1]]](arguments))); | 
| boundClosureBuilder.addProperty(invocationName, fun); | 
|  | 
| addParameterStubs(callElement, boundClosureBuilder.addProperty); | 
| @@ -2033,7 +2033,7 @@ class CodeEmitterTask extends CompilerTask { | 
| }); | 
|  | 
| boundClosures.add( | 
| -          js[classesCollector][mangledName].assign( | 
| +          js(classesCollector)[mangledName].assign( | 
| boundClosureBuilder.toObjectInitializer())); | 
|  | 
| closureClass = namer.isolateAccess(closureClassElement); | 
| @@ -2050,16 +2050,16 @@ class CodeEmitterTask extends CompilerTask { | 
|  | 
| List<String> parameters = <String>[]; | 
| List<jsAst.Expression> arguments = <jsAst.Expression>[]; | 
| -    arguments.add(js['this']); | 
| +    arguments.add(js('this')); | 
| arguments.add(js.string(targetName)); | 
| if (inInterceptor) { | 
| parameters.add(extraArg); | 
| -      arguments.add(js[extraArg]); | 
| +      arguments.add(js(extraArg)); | 
| } | 
|  | 
| jsAst.Expression getterFunction = js.fun( | 
| parameters, | 
| -        js.return_(js[closureClass].newWith(arguments))); | 
| +        js.return_(js(closureClass).newWith(arguments))); | 
|  | 
| defineStub(getterName, getterFunction); | 
| } | 
| @@ -2083,15 +2083,15 @@ class CodeEmitterTask extends CompilerTask { | 
| jsAst.Expression buildGetter() { | 
| if (member.isGetter()) { | 
| String getterName = namer.getterName(member); | 
| -        return js['this'][getterName]( | 
| +        return js('this')[getterName]( | 
| isInterceptedMethod | 
| -                ? <jsAst.Expression>[js[receiverArgumentName]] | 
| +                ? <jsAst.Expression>[js(receiverArgumentName)] | 
| : <jsAst.Expression>[]); | 
| } else { | 
| String fieldName = member.hasFixedBackendName() | 
| ? member.fixedBackendName() | 
| : namer.instanceFieldName(member); | 
| -        return js['this'][fieldName]; | 
| +        return js('this')[fieldName]; | 
| } | 
| } | 
|  | 
| @@ -2119,7 +2119,7 @@ class CodeEmitterTask extends CompilerTask { | 
| for (int i = 0; i < selector.argumentCount; i++) { | 
| String name = 'arg$i'; | 
| parameters.add(new jsAst.Parameter(name)); | 
| -          arguments.add(js[name]); | 
| +          arguments.add(js(name)); | 
| } | 
|  | 
| jsAst.Fun function = js.fun( | 
| @@ -2141,7 +2141,7 @@ class CodeEmitterTask extends CompilerTask { | 
| compiler.withCurrentElement(element, () { | 
| Constant initialValue = handler.getInitialValueFor(element); | 
| jsAst.Expression init = | 
| -          js[isolateProperties][namer.getName(element)].assign( | 
| +          js(isolateProperties)[namer.getName(element)].assign( | 
| constantEmitter.referenceInInitializationContext(initialValue)); | 
| buffer.write(jsAst.prettyPrint(init, compiler)); | 
| buffer.write('$N'); | 
| @@ -2168,7 +2168,7 @@ class CodeEmitterTask extends CompilerTask { | 
| // The name is used for error reporting. The 'initial' must be a | 
| // closure that constructs the initial value. | 
| List<jsAst.Expression> arguments = <jsAst.Expression>[]; | 
| -        arguments.add(js[isolateProperties]); | 
| +        arguments.add(js(isolateProperties)); | 
| arguments.add(js.string(element.name.slowToString())); | 
| arguments.add(js.string(namer.getName(element))); | 
| arguments.add(js.string(namer.getLazyInitializerName(element))); | 
| @@ -2177,7 +2177,7 @@ class CodeEmitterTask extends CompilerTask { | 
| if (getter != null) { | 
| arguments.add(getter); | 
| } | 
| -        jsAst.Expression init = js[lazyInitializerName](arguments); | 
| +        jsAst.Expression init = js(lazyInitializerName)(arguments); | 
| buffer.write(jsAst.prettyPrint(init, compiler)); | 
| buffer.write("$N"); | 
| } | 
| @@ -2210,7 +2210,7 @@ class CodeEmitterTask extends CompilerTask { | 
| } | 
| CodeBuffer buffer = | 
| bufferForElement(constant.computeType(compiler).element, eagerBuffer); | 
| -      jsAst.Expression init = js[isolateProperties][name].assign( | 
| +      jsAst.Expression init = js(isolateProperties)[name].assign( | 
| constantInitializerExpression(constant)); | 
| buffer.write(jsAst.prettyPrint(init, compiler)); | 
| buffer.write('$N'); | 
| @@ -2401,15 +2401,15 @@ class CodeEmitterTask extends CompilerTask { | 
| compiler.createInvocationMirrorElement); | 
|  | 
| assert(backend.isInterceptedName(Compiler.NO_SUCH_METHOD)); | 
| -      jsAst.Expression expression = js['this.$noSuchMethodName']( | 
| -          [js['this'], | 
| -           js[namer.CURRENT_ISOLATE][createInvocationMirror]([ | 
| +      jsAst.Expression expression = js('this.$noSuchMethodName')( | 
| +          [js('this'), | 
| +           js(namer.CURRENT_ISOLATE)[createInvocationMirror]([ | 
| js.string(compiler.enableMinification ? | 
| internalName : methodName), | 
| js.string(internalName), | 
| type, | 
| new jsAst.ArrayInitializer.from( | 
| -                   parameters.map((param) => js[param.name]).toList()), | 
| +                   parameters.map((param) => js(param.name)).toList()), | 
| new jsAst.ArrayInitializer.from(argNames)])]); | 
| parameters = backend.isInterceptedName(selector.name) | 
| ? ([new jsAst.Parameter('\$receiver')]..addAll(parameters)) | 
| @@ -2477,7 +2477,7 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| String key, | 
| Collection<ClassElement> classes) { | 
| jsAst.Statement buildReturnInterceptor(ClassElement cls) { | 
| -      return js.return_(js[namer.isolateAccess(cls)]['prototype']); | 
| +      return js.return_(js(namer.isolateAccess(cls))['prototype']); | 
| } | 
|  | 
| /** | 
| @@ -2488,7 +2488,7 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| jsAst.Expression condition; | 
| assert(backend.isInterceptorClass(cls)); | 
| if (cls == backend.jsBoolClass) { | 
| -        condition = js['(typeof receiver) == "boolean"']; | 
| +        condition = js('(typeof receiver) == "boolean"'); | 
| } else if (cls == backend.jsIntClass || | 
| cls == backend.jsDoubleClass || | 
| cls == backend.jsNumberClass) { | 
| @@ -2497,13 +2497,13 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| cls == backend.jsMutableArrayClass || | 
| cls == backend.jsFixedArrayClass || | 
| cls == backend.jsExtendableArrayClass) { | 
| -        condition = js['receiver.constructor == Array']; | 
| +        condition = js('receiver.constructor == Array'); | 
| } else if (cls == backend.jsStringClass) { | 
| -        condition = js['(typeof receiver) == "string"']; | 
| +        condition = js('(typeof receiver) == "string"'); | 
| } else if (cls == backend.jsNullClass) { | 
| -        condition = js['receiver == null']; | 
| +        condition = js('receiver == null'); | 
| } else if (cls == backend.jsFunctionClass) { | 
| -        condition = js['(typeof receiver) == "function"']; | 
| +        condition = js('(typeof receiver) == "function"'); | 
| } else { | 
| throw 'internal error'; | 
| } | 
| @@ -2563,7 +2563,7 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| hasDouble ? backend.jsDoubleClass : backend.jsNumberClass); | 
|  | 
| if (hasInt) { | 
| -        jsAst.Expression isInt = js['Math.floor(receiver) == receiver']; | 
| +        jsAst.Expression isInt = js('Math.floor(receiver) == receiver'); | 
| whenNumber = js.block([ | 
| js.if_(isInt, buildReturnInterceptor(backend.jsIntClass)), | 
| returnNumberClass]); | 
| @@ -2585,7 +2585,7 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| // TypeError which is later identified as a null-error by | 
| // [unwrapException] in js_helper.dart. | 
| block.statements.add(js.if_('receiver == null', | 
| -                                  js.return_(js['receiver']))); | 
| +                                  js.return_(js('receiver')))); | 
| } | 
| if (hasFunction) { | 
| block.statements.add(buildInterceptorCheck(backend.jsFunctionClass)); | 
| @@ -2602,8 +2602,8 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| if (hasNative) { | 
| block.statements.add( | 
| js.if_( | 
| -              js['(typeof receiver) != "object"'], | 
| -              js.return_(js['receiver']))); | 
| +              js('(typeof receiver) != "object"'), | 
| +              js.return_(js('receiver')))); | 
|  | 
| // if (receiver instanceof $.Object) return receiver; | 
| // return $.getNativeInterceptor(receiver); | 
| @@ -2611,9 +2611,9 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| js.if_( | 
| new jsAst.Binary( | 
| "instanceof", | 
| -                  js['receiver'], | 
| -                  js[namer.isolateAccess(compiler.objectClass)]), | 
| -              js.return_(js['receiver']))); | 
| +                  js('receiver'), | 
| +                  js(namer.isolateAccess(compiler.objectClass))), | 
| +              js.return_(js('receiver')))); | 
|  | 
| // TODO(sra): Fold this 'Object' check into the `getNativeInterceptor` | 
| // check by patching `Object.prototype` with a special hook function. | 
| @@ -2621,20 +2621,20 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| // 'holders' are not Dart classes. | 
| block.statements.add( | 
| js.if_( | 
| -              js['Object.getPrototypeOf(receiver) === Object.prototype'], | 
| +              js('Object.getPrototypeOf(receiver) === Object.prototype'), | 
| buildReturnInterceptor(backend.jsInterceptorClass))); | 
|  | 
| block.statements.add( | 
| js.return_( | 
| -              js[namer.isolateAccess(backend.getNativeInterceptorMethod)]( | 
| +              js(namer.isolateAccess(backend.getNativeInterceptorMethod))( | 
| ['receiver']))); | 
|  | 
| } else { | 
| -      block.statements.add(js.return_(js['receiver'])); | 
| +      block.statements.add(js.return_(js('receiver'))); | 
| } | 
|  | 
| buffer.write(jsAst.prettyPrint( | 
| -        js[isolateProperties][key].assign(js.fun(['receiver'], block)), | 
| +        js(isolateProperties)[key].assign(js.fun(['receiver'], block)), | 
| compiler)); | 
| buffer.write(N); | 
| } | 
| @@ -2708,17 +2708,17 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| jsAst.Statement tryOptimizeOneShotInterceptor(Selector selector, | 
| Set<ClassElement> classes) { | 
| jsAst.Expression isNumber(String variable) { | 
| -      return js[variable].typeof.equals(js.string('number')); | 
| +      return js(variable).typeof.equals(js.string('number')); | 
| } | 
|  | 
| jsAst.Expression isNotObject(String variable) { | 
| -      return js[variable].typeof.equals(js.string('object')).not; | 
| +      return js(variable).typeof.equals(js.string('object')).not; | 
| } | 
|  | 
| jsAst.Expression isInt(String variable) { | 
| -      jsAst.Expression receiver = js[variable]; | 
| +      jsAst.Expression receiver = js(variable); | 
| return isNumber(variable).binary('&&', | 
| -          js['Math']['floor'](receiver).equals(receiver)); | 
| +          js('Math')['floor'](receiver).equals(receiver)); | 
| } | 
|  | 
| jsAst.Expression tripleShiftZero(jsAst.Expression receiver) { | 
| @@ -2736,11 +2736,11 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| // :]. | 
| List<jsAst.Statement> body = <jsAst.Statement>[]; | 
| body.add(js.if_('receiver == null', | 
| -                        js.return_(js['a0'].equals(new jsAst.LiteralNull())))); | 
| +                        js.return_(js('a0').equals(new jsAst.LiteralNull())))); | 
| body.add(js.if_( | 
| isNotObject('receiver'), | 
| -            js.return_(js['a0'].equals(new jsAst.LiteralNull()).not.binary( | 
| -                '&&', js['receiver'].strictEquals(js['a0']))))); | 
| +            js.return_(js('a0').equals(new jsAst.LiteralNull()).not.binary( | 
| +                '&&', js('receiver').strictEquals(js('a0')))))); | 
| return new jsAst.Block(body); | 
| } | 
| if (!classes.contains(backend.jsIntClass) | 
| @@ -2752,7 +2752,7 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| // The following operators do not map to a JavaScript | 
| // operator. | 
| if (name != '~/' && name != '<<' && name != '%' && name != '>>') { | 
| -          jsAst.Expression result = js['receiver'].binary(name, js['a0']); | 
| +          jsAst.Expression result = js('receiver').binary(name, js('a0')); | 
| if (name == '&' || name == '|' || name == '^') { | 
| result = tripleShiftZero(result); | 
| } | 
| @@ -2770,13 +2770,13 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| // [: if (typeof receiver == "number") return -receiver:]. | 
| return js.if_( | 
| isNumber('receiver'), | 
| -            js.return_(new jsAst.Prefix('-', js['receiver']))); | 
| +            js.return_(new jsAst.Prefix('-', js('receiver')))); | 
| } else { | 
| assert(name == '~'); | 
| return js.if_( | 
| isInt('receiver'), | 
| js.return_( | 
| -                tripleShiftZero(new jsAst.Prefix(name, js['receiver'])))); | 
| +                tripleShiftZero(new jsAst.Prefix(name, js('receiver'))))); | 
| } | 
| } else if (selector.isIndex() || selector.isIndexSet()) { | 
| // For an index operation, this code generates: | 
| @@ -2808,8 +2808,8 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| if (!containsArray && !containsString) { | 
| return null; | 
| } | 
| -      jsAst.Expression receiver = js['receiver']; | 
| -      jsAst.Expression arg0 = js['a0']; | 
| +      jsAst.Expression receiver = js('receiver'); | 
| +      jsAst.Expression arg0 = js('a0'); | 
| jsAst.Expression isIntAndAboveZero = | 
| arg0.binary('>>>', js.toExpression(0)).strictEquals(arg0); | 
| jsAst.Expression belowLength = arg0.binary('<', receiver['length']); | 
| @@ -2838,7 +2838,7 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| '&&', receiver[r'immutable$list'].not); | 
| return js.if_(isImmutableArray.binary( | 
| '&&', isIntAndAboveZero.binary('&&', belowLength)), | 
| -                      js.return_(receiver[arg0].assign(js['a1']))); | 
| +                      js.return_(receiver[arg0].assign(js('a1')))); | 
| } | 
| } | 
| return null; | 
| @@ -2857,16 +2857,16 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| List<jsAst.Parameter> parameters = <jsAst.Parameter>[]; | 
| List<jsAst.Expression> arguments = <jsAst.Expression>[]; | 
| parameters.add(new jsAst.Parameter('receiver')); | 
| -      arguments.add(js['receiver']); | 
| +      arguments.add(js('receiver')); | 
|  | 
| if (selector.isSetter()) { | 
| parameters.add(new jsAst.Parameter('value')); | 
| -        arguments.add(js['value']); | 
| +        arguments.add(js('value')); | 
| } else { | 
| for (int i = 0; i < selector.argumentCount; i++) { | 
| String argName = 'a$i'; | 
| parameters.add(new jsAst.Parameter(argName)); | 
| -          arguments.add(js[argName]); | 
| +          arguments.add(js(argName)); | 
| } | 
| } | 
|  | 
| @@ -2879,13 +2879,13 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
|  | 
| String invocationName = backend.namer.invocationName(selector); | 
| body.add(js.return_( | 
| -          js[isolateProperties][getInterceptorName]('receiver')[invocationName]( | 
| +          js(isolateProperties)[getInterceptorName]('receiver')[invocationName]( | 
| arguments))); | 
|  | 
| jsAst.Fun function = js.fun(parameters, body); | 
|  | 
| jsAst.PropertyAccess property = | 
| -          js[isolateProperties][name]; | 
| +          js(isolateProperties)[name]; | 
|  | 
| buffer.write(jsAst.prettyPrint(property.assign(function), compiler)); | 
| buffer.write(N); | 
| @@ -2902,7 +2902,7 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
| void emitInterceptedNames(CodeBuffer buffer) { | 
| if (!compiler.enabledInvokeOn) return; | 
| String name = backend.namer.getName(backend.interceptedNames); | 
| -    jsAst.PropertyAccess property = js[isolateProperties][name]; | 
| +    jsAst.PropertyAccess property = js(isolateProperties)[name]; | 
|  | 
| int index = 0; | 
| List<jsAst.ArrayElement> elements = backend.usedInterceptors.map( | 
| @@ -2920,7 +2920,7 @@ if (typeof document !== "undefined" && document.readyState !== "complete") { | 
|  | 
| void emitInitFunction(CodeBuffer buffer) { | 
| jsAst.Fun fun = js.fun([], [ | 
| -      js['$isolateProperties = {}'], | 
| +      js('$isolateProperties = {}'), | 
| ] | 
| ..addAll(buildDefineClassAndFinishClassFunctionsIfNecessary()) | 
| ..addAll(buildLazyInitializerFunctionIfNecessary()) | 
|  |