### Question:
MicroRecursiveIterator implements IIterableIterator <IMicroNode> { public IMicroNode next () { if (m_aOpen.isEmpty ()) throw new NoSuchElementException (); final IMicroNode ret = m_aOpen.remove (0); if (ret.hasChildren ()) m_aOpen.addAll (0, ret.getAllChildren ()); return ret; } MicroRecursiveIterator(@Nonnull final IMicroNode aNode); boolean hasNext(); IMicroNode next();  }### Answer:
@Test public void testBasic () { final String sXML = "<?xml version='1.0'?><root attr='value'>text<child xmlns='http: final IMicroDocument aDoc = MicroReader.readMicroXML (sXML); assertNotNull (aDoc); final MicroRecursiveIterator it = new MicroRecursiveIterator (aDoc); for (final IMicroNode aNode : it) assertNotNull (aNode); try { it.next (); fail (); } catch (final NoSuchElementException ex) {} try { it.remove (); fail (); } catch (final UnsupportedOperationException ex) {} }