text: load("fcfbc86708bc3a4062c2091a062e13b6.js");
  load("bcb77b03ed13784489484535627fca54.js");
  load("cf9772e2024f54f8b1f8a31901aa72c6.js");
  function testBuiltinInstanceIsInstanceOf(instance, builtin, class_) {
      assertEq(instance instanceof class_, true);
      assertEq(instance instanceof builtin, true);
  
      if (builtin === Array)
          assertEq(Array.isArray(instance), true);
  }
  
  function testBuiltinInstance(builtin, ...args) {
      class sub extends builtin {
          constructor(...args) {
              super(...args);
              this.called = true;
          }
      }
  
      let instance = new sub(...args);
      assertEq(instance.called, true);
      testBuiltinInstanceIsInstanceOf(instance, builtin, sub);
  }
  
  function testBuiltinMultipleSubclasses(builtin, ...args) {
      function f(obj, prop) {
          assertEq(obj.prop, prop);
      }
  
      class sub1 extends builtin { };
      class sub2 extends builtin { };
  
      const prop1 = "A";
      const prop2 = "B";
  
      sub1.prototype.prop = prop1;
      sub2.prototype.prop = prop2;
  
      let instance1 = new sub1(...args);
      let instance2 = new sub2(...args);
  
      // Also make sure we get the properties we want with a default constructor
      testBuiltinInstanceIsInstanceOf(instance1, builtin, sub1);
  
      for (let i = 0; i < 10; i++) {
          f(instance1, prop1);
          f(instance2, prop2);
      }
  }
  
  function testBuiltin(builtin, ...args) {
      testBuiltinInstance(builtin, ...args);
      testBuiltinMultipleSubclasses(builtin, ...args);
  }
  
  function testBuiltinTypedArrays() {
      let typedArrays = [Int8Array,
                         Uint8Array,
                         Uint8ClampedArray,
                         Int16Array,
                         Uint16Array,
                         Int32Array,
                         Uint32Array,
                         Float32Array,
                         Float64Array];
  
      for (let array of typedArrays) {
          testBuiltin(array);
          testBuiltin(array, 5);
          testBuiltin(array, new array());
          testBuiltin(array, new ArrayBuffer());
      }
  }
  
  testBuiltin(Function);
  testBuiltin(Object);
  testBuiltin(Boolean);
  testBuiltin(Error);
  testBuiltin(EvalError);
  testBuiltin(RangeError);
  testBuiltin(ReferenceError);
  testBuiltin(SyntaxError);
  testBuiltin(TypeError);
  testBuiltin(URIError);
  testBuiltin(Number);
  testBuiltin(Date);
  testBuiltin(Date, 5);
  testBuiltin(Date, 5, 10);
  testBuiltin(RegExp);
  testBuiltin(RegExp, /Regexp Argument/);
  testBuiltin(RegExp, "String Argument");
  testBuiltin(Map);
  testBuiltin(Set);
  testBuiltin(WeakMap);
  testBuiltin(WeakSet);
  testBuiltin(ArrayBuffer);
  testBuiltinTypedArrays();
  testBuiltin(DataView, new ArrayBuffer());
  testBuiltin(DataView, new (newGlobal().ArrayBuffer)());
  testBuiltin(String);
  testBuiltin(Array);
  testBuiltin(Array, 15);
  testBuiltin(Array, 3.0);
  testBuiltin(Array, "non-length one-arg");
  testBuiltin(Array, 5, 10, 15, "these are elements");
  // More Promise subclassing tests can be found in ecma_6/Promise/promise-subclassing.js
  if (typeof Promise !== "undefined")
      testBuiltin(Promise, _=>{});
  
  if (this.SharedArrayBuffer)
      testBuiltin(SharedArrayBuffer);
  
  if (typeof reportCompare === 'function')
      reportCompare(0,0,"OK");
  