synchronized (collection) {
Set<Key> keySet = collection.keySet();
keys = keySet.toArray(new Key[keySet.size()]);
}
for (Key key : keys) {
ProvisionRequest request;
ServiceResource resource = null;
synchronized (collection) {
request = collection.get(key);
if (request != null && request.getServiceElement() != null) {
request.getFailureReasons().clear();
resource = Selector.acquireServiceResource(request, context.getSelector());
if (resource != null) {
synchronized (collection) {
collection.remove(key);
}