boolean suspended = exchange.getInMessage().getInterceptorChain().getState() == State.SUSPENDED;
if (exchange.isOneWay() || suspended) {
ProviderFactory.getInstance(exchange.getInMessage()).clearThreadLocalProxies();
}
if (!suspended && !isServiceObjectRequestScope(exchange.getInMessage())) {
provider.releaseInstance(exchange.getInMessage(), rootInstance);
} else {
exchange.put(REQUEST_WAS_SUSPENDED, suspended);
persistRoots(exchange, rootInstance, provider);
}
}