### Question:
MicroHelper { @Nonnull @SuppressFBWarnings ("IL_INFINITE_LOOP") public static String getPath (@Nullable final IMicroNode aNode, @Nonnull final String sSep) { ValueEnforcer.notNull (sSep, "Separator"); final StringBuilder aSB = new StringBuilder (); IMicroNode aCurrentNode = aNode; while (aCurrentNode != null) { if (aSB.length () > 0) aSB.insert (0, sSep); aSB.insert (0, aCurrentNode.getNodeName ()); aCurrentNode = aCurrentNode.getParent (); } return aSB.toString (); } private  MicroHelper(); @Nonnull static IMicroNode append(@Nonnull final IMicroNode aSrcNode, @Nullable final Object aChild); @Nonnull @SuppressFBWarnings ("IL_INFINITE_LOOP") static String getPath(@Nullable final IMicroNode aNode, @Nonnull final String sSep); @Nullable static String getDocumentRootElementTagName(@Nullable final IMicroDocument aDoc); @Nonnull static IMicroNode convertToMicroNode(@Nonnull final Node aNode); @Nullable static String getChildTextContent(@Nonnull final IMicroElement eParentElement, @Nonnull final String sChildElementName); @Nullable static String getChildTextContentTrimmed(@Nonnull final IMicroElement eParentElement, @Nonnull final String sChildElementName); @Nullable static DSTTYPE getChildTextContentWithConversion(@Nonnull final IMicroElement eParentElement,
                                                                     @Nonnull final String sChildElementName,
                                                                     @Nonnull final Class <DSTTYPE> aDstClass); @Nullable static String getChildTextContent(@Nonnull final IMicroElement eParentElement,
                                            @Nonnull final String sNamespaceURI,
                                            @Nonnull final String sChildElementName); @Nullable static String getChildTextContentTrimmed(@Nonnull final IMicroElement eParentElement,
                                                   @Nonnull final String sNamespaceURI,
                                                   @Nonnull final String sChildElementName); @Nullable static DSTTYPE getChildTextContentWithConversion(@Nonnull final IMicroElement eParentElement,
                                                                     @Nonnull final String sNamespaceURI,
                                                                     @Nonnull final String sChildElementName,
                                                                     @Nonnull final Class <DSTTYPE> aDstClass); @Nonnull @ReturnsMutableCopy static IMicroContainer getAllChildrenAsContainer(@Nonnull final IMicroNode aParent); @Nonnull @ReturnsMutableCopy static IMicroContainer getAllOriginalChildrenAsContainer(@Nonnull final IMicroNode aParent);  }### Answer:
@Test public void testGetPath () { final IMicroDocument aDoc = new MicroDocument (); assertEquals ("#document", MicroHelper.getPath (aDoc, "/")); final IMicroElement eRoot = aDoc.appendElement ("root"); assertEquals ("#document/root", MicroHelper.getPath (eRoot, "/")); final IMicroElement eChild = eRoot.appendElement ("child"); assertEquals ("#document/root/child", MicroHelper.getPath (eChild, "/")); assertEquals ("", MicroHelper.getPath (null, "/")); try { MicroHelper.getPath (eChild, null); fail (); } catch (final NullPointerException ex) {} }