I believe datanucleus needs to have a way for it to load extensions in a reproducible manner.
The ordering of the extensions list was not-deterministic. So sometimes our extensions would override properly, other times they would be ignored (since the core definition our override ours).
We had to create our own OrderedNonManagedPluginRegistry, that would process the ExtensionPoint.getExtensions, to properly reorder them into a deterministic order.
We order all extensions that come from "datanucleus" jars to the top of the list. Then alphabetically after that. I believe datanucleus needs to have a way for it to load extensions in a deterministic manner.