What about if you simply populated PUMDs with PMD on get instead of set?
+ for( Iterator<PersistenceUnitMetaData> iter = persistenceUnits.iterator(); iter.hasNext(); )
+ {
+ PersistenceUnitMetaData pumd = iter.next();
+ pumd.setPersistenceMetaData(this);
+ }
This code can be reduced a lot -- JDK5 for loop. ;-)