private synchronized void disconnectResources(AbstractResourceAttribute attrib) {
    Set<AbstractResource> resources = attrib.getResources();

    // get ids to avoid ConcurrentModificationException
    List<String> ids = new ArrayList<String>();
    for (AbstractResource resource : resources) ids.add(resource.getID());

    for (String id : ids) {
      Participant p = getParticipant(id);
      if (attrib instanceof Role) p.removeRole((Role) attrib);
      else if (attrib instanceof Capability) p.removeCapability((Capability) attrib);
      else if (attrib instanceof Position) p.removePosition((Position) attrib);
      updateParticipant(p);
    }
  }