text: function assert(b) {
      if (!b)
          throw new Error("Bad assertion");
  }
  
  // Setting the getter only.  
  (function () {
      let target = {};
      let called = false;
      let handler = {
          defineProperty: function(theTarget, propName, descriptor) {
              called = true;
              return Reflect.defineProperty(theTarget, propName, descriptor);
          }
      };
  
      let proxy = new Proxy(target, handler);
      for (let i = 0; i < 500; i++) {
          let result = Reflect.defineProperty(proxy, "x", {
              enumerable: true,
              configurable: true,
              get: function(){},
          });
          assert(result);
          assert(called);
          called = false;
  
          for (let obj of [target, proxy]) {
              let pDesc = Object.getOwnPropertyDescriptor(obj, "x");
              assert(typeof pDesc.get === "function");
              assert(typeof pDesc.set === "undefined");
              assert(pDesc.get.toString() === (function(){}).toString());
              assert(pDesc.configurable === true);
              assert(pDesc.enumerable === true);
          }
      }
  })();
  
  // Setting the setter only.  
  (function () {
      let target = {};
      let called = false;
      let handler = {
          defineProperty: function(theTarget, propName, descriptor) {
              called = true;
              return Reflect.defineProperty(theTarget, propName, descriptor);
          }
      };
  
      let proxy = new Proxy(target, handler);
      for (let i = 0; i < 500; i++) {
          let result = Reflect.defineProperty(proxy, "x", {
              enumerable: true,
              configurable: true,
              set: function(x){},
          });
          assert(result);
          assert(called);
          called = false;
  
          for (let obj of [target, proxy]) {
              let pDesc = Object.getOwnPropertyDescriptor(obj, "x");
              assert(typeof pDesc.get === "undefined");
              assert(typeof pDesc.set === "function");
              assert(pDesc.set.toString() === (function(x){}).toString());
              assert(pDesc.configurable === true);
              assert(pDesc.enumerable === true);
          }
      }
  })();
  