@Override
public void reloadWith(AbstractBluePrintsBackedFinderService<?, DataType, ?> service) {
super.reloadWith(service);
InformerFactory informerFactory = service.getInformerFactory();
if (informerFactory instanceof ProxyBackedInformerFactory) {
ProxyBackedInformerFactory initialProxy = (ProxyBackedInformerFactory) informerFactory;
ReflectionBackedInformerFactory initialReflective = initialProxy.getReflectiveInformerFactory();
FieldInformerLocator initialLocator = initialReflective.getFieldLocator();
// nothing has been loaded yet
if(initialLocator instanceof CumulativeFieldInformerLocator) {
ReflectionBackedInformerFactory usedReflective = new ReflectionBackedInformerFactory(
new DelegatingInformerLocator(initialLocator, createLocator(initialLocator)),
initialReflective.getPropertyProvider()
);
ProxyBackedInformerFactory usedProxy = new ProxyBackedInformerFactory(usedReflective);
service.setInformerFactory(usedProxy);
} else if(initialLocator instanceof DelegatingInformerLocator) {
DelegatingInformerLocator delegating = (DelegatingInformerLocator) initialLocator;
delegating.setSecond(createLocator(delegating.getFirst()));
}