code: function(inEvent) {
        var eventCopy = Object.create(null);
        var p;
        for (var i = 0; i < CLONE_PROPS.length; i++) {
          p = CLONE_PROPS[i];
          eventCopy[p] = inEvent[p] || CLONE_DEFAULTS[i];
  
          // Work around SVGInstanceElement shadow tree
          // Return the <use> element that is represented by the instance for Safari, Chrome, IE.
          // This is the behavior implemented by Firefox.
          if (HAS_SVG_INSTANCE && (p === 'target' || p === 'relatedTarget')) {
            if (eventCopy[p] instanceof SVGElementInstance) {
              eventCopy[p] = eventCopy[p].correspondingUseElement;
            }
          }
        }
  
        // keep the semantics of preventDefault
        if (inEvent.preventDefault) {
          eventCopy.preventDefault = function() {
            inEvent.preventDefault();
          };
        }
        return eventCopy;
      }
docs: Returns a snapshot of inEvent, with writable properties.
  
  @param {Event} inEvent An event that contains properties to copy.
  @return {Object} An object containing shallow copies of `inEvent`'s
  properties.