// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// @dart = 2.7

import 'native_testing.dart';

// JavaScript reserved words:
//
// break
// case
// catch
// class
// const
// continue
// debugger
// default
// delete
// do
// else
// enum
// export
// extends
// false
// finally
// for
// function
// if
// implements
// import
// in
// instanceof
// interface
// let
// new
// null
// package
// private
// protected
// public
// return
// static
// super
// switch
// this
// throw
// true
// try
// typeof
// var
// void
// while
// with
// yield
//
// Funny thing in JavaScript: there are two syntactic categories:
// "Identifier" and "IdentifierName".  The latter includes reserved
// words.  This is legal JavaScript according to ECMA-262.5:
//
//    this.default
//
// See section 11.2 "Left-Hand-Side Expressions" which states that a
// "MemberExpression" includes: "MemberExpression . IdentifierName".

@Native("NativeClassWithOddNames")
class NativeClassWithOddNames {
  @JSName('break')
  bool breakValue;
  @JSName('case')
  bool caseValue;
  @JSName('catch')
  bool catchValue;
  @JSName('class')
  bool classValue;
  @JSName('const')
  bool constValue;
  @JSName('continue')
  bool continueValue;
  @JSName('debugger')
  bool debuggerValue;
  @JSName('default')
  bool defaultValue;
  @JSName('delete')
  bool deleteValue;
  @JSName('do')
  bool doValue;
  @JSName('else')
  bool elseValue;
  @JSName('enum')
  bool enumValue;
  @JSName('export')
  bool exportValue;
  @JSName('extends')
  bool extendsValue;
  @JSName('false')
  bool falseValue;
  @JSName('finally')
  bool finallyValue;
  @JSName('for')
  bool forValue;
  @JSName('function')
  bool functionValue;
  @JSName('if')
  bool ifValue;
  @JSName('implements')
  bool implementsValue;
  @JSName('import')
  bool importValue;
  @JSName('in')
  bool inValue;
  @JSName('instanceof')
  bool instanceofValue;
  @JSName('interface')
  bool interfaceValue;
  @JSName('let')
  bool letValue;
  @JSName('new')
  bool newValue;
  @JSName('null')
  bool nullValue;
  @JSName('package')
  bool packageValue;
  @JSName('private')
  bool privateValue;
  @JSName('protected')
  bool protectedValue;
  @JSName('public')
  bool publicValue;
  @JSName('return')
  bool returnValue;
  @JSName('static')
  bool staticValue;
  @JSName('super')
  bool superValue;
  @JSName('switch')
  bool switchValue;
  @JSName('this')
  bool thisValue;
  @JSName('throw')
  bool throwValue;
  @JSName('true')
  bool trueValue;
  @JSName('try')
  bool tryValue;
  @JSName('typeof')
  bool typeofValue;
  @JSName('var')
  bool varValue;
  @JSName('void')
  bool voidValue;
  @JSName('while')
  bool whileValue;
  @JSName('with')
  bool withValue;
  @JSName('yield')
  bool yieldValue;

