// 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.

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() {}
  makeNativeClassWithOddNames = function() {return new NativeClassWithOddNames()};
  self.nativeConstructor(NativeClassWithOddNames);
})()""");
}

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