title: Fail safe iterator - removal during iteration
body: <blockquote>
    <p>If fail safe iterator creates a clone of underlying data structure, why 'D' is never printed in program below?</p>
  </blockquote>
  
  <pre><code>Map&lt;String, String&gt; acMap = new ConcurrentHashMap&lt;String, String&gt;();
  acMap.put("A", "Aye");
  acMap.put("B", "Bee");
  acMap.put("C", "See");
  acMap.put("D", "Di");
  
  Iterator&lt;String&gt; itr = acMap.keySet().iterator();
  while(itr.hasNext())
  {
      acMap.remove("D");
      System.out.println(itr.next());
  }
  </code></pre>