  void testMyFields() {
    if (breakValue != null) throw 'incorrect initialization of "breakValue"';
    breakValue = true;
    if (!breakValue) throw 'incorrect value in "breakValue"';
    breakValue = false;
    if (breakValue) throw 'incorrect value in "breakValue"';

    if (caseValue != null) throw 'incorrect initialization of "caseValue"';
    caseValue = true;
    if (!caseValue) throw 'incorrect value in "caseValue"';
    caseValue = false;
    if (caseValue) throw 'incorrect value in "caseValue"';

    if (catchValue != null) throw 'incorrect initialization of "catchValue"';
    catchValue = true;
    if (!catchValue) throw 'incorrect value in "catchValue"';
    catchValue = false;
    if (catchValue) throw 'incorrect value in "catchValue"';

    if (classValue != null) throw 'incorrect initialization of "classValue"';
    classValue = true;
    if (!classValue) throw 'incorrect value in "classValue"';
    classValue = false;
    if (classValue) throw 'incorrect value in "classValue"';

    if (constValue != null) throw 'incorrect initialization of "constValue"';
    constValue = true;
    if (!constValue) throw 'incorrect value in "constValue"';
    constValue = false;
    if (constValue) throw 'incorrect value in "constValue"';

    if (continueValue != null)
      throw 'incorrect initialization of "continueValue"';
    continueValue = true;
    if (!continueValue) throw 'incorrect value in "continueValue"';
    continueValue = false;
    if (continueValue) throw 'incorrect value in "continueValue"';

    if (debuggerValue != null)
      throw 'incorrect initialization of "debuggerValue"';
    debuggerValue = true;
    if (!debuggerValue) throw 'incorrect value in "debuggerValue"';
    debuggerValue = false;
    if (debuggerValue) throw 'incorrect value in "debuggerValue"';

    if (defaultValue != null)
      throw 'incorrect initialization of "defaultValue"';
    defaultValue = true;
    if (!defaultValue) throw 'incorrect value in "defaultValue"';
    defaultValue = false;
    if (defaultValue) throw 'incorrect value in "defaultValue"';

    if (deleteValue != null) throw 'incorrect initialization of "deleteValue"';
    deleteValue = true;
    if (!deleteValue) throw 'incorrect value in "deleteValue"';
    deleteValue = false;
    if (deleteValue) throw 'incorrect value in "deleteValue"';

    if (doValue != null) throw 'incorrect initialization of "doValue"';
    doValue = true;
    if (!doValue) throw 'incorrect value in "doValue"';
    doValue = false;
    if (doValue) throw 'incorrect value in "doValue"';

    if (elseValue != null) throw 'incorrect initialization of "elseValue"';
    elseValue = true;
    if (!elseValue) throw 'incorrect value in "elseValue"';
    elseValue = false;
    if (elseValue) throw 'incorrect value in "elseValue"';

    if (enumValue != null) throw 'incorrect initialization of "enumValue"';
    enumValue = true;
    if (!enumValue) throw 'incorrect value in "enumValue"';
    enumValue = false;
    if (enumValue) throw 'incorrect value in "enumValue"';

    if (exportValue != null) throw 'incorrect initialization of "exportValue"';
    exportValue = true;
    if (!exportValue) throw 'incorrect value in "exportValue"';
    exportValue = false;
    if (exportValue) throw 'incorrect value in "exportValue"';

    if (extendsValue != null)
      throw 'incorrect initialization of "extendsValue"';
    extendsValue = true;
    if (!extendsValue) throw 'incorrect value in "extendsValue"';
    extendsValue = false;
    if (extendsValue) throw 'incorrect value in "extendsValue"';

    if (falseValue != null) throw 'incorrect initialization of "falseValue"';
    falseValue = true;
    if (!falseValue) throw 'incorrect value in "falseValue"';
    falseValue = false;
    if (falseValue) throw 'incorrect value in "falseValue"';

    if (finallyValue != null)
      throw 'incorrect initialization of "finallyValue"';
    finallyValue = true;
    if (!finallyValue) throw 'incorrect value in "finallyValue"';
    finallyValue = false;
    if (finallyValue) throw 'incorrect value in "finallyValue"';

    if (forValue != null) throw 'incorrect initialization of "forValue"';
    forValue = true;
    if (!forValue) throw 'incorrect value in "forValue"';
    forValue = false;
    if (forValue) throw 'incorrect value in "forValue"';

    if (functionValue != null)
      throw 'incorrect initialization of "functionValue"';
    functionValue = true;
    if (!functionValue) throw 'incorrect value in "functionValue"';
    functionValue = false;
    if (functionValue) throw 'incorrect value in "functionValue"';

    if (ifValue != null) throw 'incorrect initialization of "ifValue"';
    ifValue = true;
    if (!ifValue) throw 'incorrect value in "ifValue"';
    ifValue = false;
    if (ifValue) throw 'incorrect value in "ifValue"';

    if (implementsValue != null)
      throw 'incorrect initialization of "implementsValue"';
    implementsValue = true;
    if (!implementsValue) throw 'incorrect value in "implementsValue"';
    implementsValue = false;
    if (implementsValue) throw 'incorrect value in "implementsValue"';

    if (importValue != null) throw 'incorrect initialization of "importValue"';
    importValue = true;
    if (!importValue) throw 'incorrect value in "importValue"';
    importValue = false;
    if (importValue) throw 'incorrect value in "importValue"';

    if (inValue != null) throw 'incorrect initialization of "inValue"';
    inValue = true;
    if (!inValue) throw 'incorrect value in "inValue"';
    inValue = false;
    if (inValue) throw 'incorrect value in "inValue"';

    if (instanceofValue != null)
      throw 'incorrect initialization of "instanceofValue"';
    instanceofValue = true;
    if (!instanceofValue) throw 'incorrect value in "instanceofValue"';
    instanceofValue = false;
    if (instanceofValue) throw 'incorrect value in "instanceofValue"';

    if (interfaceValue != null)
      throw 'incorrect initialization of "interfaceValue"';
    interfaceValue = true;
    if (!interfaceValue) throw 'incorrect value in "interfaceValue"';
    interfaceValue = false;
    if (interfaceValue) throw 'incorrect value in "interfaceValue"';

    if (letValue != null) throw 'incorrect initialization of "letValue"';
    letValue = true;
    if (!letValue) throw 'incorrect value in "letValue"';
    letValue = false;
    if (letValue) throw 'incorrect value in "letValue"';

    if (newValue != null) throw 'incorrect initialization of "newValue"';
    newValue = true;
    if (!newValue) throw 'incorrect value in "newValue"';
    newValue = false;
    if (newValue) throw 'incorrect value in "newValue"';

    if (nullValue != null) throw 'incorrect initialization of "nullValue"';
    nullValue = true;
    if (!nullValue) throw 'incorrect value in "nullValue"';
    nullValue = false;
    if (nullValue) throw 'incorrect value in "nullValue"';

    if (packageValue != null)
      throw 'incorrect initialization of "packageValue"';
    packageValue = true;
    if (!packageValue) throw 'incorrect value in "packageValue"';
    packageValue = false;
    if (packageValue) throw 'incorrect value in "packageValue"';

    if (privateValue != null)
      throw 'incorrect initialization of "privateValue"';
    privateValue = true;
    if (!privateValue) throw 'incorrect value in "privateValue"';
    privateValue = false;
    if (privateValue) throw 'incorrect value in "privateValue"';

    if (protectedValue != null)
      throw 'incorrect initialization of "protectedValue"';
    protectedValue = true;
    if (!protectedValue) throw 'incorrect value in "protectedValue"';
    protectedValue = false;
    if (protectedValue) throw 'incorrect value in "protectedValue"';

    if (publicValue != null) throw 'incorrect initialization of "publicValue"';
    publicValue = true;
    if (!publicValue) throw 'incorrect value in "publicValue"';
    publicValue = false;
    if (publicValue) throw 'incorrect value in "publicValue"';

    if (returnValue != null) throw 'incorrect initialization of "returnValue"';
    returnValue = true;
    if (!returnValue) throw 'incorrect value in "returnValue"';
    returnValue = false;
    if (returnValue) throw 'incorrect value in "returnValue"';

    if (staticValue != null) throw 'incorrect initialization of "staticValue"';
    staticValue = true;
    if (!staticValue) throw 'incorrect value in "staticValue"';
    staticValue = false;
    if (staticValue) throw 'incorrect value in "staticValue"';

    if (superValue != null) throw 'incorrect initialization of "superValue"';
    superValue = true;
    if (!superValue) throw 'incorrect value in "superValue"';
    superValue = false;
    if (superValue) throw 'incorrect value in "superValue"';

    if (switchValue != null) throw 'incorrect initialization of "switchValue"';
    switchValue = true;
    if (!switchValue) throw 'incorrect value in "switchValue"';
    switchValue = false;
    if (switchValue) throw 'incorrect value in "switchValue"';

    if (thisValue != null) throw 'incorrect initialization of "thisValue"';
    thisValue = true;
    if (!thisValue) throw 'incorrect value in "thisValue"';
    thisValue = false;
    if (thisValue) throw 'incorrect value in "thisValue"';

    if (throwValue != null) throw 'incorrect initialization of "throwValue"';
    throwValue = true;
    if (!throwValue) throw 'incorrect value in "throwValue"';
    throwValue = false;
    if (throwValue) throw 'incorrect value in "throwValue"';

    if (trueValue != null) throw 'incorrect initialization of "trueValue"';
    trueValue = true;
    if (!trueValue) throw 'incorrect value in "trueValue"';
    trueValue = false;
    if (trueValue) throw 'incorrect value in "trueValue"';

    if (tryValue != null) throw 'incorrect initialization of "tryValue"';
    tryValue = true;
    if (!tryValue) throw 'incorrect value in "tryValue"';
    tryValue = false;
    if (tryValue) throw 'incorrect value in "tryValue"';

    if (typeofValue != null) throw 'incorrect initialization of "typeofValue"';
    typeofValue = true;
    if (!typeofValue) throw 'incorrect value in "typeofValue"';
    typeofValue = false;
    if (typeofValue) throw 'incorrect value in "typeofValue"';

    if (varValue != null) throw 'incorrect initialization of "varValue"';
    varValue = true;
    if (!varValue) throw 'incorrect value in "varValue"';
    varValue = false;
    if (varValue) throw 'incorrect value in "varValue"';

    if (voidValue != null) throw 'incorrect initialization of "voidValue"';
    voidValue = true;
    if (!voidValue) throw 'incorrect value in "voidValue"';
    voidValue = false;
    if (voidValue) throw 'incorrect value in "voidValue"';

    if (whileValue != null) throw 'incorrect initialization of "whileValue"';
    whileValue = true;
    if (!whileValue) throw 'incorrect value in "whileValue"';
    whileValue = false;
    if (whileValue) throw 'incorrect value in "whileValue"';

    if (withValue != null) throw 'incorrect initialization of "withValue"';
    withValue = true;
    if (!withValue) throw 'incorrect value in "withValue"';
    withValue = false;
    if (withValue) throw 'incorrect value in "withValue"';

    if (yieldValue != null) throw 'incorrect initialization of "yieldValue"';
    yieldValue = true;
    if (!yieldValue) throw 'incorrect value in "yieldValue"';
    yieldValue = false;
    if (yieldValue) throw 'incorrect value in "yieldValue"';
  }
}

