}
// notify the integration classes that stuff is about to change
ClassChangeNotifier.instance().beforeChange(Collections.unmodifiableList(changedClasses), Collections.unmodifiableList(addedClass), attachments);
CurrentChangedClasses.prepareClasses(changedClasses);
// re-write the classes so their field
ReplacementResult result = ClassRedefiner.rewriteLoadedClasses(classes);
for (AddedClass c : addedData) {
ClassLookupManager.addClassInfo(c.getClassName(), c.getLoader(), c.getData());
}
inst.redefineClasses(result.getClasses());
if (!result.getClassesToRetransform().isEmpty()) {
inst.retransformClasses(result.getClassesToRetransform().toArray(new Class[result.getClassesToRetransform().size()]));
}
Introspector.flushCaches();
ClassChangeNotifier.instance().afterChange(Collections.unmodifiableList(CurrentChangedClasses.getChanged()), Collections.unmodifiableList(addedClass), attachments);
} catch (Throwable e) {