code: function P(iid, base, offset, val, flags) {
          var bFlags = decodeBitPattern(flags, 2); // [isComputed, isOpAssign]
  
          var aret, skip = false;
  
          if (sandbox.analysis && sandbox.analysis.putFieldPre) {
              aret = sandbox.analysis.putFieldPre(iid, base, offset, val, bFlags[0], !!bFlags[1]);
              if (aret) {
                  base = aret.base;
                  offset = aret.offset;
                  val = aret.val;
                  skip = aret.skip;
              }
          }
  
          if (!skip) {
              base[offset] = val;
          }
          if (sandbox.analysis && sandbox.analysis.putField) {
              aret = sandbox.analysis.putField(iid, base, offset, val, bFlags[0], !!bFlags[1]);
              if (aret) {
                  val = aret.result;
              }
          }
          return (lastComputedValue = val);
      }
docs: putField (property write)