class ClassWithOddNames {
  bool breakValue;
  bool caseValue;
  bool catchValue;
  bool classValue;
  bool constValue;
  bool continueValue;
  bool debuggerValue;
  bool defaultValue;
  bool deleteValue;
  bool doValue;
  bool elseValue;
  bool enumValue;
  bool exportValue;
  bool extendsValue;
  bool falseValue;
  bool finallyValue;
  bool forValue;
  bool functionValue;
  bool ifValue;
  bool implementsValue;
  bool importValue;
  bool inValue;
  bool instanceofValue;
  bool interfaceValue;
  bool letValue;
  bool newValue;
  bool nullValue;
  bool packageValue;
  bool privateValue;
  bool protectedValue;
  bool publicValue;
  bool returnValue;
  bool staticValue;
  bool superValue;
  bool switchValue;
  bool thisValue;
  bool throwValue;
  bool trueValue;
  bool tryValue;
  bool typeofValue;
  bool varValue;
  bool voidValue;
  bool whileValue;
  bool withValue;
  bool yieldValue;

  void testMyFields() {
    if (breakValue != null) throw 'incorrect initialization of "breakValue"';
    breakValue = true;
    if (!breakValue) throw 'incorrect value in "breakValue"';
    breakValue = false;
    if (breakValue) throw 'incorrect value in "breakValue"';

    if (caseValue != null) throw 'incorrect initialization of "caseValue"';
    caseValue = true;
    if (!caseValue) throw 'incorrect value in "caseValue"';
    caseValue = false;
    if (caseValue) throw 'incorrect value in "caseValue"';

    if (catchValue != null) throw 'incorrect initialization of "catchValue"';
    catchValue = true;
    if (!catchValue) throw 'incorrect value in "catchValue"';
    catchValue = false;
    if (catchValue) throw 'incorrect value in "catchValue"';

    if (classValue != null) throw 'incorrect initialization of "classValue"';
    classValue = true;
    if (!classValue) throw 'incorrect value in "classValue"';
    classValue = false;
    if (classValue) throw 'incorrect value in "classValue"';

    if (constValue != null) throw 'incorrect initialization of "constValue"';
    constValue = true;
    if (!constValue) throw 'incorrect value in "constValue"';
    constValue = false;
    if (constValue) throw 'incorrect value in "constValue"';

    if (continueValue != null)
      throw 'incorrect initialization of "continueValue"';
    continueValue = true;
    if (!continueValue) throw 'incorrect value in "continueValue"';
    continueValue = false;
    if (continueValue) throw 'incorrect value in "continueValue"';

    if (debuggerValue != null)
      throw 'incorrect initialization of "debuggerValue"';
    debuggerValue = true;
    if (!debuggerValue) throw 'incorrect value in "debuggerValue"';
    debuggerValue = false;
    if (debuggerValue) throw 'incorrect value in "debuggerValue"';

    if (defaultValue != null)
      throw 'incorrect initialization of "defaultValue"';
    defaultValue = true;
    if (!defaultValue) throw 'incorrect value in "defaultValue"';
    defaultValue = false;
    if (defaultValue) throw 'incorrect value in "defaultValue"';

    if (deleteValue != null) throw 'incorrect initialization of "deleteValue"';
    deleteValue = true;
    if (!deleteValue) throw 'incorrect value in "deleteValue"';
    deleteValue = false;
    if (deleteValue) throw 'incorrect value in "deleteValue"';

    if (doValue != null) throw 'incorrect initialization of "doValue"';
    doValue = true;
    if (!doValue) throw 'incorrect value in "doValue"';
    doValue = false;
    if (doValue) throw 'incorrect value in "doValue"';

    if (elseValue != null) throw 'incorrect initialization of "elseValue"';
    elseValue = true;
    if (!elseValue) throw 'incorrect value in "elseValue"';
    elseValue = false;
    if (elseValue) throw 'incorrect value in "elseValue"';

    if (enumValue != null) throw 'incorrect initialization of "enumValue"';
    enumValue = true;
    if (!enumValue) throw 'incorrect value in "enumValue"';
    enumValue = false;
    if (enumValue) throw 'incorrect value in "enumValue"';

    if (exportValue != null) throw 'incorrect initialization of "exportValue"';
    exportValue = true;
    if (!exportValue) throw 'incorrect value in "exportValue"';
    exportValue = false;
    if (exportValue) throw 'incorrect value in "exportValue"';

    if (extendsValue != null)
      throw 'incorrect initialization of "extendsValue"';
    extendsValue = true;
    if (!extendsValue) throw 'incorrect value in "extendsValue"';
    extendsValue = false;
    if (extendsValue) throw 'incorrect value in "extendsValue"';

    if (falseValue != null) throw 'incorrect initialization of "falseValue"';
    falseValue = true;
    if (!falseValue) throw 'incorrect value in "falseValue"';
    falseValue = false;
    if (falseValue) throw 'incorrect value in "falseValue"';

    if (finallyValue != null)
      throw 'incorrect initialization of "finallyValue"';
    finallyValue = true;
    if (!finallyValue) throw 'incorrect value in "finallyValue"';
    finallyValue = false;
    if (finallyValue) throw 'incorrect value in "finallyValue"';

    if (forValue != null) throw 'incorrect initialization of "forValue"';
    forValue = true;
    if (!forValue) throw 'incorrect value in "forValue"';
    forValue = false;
    if (forValue) throw 'incorrect value in "forValue"';

    if (functionValue != null)
      throw 'incorrect initialization of "functionValue"';
    functionValue = true;
    if (!functionValue) throw 'incorrect value in "functionValue"';
    functionValue = false;
    if (functionValue) throw 'incorrect value in "functionValue"';

    if (ifValue != null) throw 'incorrect initialization of "ifValue"';
    ifValue = true;
    if (!ifValue) throw 'incorrect value in "ifValue"';
    ifValue = false;
    if (ifValue) throw 'incorrect value in "ifValue"';

    if (implementsValue != null)
      throw 'incorrect initialization of "implementsValue"';
    implementsValue = true;
    if (!implementsValue) throw 'incorrect value in "implementsValue"';
    implementsValue = false;
    if (implementsValue) throw 'incorrect value in "implementsValue"';

    if (importValue != null) throw 'incorrect initialization of "importValue"';
    importValue = true;
    if (!importValue) throw 'incorrect value in "importValue"';
    importValue = false;
    if (importValue) throw 'incorrect value in "importValue"';

    if (inValue != null) throw 'incorrect initialization of "inValue"';
    inValue = true;
    if (!inValue) throw 'incorrect value in "inValue"';
    inValue = false;
    if (inValue) throw 'incorrect value in "inValue"';

    if (instanceofValue != null)
      throw 'incorrect initialization of "instanceofValue"';
    instanceofValue = true;
    if (!instanceofValue) throw 'incorrect value in "instanceofValue"';
    instanceofValue = false;
    if (instanceofValue) throw 'incorrect value in "instanceofValue"';

    if (interfaceValue != null)
      throw 'incorrect initialization of "interfaceValue"';
    interfaceValue = true;
    if (!interfaceValue) throw 'incorrect value in "interfaceValue"';
    interfaceValue = false;
    if (interfaceValue) throw 'incorrect value in "interfaceValue"';

    if (letValue != null) throw 'incorrect initialization of "letValue"';
    letValue = true;
    if (!letValue) throw 'incorrect value in "letValue"';
    letValue = false;
    if (letValue) throw 'incorrect value in "letValue"';

    if (newValue != null) throw 'incorrect initialization of "newValue"';
    newValue = true;
    if (!newValue) throw 'incorrect value in "newValue"';
    newValue = false;
    if (newValue) throw 'incorrect value in "newValue"';

    if (nullValue != null) throw 'incorrect initialization of "nullValue"';
    nullValue = true;
    if (!nullValue) throw 'incorrect value in "nullValue"';
    nullValue = false;
    if (nullValue) throw 'incorrect value in "nullValue"';

    if (packageValue != null)
      throw 'incorrect initialization of "packageValue"';
    packageValue = true;
    if (!packageValue) throw 'incorrect value in "packageValue"';
    packageValue = false;
    if (packageValue) throw 'incorrect value in "packageValue"';

    if (privateValue != null)
      throw 'incorrect initialization of "privateValue"';
    privateValue = true;
    if (!privateValue) throw 'incorrect value in "privateValue"';
    privateValue = false;
    if (privateValue) throw 'incorrect value in "privateValue"';

    if (protectedValue != null)
      throw 'incorrect initialization of "protectedValue"';
    protectedValue = true;
    if (!protectedValue) throw 'incorrect value in "protectedValue"';
    protectedValue = false;
    if (protectedValue) throw 'incorrect value in "protectedValue"';

    if (publicValue != null) throw 'incorrect initialization of "publicValue"';
    publicValue = true;
    if (!publicValue) throw 'incorrect value in "publicValue"';
    publicValue = false;
    if (publicValue) throw 'incorrect value in "publicValue"';

    if (returnValue != null) throw 'incorrect initialization of "returnValue"';
    returnValue = true;
    if (!returnValue) throw 'incorrect value in "returnValue"';
    returnValue = false;
    if (returnValue) throw 'incorrect value in "returnValue"';

    if (staticValue != null) throw 'incorrect initialization of "staticValue"';
    staticValue = true;
    if (!staticValue) throw 'incorrect value in "staticValue"';
    staticValue = false;
    if (staticValue) throw 'incorrect value in "staticValue"';

    if (superValue != null) throw 'incorrect initialization of "superValue"';
    superValue = true;
    if (!superValue) throw 'incorrect value in "superValue"';
    superValue = false;
    if (superValue) throw 'incorrect value in "superValue"';

    if (switchValue != null) throw 'incorrect initialization of "switchValue"';
    switchValue = true;
    if (!switchValue) throw 'incorrect value in "switchValue"';
    switchValue = false;
    if (switchValue) throw 'incorrect value in "switchValue"';

    if (thisValue != null) throw 'incorrect initialization of "thisValue"';
    thisValue = true;
    if (!thisValue) throw 'incorrect value in "thisValue"';
    thisValue = false;
    if (thisValue) throw 'incorrect value in "thisValue"';

    if (throwValue != null) throw 'incorrect initialization of "throwValue"';
    throwValue = true;
    if (!throwValue) throw 'incorrect value in "throwValue"';
    throwValue = false;
    if (throwValue) throw 'incorrect value in "throwValue"';

    if (trueValue != null) throw 'incorrect initialization of "trueValue"';
    trueValue = true;
    if (!trueValue) throw 'incorrect value in "trueValue"';
    trueValue = false;
    if (trueValue) throw 'incorrect value in "trueValue"';

    if (tryValue != null) throw 'incorrect initialization of "tryValue"';
    tryValue = true;
    if (!tryValue) throw 'incorrect value in "tryValue"';
    tryValue = false;
    if (tryValue) throw 'incorrect value in "tryValue"';

    if (typeofValue != null) throw 'incorrect initialization of "typeofValue"';
    typeofValue = true;
    if (!typeofValue) throw 'incorrect value in "typeofValue"';
    typeofValue = false;
    if (typeofValue) throw 'incorrect value in "typeofValue"';

    if (varValue != null) throw 'incorrect initialization of "varValue"';
    varValue = true;
    if (!varValue) throw 'incorrect value in "varValue"';
    varValue = false;
    if (varValue) throw 'incorrect value in "varValue"';

    if (voidValue != null) throw 'incorrect initialization of "voidValue"';
    voidValue = true;
    if (!voidValue) throw 'incorrect value in "voidValue"';
    voidValue = false;
    if (voidValue) throw 'incorrect value in "voidValue"';

    if (whileValue != null) throw 'incorrect initialization of "whileValue"';
    whileValue = true;
    if (!whileValue) throw 'incorrect value in "whileValue"';
    whileValue = false;
    if (whileValue) throw 'incorrect value in "whileValue"';

    if (withValue != null) throw 'incorrect initialization of "withValue"';
    withValue = true;
    if (!withValue) throw 'incorrect value in "withValue"';
    withValue = false;
    if (withValue) throw 'incorrect value in "withValue"';

    if (yieldValue != null) throw 'incorrect initialization of "yieldValue"';
    yieldValue = true;
    if (!yieldValue) throw 'incorrect value in "yieldValue"';
    yieldValue = false;
    if (yieldValue) throw 'incorrect value in "yieldValue"';
  }
}

