PE takes the tactic of putting both fips and non-fips outside the uberjar and just selecting which ones to point to. The way OSP was set up was to embed non-FIPS BC code into the uberjar, because FIPS was never intended to be incorporated into OSP. We could still go the "keep it all out of the uberjar" route for non-FIPS, but it isn't necessarily better.