It is a Jest-ism that shouldn't be in our open source package.
People using Jest can implement a similar pattern directly.
fakeNativeEvent.target = domNode;
    fakeNativeEvent.type = eventType.toLowerCase();
    
    
    const targetInst = ReactDOMComponentTree.getInstanceFromNode(domNode);
    const event = new SyntheticEvent(
      dispatchConfig,
      targetInst,
      fakeNativeEvent,
      domNode,
    );
    
    
    event.persist();
    Object.assign(event, eventData);
    if (dispatchConfig.phasedRegistrationNames) {
      EventPropagators.accumulateTwoPhaseDispatches(event);
    } else {
      EventPropagators.accumulateDirectDispatches(event);
    }
    ReactDOM.unstable_batchedUpdates(function() {
      
      
      ReactControlledComponent.enqueueStateRestore(domNode);
      EventPluginHub.runEventsInBatch(event, true);
    });
    ReactControlledComponent.restoreStateIfNeeded();
  };
}
function buildSimulators() {