/// Called once with an instance of NativeClassWithOddNames making it easy
/// to inline accessors.
testObjectStronglyTyped(object) {
  if (object.breakValue == null)
    throw 'incorrect initialization of "breakValue"';
  object.breakValue = true;
  if (!object.breakValue) throw 'incorrect value in "breakValue"';
  object.breakValue = false;
  if (object.breakValue) throw 'incorrect value in "breakValue"';

  if (object.caseValue == null) throw 'incorrect initialization of "caseValue"';
  object.caseValue = true;
  if (!object.caseValue) throw 'incorrect value in "caseValue"';
  object.caseValue = false;
  if (object.caseValue) throw 'incorrect value in "caseValue"';

  if (object.catchValue == null)
    throw 'incorrect initialization of "catchValue"';
  object.catchValue = true;
  if (!object.catchValue) throw 'incorrect value in "catchValue"';
  object.catchValue = false;
  if (object.catchValue) throw 'incorrect value in "catchValue"';

  if (object.classValue == null)
    throw 'incorrect initialization of "classValue"';
  object.classValue = true;
  if (!object.classValue) throw 'incorrect value in "classValue"';
  object.classValue = false;
  if (object.classValue) throw 'incorrect value in "classValue"';

  if (object.constValue == null)
    throw 'incorrect initialization of "constValue"';
  object.constValue = true;
  if (!object.constValue) throw 'incorrect value in "constValue"';
  object.constValue = false;
  if (object.constValue) throw 'incorrect value in "constValue"';

  if (object.continueValue == null)
    throw 'incorrect initialization of "continueValue"';
  object.continueValue = true;
  if (!object.continueValue) throw 'incorrect value in "continueValue"';
  object.continueValue = false;
  if (object.continueValue) throw 'incorrect value in "continueValue"';

  if (object.debuggerValue == null)
    throw 'incorrect initialization of "debuggerValue"';
  object.debuggerValue = true;
  if (!object.debuggerValue) throw 'incorrect value in "debuggerValue"';
  object.debuggerValue = false;
  if (object.debuggerValue) throw 'incorrect value in "debuggerValue"';

  if (object.defaultValue == null)
    throw 'incorrect initialization of "defaultValue"';
  object.defaultValue = true;
  if (!object.defaultValue) throw 'incorrect value in "defaultValue"';
  object.defaultValue = false;
  if (object.defaultValue) throw 'incorrect value in "defaultValue"';

  if (object.deleteValue == null)
    throw 'incorrect initialization of "deleteValue"';
  object.deleteValue = true;
  if (!object.deleteValue) throw 'incorrect value in "deleteValue"';
  object.deleteValue = false;
  if (object.deleteValue) throw 'incorrect value in "deleteValue"';

  if (object.doValue == null) throw 'incorrect initialization of "doValue"';
  object.doValue = true;
  if (!object.doValue) throw 'incorrect value in "doValue"';
  object.doValue = false;
  if (object.doValue) throw 'incorrect value in "doValue"';

  if (object.elseValue == null) throw 'incorrect initialization of "elseValue"';
  object.elseValue = true;
  if (!object.elseValue) throw 'incorrect value in "elseValue"';
  object.elseValue = false;
  if (object.elseValue) throw 'incorrect value in "elseValue"';

  if (object.enumValue == null) throw 'incorrect initialization of "enumValue"';
  object.enumValue = true;
  if (!object.enumValue) throw 'incorrect value in "enumValue"';
  object.enumValue = false;
  if (object.enumValue) throw 'incorrect value in "enumValue"';

  if (object.exportValue == null)
    throw 'incorrect initialization of "exportValue"';
  object.exportValue = true;
  if (!object.exportValue) throw 'incorrect value in "exportValue"';
  object.exportValue = false;
  if (object.exportValue) throw 'incorrect value in "exportValue"';

  if (object.extendsValue == null)
    throw 'incorrect initialization of "extendsValue"';
  object.extendsValue = true;
  if (!object.extendsValue) throw 'incorrect value in "extendsValue"';
  object.extendsValue = false;
  if (object.extendsValue) throw 'incorrect value in "extendsValue"';

  if (object.falseValue == null)
    throw 'incorrect initialization of "falseValue"';
  object.falseValue = true;
  if (!object.falseValue) throw 'incorrect value in "falseValue"';
  object.falseValue = false;
  if (object.falseValue) throw 'incorrect value in "falseValue"';

  if (object.finallyValue == null)
    throw 'incorrect initialization of "finallyValue"';
  object.finallyValue = true;
  if (!object.finallyValue) throw 'incorrect value in "finallyValue"';
  object.finallyValue = false;
  if (object.finallyValue) throw 'incorrect value in "finallyValue"';

  if (object.forValue == null) throw 'incorrect initialization of "forValue"';
  object.forValue = true;
  if (!object.forValue) throw 'incorrect value in "forValue"';
  object.forValue = false;
  if (object.forValue) throw 'incorrect value in "forValue"';

  if (object.functionValue == null)
    throw 'incorrect initialization of "functionValue"';
  object.functionValue = true;
  if (!object.functionValue) throw 'incorrect value in "functionValue"';
  object.functionValue = false;
  if (object.functionValue) throw 'incorrect value in "functionValue"';

  if (object.ifValue == null) throw 'incorrect initialization of "ifValue"';
  object.ifValue = true;
  if (!object.ifValue) throw 'incorrect value in "ifValue"';
  object.ifValue = false;
  if (object.ifValue) throw 'incorrect value in "ifValue"';

  if (object.implementsValue == null)
    throw 'incorrect initialization of "implementsValue"';
  object.implementsValue = true;
  if (!object.implementsValue) throw 'incorrect value in "implementsValue"';
  object.implementsValue = false;
  if (object.implementsValue) throw 'incorrect value in "implementsValue"';

  if (object.importValue == null)
    throw 'incorrect initialization of "importValue"';
  object.importValue = true;
  if (!object.importValue) throw 'incorrect value in "importValue"';
  object.importValue = false;
  if (object.importValue) throw 'incorrect value in "importValue"';

  if (object.inValue == null) throw 'incorrect initialization of "inValue"';
  object.inValue = true;
  if (!object.inValue) throw 'incorrect value in "inValue"';
  object.inValue = false;
  if (object.inValue) throw 'incorrect value in "inValue"';

  if (object.instanceofValue == null)
    throw 'incorrect initialization of "instanceofValue"';
  object.instanceofValue = true;
  if (!object.instanceofValue) throw 'incorrect value in "instanceofValue"';
  object.instanceofValue = false;
  if (object.instanceofValue) throw 'incorrect value in "instanceofValue"';

  if (object.interfaceValue == null)
    throw 'incorrect initialization of "interfaceValue"';
  object.interfaceValue = true;
  if (!object.interfaceValue) throw 'incorrect value in "interfaceValue"';
  object.interfaceValue = false;
  if (object.interfaceValue) throw 'incorrect value in "interfaceValue"';

  if (object.letValue == null) throw 'incorrect initialization of "letValue"';
  object.letValue = true;
  if (!object.letValue) throw 'incorrect value in "letValue"';
  object.letValue = false;
  if (object.letValue) throw 'incorrect value in "letValue"';

  if (object.newValue == null) throw 'incorrect initialization of "newValue"';
  object.newValue = true;
  if (!object.newValue) throw 'incorrect value in "newValue"';
  object.newValue = false;
  if (object.newValue) throw 'incorrect value in "newValue"';

  if (object.nullValue == null) throw 'incorrect initialization of "nullValue"';
  object.nullValue = true;
  if (!object.nullValue) throw 'incorrect value in "nullValue"';
  object.nullValue = false;
  if (object.nullValue) throw 'incorrect value in "nullValue"';

  if (object.packageValue == null)
    throw 'incorrect initialization of "packageValue"';
  object.packageValue = true;
  if (!object.packageValue) throw 'incorrect value in "packageValue"';
  object.packageValue = false;
  if (object.packageValue) throw 'incorrect value in "packageValue"';

  if (object.privateValue == null)
    throw 'incorrect initialization of "privateValue"';
  object.privateValue = true;
  if (!object.privateValue) throw 'incorrect value in "privateValue"';
  object.privateValue = false;
  if (object.privateValue) throw 'incorrect value in "privateValue"';

  if (object.protectedValue == null)
    throw 'incorrect initialization of "protectedValue"';
  object.protectedValue = true;
  if (!object.protectedValue) throw 'incorrect value in "protectedValue"';
  object.protectedValue = false;
  if (object.protectedValue) throw 'incorrect value in "protectedValue"';

  if (object.publicValue == null)
    throw 'incorrect initialization of "publicValue"';
  object.publicValue = true;
  if (!object.publicValue) throw 'incorrect value in "publicValue"';
  object.publicValue = false;
  if (object.publicValue) throw 'incorrect value in "publicValue"';

  if (object.returnValue == null)
    throw 'incorrect initialization of "returnValue"';
  object.returnValue = true;
  if (!object.returnValue) throw 'incorrect value in "returnValue"';
  object.returnValue = false;
  if (object.returnValue) throw 'incorrect value in "returnValue"';

  if (object.staticValue == null)
    throw 'incorrect initialization of "staticValue"';
  object.staticValue = true;
  if (!object.staticValue) throw 'incorrect value in "staticValue"';
  object.staticValue = false;
  if (object.staticValue) throw 'incorrect value in "staticValue"';

  if (object.superValue == null)
    throw 'incorrect initialization of "superValue"';
  object.superValue = true;
  if (!object.superValue) throw 'incorrect value in "superValue"';
  object.superValue = false;
  if (object.superValue) throw 'incorrect value in "superValue"';

  if (object.switchValue == null)
    throw 'incorrect initialization of "switchValue"';
  object.switchValue = true;
  if (!object.switchValue) throw 'incorrect value in "switchValue"';
  object.switchValue = false;
  if (object.switchValue) throw 'incorrect value in "switchValue"';

  if (object.thisValue == null) throw 'incorrect initialization of "thisValue"';
  object.thisValue = true;
  if (!object.thisValue) throw 'incorrect value in "thisValue"';
  object.thisValue = false;
  if (object.thisValue) throw 'incorrect value in "thisValue"';

  if (object.throwValue == null)
    throw 'incorrect initialization of "throwValue"';
  object.throwValue = true;
  if (!object.throwValue) throw 'incorrect value in "throwValue"';
  object.throwValue = false;
  if (object.throwValue) throw 'incorrect value in "throwValue"';

  if (object.trueValue == null) throw 'incorrect initialization of "trueValue"';
  object.trueValue = true;
  if (!object.trueValue) throw 'incorrect value in "trueValue"';
  object.trueValue = false;
  if (object.trueValue) throw 'incorrect value in "trueValue"';

  if (object.tryValue == null) throw 'incorrect initialization of "tryValue"';
  object.tryValue = true;
  if (!object.tryValue) throw 'incorrect value in "tryValue"';
  object.tryValue = false;
  if (object.tryValue) throw 'incorrect value in "tryValue"';

  if (object.typeofValue == null)
    throw 'incorrect initialization of "typeofValue"';
  object.typeofValue = true;
  if (!object.typeofValue) throw 'incorrect value in "typeofValue"';
  object.typeofValue = false;
  if (object.typeofValue) throw 'incorrect value in "typeofValue"';

  if (object.varValue == null) throw 'incorrect initialization of "varValue"';
  object.varValue = true;
  if (!object.varValue) throw 'incorrect value in "varValue"';
  object.varValue = false;
  if (object.varValue) throw 'incorrect value in "varValue"';

  if (object.voidValue == null) throw 'incorrect initialization of "voidValue"';
  object.voidValue = true;
  if (!object.voidValue) throw 'incorrect value in "voidValue"';
  object.voidValue = false;
  if (object.voidValue) throw 'incorrect value in "voidValue"';

  if (object.whileValue == null)
    throw 'incorrect initialization of "whileValue"';
  object.whileValue = true;
  if (!object.whileValue) throw 'incorrect value in "whileValue"';
  object.whileValue = false;
  if (object.whileValue) throw 'incorrect value in "whileValue"';

  if (object.withValue == null) throw 'incorrect initialization of "withValue"';
  object.withValue = true;
  if (!object.withValue) throw 'incorrect value in "withValue"';
  object.withValue = false;
  if (object.withValue) throw 'incorrect value in "withValue"';

  if (object.yieldValue == null)
    throw 'incorrect initialization of "yieldValue"';
  object.yieldValue = true;
  if (!object.yieldValue) throw 'incorrect value in "yieldValue"';
  object.yieldValue = false;
  if (object.yieldValue) throw 'incorrect value in "yieldValue"';
}

