I have a crash in the following code:
private LocalBundle(Bundle b, Map<Bundle, LocalBundle> clonnedObjs) {
    this();
    synchronized (b.getVariables()) { // b.getVariables() is Set
        addFrom(b, clonnedObjs);
    }
}
but in addFrom I get the crash:
private synchronized void addFrom(Bundle b, Map<Bundle, LocalBundle> clonnedObjs) {
    Set<TaintedVariable> variablesOfBundle = b.getVariables();
    for(TaintedVariable v : variablesOfBundle) {
Exception message:
Exception in thread "pool-4-thread-1" java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextNode(Unknown Source)
    at java.util.HashMap$KeyIterator.next(Unknown Source)
    at x.y.z.LocalBundle.addFrom(VisitedNodesWithBundle.java:198)
Does someone know why it happens? I wrapped with synchronized (b.getVariables()), but it looks like that two threads are executing for(TaintedVariable v : variablesOfBundle) 
 
     
    