text: function assert(b) {
      if (!b)
          throw new Error("Bad assertion!");
  }
  
  {
      let p = {};
      let target = {__proto__: p};
      let called = false;
      let handler = {
          get(target, key, receiver) {
              called = true;
              assert(key === "__proto__");
              return target[key];
          },
  
          getPrototypeOf() {
              assert(false);
          }
      };
      
      let proxy = new Proxy(target, handler);
      for (let i = 0; i < 500; i++) {
          assert(proxy.__proto__ === p);
          assert(called);
          called = false;
      }
  }
  
  {
      let p = {};
      let target = {__proto__: p};
      let called1 = false;
      let called2 = false;
      let handler = {
          get(target, key, receiver) {
              called1 = true;
              assert(key === "__proto__");
              return Reflect.get(target, key, receiver);
          },
  
          getPrototypeOf(...args) {
              called2 = true;
              return Reflect.getPrototypeOf(...args);
          }
      };
      
      let proxy = new Proxy(target, handler);
      for (let i = 0; i < 500; i++) {
          assert(proxy.__proto__ === p);
          assert(called1);
          assert(called2);
          called1 = false;
          called2 = false;
      }
  }
  
  {
      let p = {};
      let target = {__proto__: null};
      let called = false;
      let handler = {
          set(target, key, value, receiver) {
              called = true;
              assert(key === "__proto__");
              return target[key] = value;
          },
  
          setPrototypeOf() {
              assert(false);
          }
      };
      
      let proxy = new Proxy(target, handler);
      for (let i = 0; i < 500; i++) {
          proxy.__proto__ = p;
          assert(proxy.__proto__ === p);
          assert(target.__proto__ === p);
          target.__proto__ = null;
          assert(called);
          called = false;
      }
  }
  
  {
      let p = {};
      let target = {__proto__: null};
      let called = false;
      let handler = {
          set(target, key, value, receiver) {
              called = true;
              assert(key === "__proto__");
              return Reflect.set(target, key, value, receiver);
          },
  
          setPrototypeOf() {
              assert(false);
          }
      };
      
      let proxy = new Proxy(target, handler);
      for (let i = 0; i < 500; i++) {
          proxy.__proto__ = p;
          assert(proxy.__proto__ === p);
          assert(target.__proto__ === p);
          target.__proto__ = null;
          assert(called);
          called = false;
      }
  }
  