/// Called multiple times with arguments that are hard to track in type
/// inference making it hard to inline accessors.
testObjectWeaklyTyped(object) {
  object = object[0];
  if (object == 'fisk') return;
  if (object.breakValue == null)
    throw 'incorrect initialization of "breakValue"';
  object.breakValue = true;
  if (!object.breakValue) throw 'incorrect value in "breakValue"';
  object.breakValue = false;
  if (object.breakValue) throw 'incorrect value in "breakValue"';

  if (object.caseValue == null) throw 'incorrect initialization of "caseValue"';
  object.caseValue = true;
  if (!object.caseValue) throw 'incorrect value in "caseValue"';
  object.caseValue = false;
  if (object.caseValue) throw 'incorrect value in "caseValue"';

  if (object.catchValue == null)
    throw 'incorrect initialization of "catchValue"';
  object.catchValue = true;
  if (!object.catchValue) throw 'incorrect value in "catchValue"';
  object.catchValue = false;
  if (object.catchValue) throw 'incorrect value in "catchValue"';

  if (object.classValue == null)
    throw 'incorrect initialization of "classValue"';
  object.classValue = true;
  if (!object.classValue) throw 'incorrect value in "classValue"';
  object.classValue = false;
  if (object.classValue) throw 'incorrect value in "classValue"';

  if (object.constValue == null)
    throw 'incorrect initialization of "constValue"';
  object.constValue = true;
  if (!object.constValue) throw 'incorrect value in "constValue"';
  object.constValue = false;
  if (object.constValue) throw 'incorrect value in "constValue"';

  if (object.continueValue == null)
    throw 'incorrect initialization of "continueValue"';
  object.continueValue = true;
  if (!object.continueValue) throw 'incorrect value in "continueValue"';
  object.continueValue = false;
  if (object.continueValue) throw 'incorrect value in "continueValue"';

  if (object.debuggerValue == null)
    throw 'incorrect initialization of "debuggerValue"';
  object.debuggerValue = true;
  if (!object.debuggerValue) throw 'incorrect value in "debuggerValue"';
  object.debuggerValue = false;
  if (object.debuggerValue) throw 'incorrect value in "debuggerValue"';

  if (object.defaultValue == null)
    throw 'incorrect initialization of "defaultValue"';
  object.defaultValue = true;
  if (!object.defaultValue) throw 'incorrect value in "defaultValue"';
  object.defaultValue = false;
  if (object.defaultValue) throw 'incorrect value in "defaultValue"';

  if (object.deleteValue == null)
    throw 'incorrect initialization of "deleteValue"';
  object.deleteValue = true;
  if (!object.deleteValue) throw 'incorrect value in "deleteValue"';
  object.deleteValue = false;
  if (object.deleteValue) throw 'incorrect value in "deleteValue"';

  if (object.doValue == null) throw 'incorrect initialization of "doValue"';
  object.doValue = true;
  if (!object.doValue) throw 'incorrect value in "doValue"';
  object.doValue = false;
  if (object.doValue) throw 'incorrect value in "doValue"';

  if (object.elseValue == null) throw 'incorrect initialization of "elseValue"';
  object.elseValue = true;
  if (!object.elseValue) throw 'incorrect value in "elseValue"';
  object.elseValue = false;
  if (object.elseValue) throw 'incorrect value in "elseValue"';

  if (object.enumValue == null) throw 'incorrect initialization of "enumValue"';
  object.enumValue = true;
  if (!object.enumValue) throw 'incorrect value in "enumValue"';
  object.enumValue = false;
  if (object.enumValue) throw 'incorrect value in "enumValue"';

  if (object.exportValue == null)
    throw 'incorrect initialization of "exportValue"';
  object.exportValue = true;
  if (!object.exportValue) throw 'incorrect value in "exportValue"';
  object.exportValue = false;
  if (object.exportValue) throw 'incorrect value in "exportValue"';

  if (object.extendsValue == null)
    throw 'incorrect initialization of "extendsValue"';
  object.extendsValue = true;
  if (!object.extendsValue) throw 'incorrect value in "extendsValue"';
  object.extendsValue = false;
  if (object.extendsValue) throw 'incorrect value in "extendsValue"';

  if (object.falseValue == null)
    throw 'incorrect initialization of "falseValue"';
  object.falseValue = true;
  if (!object.falseValue) throw 'incorrect value in "falseValue"';
  object.falseValue = false;
  if (object.falseValue) throw 'incorrect value in "falseValue"';

  if (object.finallyValue == null)
    throw 'incorrect initialization of "finallyValue"';
  object.finallyValue = true;
  if (!object.finallyValue) throw 'incorrect value in "finallyValue"';
  object.finallyValue = false;
  if (object.finallyValue) throw 'incorrect value in "finallyValue"';

  if (object.forValue == null) throw 'incorrect initialization of "forValue"';
  object.forValue = true;
  if (!object.forValue) throw 'incorrect value in "forValue"';
  object.forValue = false;
  if (object.forValue) throw 'incorrect value in "forValue"';

  if (object.functionValue == null)
    throw 'incorrect initialization of "functionValue"';
  object.functionValue = true;
  if (!object.functionValue) throw 'incorrect value in "functionValue"';
  object.functionValue = false;
  if (object.functionValue) throw 'incorrect value in "functionValue"';

  if (object.ifValue == null) throw 'incorrect initialization of "ifValue"';
  object.ifValue = true;
  if (!object.ifValue) throw 'incorrect value in "ifValue"';
  object.ifValue = false;
  if (object.ifValue) throw 'incorrect value in "ifValue"';

  if (object.implementsValue == null)
    throw 'incorrect initialization of "implementsValue"';
  object.implementsValue = true;
  if (!object.implementsValue) throw 'incorrect value in "implementsValue"';
  object.implementsValue = false;
  if (object.implementsValue) throw 'incorrect value in "implementsValue"';

  if (object.importValue == null)
    throw 'incorrect initialization of "importValue"';
  object.importValue = true;
  if (!object.importValue) throw 'incorrect value in "importValue"';
  object.importValue = false;
  if (object.importValue) throw 'incorrect value in "importValue"';

  if (object.inValue == null) throw 'incorrect initialization of "inValue"';
  object.inValue = true;
  if (!object.inValue) throw 'incorrect value in "inValue"';
  object.inValue = false;
  if (object.inValue) throw 'incorrect value in "inValue"';

  if (object.instanceofValue == null)
    throw 'incorrect initialization of "instanceofValue"';
  object.instanceofValue = true;
  if (!object.instanceofValue) throw 'incorrect value in "instanceofValue"';
  object.instanceofValue = false;
  if (object.instanceofValue) throw 'incorrect value in "instanceofValue"';

  if (object.interfaceValue == null)
    throw 'incorrect initialization of "interfaceValue"';
  object.interfaceValue = true;
  if (!object.interfaceValue) throw 'incorrect value in "interfaceValue"';
  object.interfaceValue = false;
  if (object.interfaceValue) throw 'incorrect value in "interfaceValue"';

  if (object.letValue == null) throw 'incorrect initialization of "letValue"';
  object.letValue = true;
  if (!object.letValue) throw 'incorrect value in "letValue"';
  object.letValue = false;
  if (object.letValue) throw 'incorrect value in "letValue"';

  if (object.newValue == null) throw 'incorrect initialization of "newValue"';
  object.newValue = true;
  if (!object.newValue) throw 'incorrect value in "newValue"';
  object.newValue = false;
  if (object.newValue) throw 'incorrect value in "newValue"';

  if (object.nullValue == null) throw 'incorrect initialization of "nullValue"';
  object.nullValue = true;
  if (!object.nullValue) throw 'incorrect value in "nullValue"';
  object.nullValue = false;
  if (object.nullValue) throw 'incorrect value in "nullValue"';

  if (object.packageValue == null)
    throw 'incorrect initialization of "packageValue"';
  object.packageValue = true;
  if (!object.packageValue) throw 'incorrect value in "packageValue"';
  object.packageValue = false;
  if (object.packageValue) throw 'incorrect value in "packageValue"';

  if (object.privateValue == null)
    throw 'incorrect initialization of "privateValue"';
  object.privateValue = true;
  if (!object.privateValue) throw 'incorrect value in "privateValue"';
  object.privateValue = false;
  if (object.privateValue) throw 'incorrect value in "privateValue"';

  if (object.protectedValue == null)
    throw 'incorrect initialization of "protectedValue"';
  object.protectedValue = true;
  if (!object.protectedValue) throw 'incorrect value in "protectedValue"';
  object.protectedValue = false;
  if (object.protectedValue) throw 'incorrect value in "protectedValue"';

  if (object.publicValue == null)
    throw 'incorrect initialization of "publicValue"';
  object.publicValue = true;
  if (!object.publicValue) throw 'incorrect value in "publicValue"';
  object.publicValue = false;
  if (object.publicValue) throw 'incorrect value in "publicValue"';

  if (object.returnValue == null)
    throw 'incorrect initialization of "returnValue"';
  object.returnValue = true;
  if (!object.returnValue) throw 'incorrect value in "returnValue"';
  object.returnValue = false;
  if (object.returnValue) throw 'incorrect value in "returnValue"';

  if (object.staticValue == null)
    throw 'incorrect initialization of "staticValue"';
  object.staticValue = true;
  if (!object.staticValue) throw 'incorrect value in "staticValue"';
  object.staticValue = false;
  if (object.staticValue) throw 'incorrect value in "staticValue"';

  if (object.superValue == null)
    throw 'incorrect initialization of "superValue"';
  object.superValue = true;
  if (!object.superValue) throw 'incorrect value in "superValue"';
  object.superValue = false;
  if (object.superValue) throw 'incorrect value in "superValue"';

  if (object.switchValue == null)
    throw 'incorrect initialization of "switchValue"';
  object.switchValue = true;
  if (!object.switchValue) throw 'incorrect value in "switchValue"';
  object.switchValue = false;
  if (object.switchValue) throw 'incorrect value in "switchValue"';

  if (object.thisValue == null) throw 'incorrect initialization of "thisValue"';
  object.thisValue = true;
  if (!object.thisValue) throw 'incorrect value in "thisValue"';
  object.thisValue = false;
  if (object.thisValue) throw 'incorrect value in "thisValue"';

  if (object.throwValue == null)
    throw 'incorrect initialization of "throwValue"';
  object.throwValue = true;
  if (!object.throwValue) throw 'incorrect value in "throwValue"';
  object.throwValue = false;
  if (object.throwValue) throw 'incorrect value in "throwValue"';

  if (object.trueValue == null) throw 'incorrect initialization of "trueValue"';
  object.trueValue = true;
  if (!object.trueValue) throw 'incorrect value in "trueValue"';
  object.trueValue = false;
  if (object.trueValue) throw 'incorrect value in "trueValue"';

  if (object.tryValue == null) throw 'incorrect initialization of "tryValue"';
  object.tryValue = true;
  if (!object.tryValue) throw 'incorrect value in "tryValue"';
  object.tryValue = false;
  if (object.tryValue) throw 'incorrect value in "tryValue"';

  if (object.typeofValue == null)
    throw 'incorrect initialization of "typeofValue"';
  object.typeofValue = true;
  if (!object.typeofValue) throw 'incorrect value in "typeofValue"';
  object.typeofValue = false;
  if (object.typeofValue) throw 'incorrect value in "typeofValue"';

  if (object.varValue == null) throw 'incorrect initialization of "varValue"';
  object.varValue = true;
  if (!object.varValue) throw 'incorrect value in "varValue"';
  object.varValue = false;
  if (object.varValue) throw 'incorrect value in "varValue"';

  if (object.voidValue == null) throw 'incorrect initialization of "voidValue"';
  object.voidValue = true;
  if (!object.voidValue) throw 'incorrect value in "voidValue"';
  object.voidValue = false;
  if (object.voidValue) throw 'incorrect value in "voidValue"';

  if (object.whileValue == null)
    throw 'incorrect initialization of "whileValue"';
  object.whileValue = true;
  if (!object.whileValue) throw 'incorrect value in "whileValue"';
  object.whileValue = false;
  if (object.whileValue) throw 'incorrect value in "whileValue"';

  if (object.withValue == null) throw 'incorrect initialization of "withValue"';
  object.withValue = true;
  if (!object.withValue) throw 'incorrect value in "withValue"';
  object.withValue = false;
  if (object.withValue) throw 'incorrect value in "withValue"';

  if (object.yieldValue == null)
    throw 'incorrect initialization of "yieldValue"';
  object.yieldValue = true;
  if (!object.yieldValue) throw 'incorrect value in "yieldValue"';
  object.yieldValue = false;
  if (object.yieldValue) throw 'incorrect value in "yieldValue"';
}

NativeClassWithOddNames makeNativeClassWithOddNames() native;

setup() {
  JS('', r"""
(function(){
  function NativeClassWithOddNames() {}
  self.makeNativeClassWithOddNames = function() {return new NativeClassWithOddNames()};
  self.nativeConstructor(NativeClassWithOddNames);
})()""");
  applyTestExtensions(['NativeClassWithOddNames']);
}

main() {
  nativeTesting();
  setup();
  var object = makeNativeClassWithOddNames();
  object.testMyFields();
  testObjectStronglyTyped(object);
  testObjectWeaklyTyped([object]);
  testObjectWeaklyTyped(['fisk']);
  testObjectWeaklyTyped([new ClassWithOddNames()..testMyFields()]);
}
