### Question:
ChildElementIterator implements IIterableIterator <Element> { public final boolean hasNext () { return m_aIter.hasNext (); } ChildElementIterator(@Nullable final Node aStartNode); final boolean hasNext(); @Nonnull final Element next(); @Override String toString();  }### Answer:
@Test public void testGetRecursiveChildIter () { final Document doc = XMLFactory.newDocument (); assertFalse (new ChildElementIterator (doc).hasNext ()); final Element eRoot = (Element) doc.appendChild (doc.createElement ("root")); assertEquals (1, CollectionHelper.newList (new ChildElementIterator (doc)).size ()); eRoot.appendChild (doc.createElement ("Hallo")); eRoot.appendChild (doc.createTextNode (" - ")); eRoot.appendChild (doc.createElement ("Welt")); assertEquals (2, CollectionHelper.newList (new ChildElementIterator (eRoot)).size ()); assertEquals (1, CollectionHelper.newList (new ChildElementIterator (eRoot).withFilter (XMLHelper.filterElementWithTagName ("Hallo"))) .size ()); try { new ChildElementIterator (doc).remove (); fail (); } catch (final UnsupportedOperationException ex) {} assertEquals (0, CollectionHelper.getSize (new ChildElementIterator (null))); }