docs: @Nonnull
    public static DefaultTreeWithGlobalUniqueID <String, NetworkInterface> createNetworkInterfaceTree ()
    {
      final DefaultTreeWithGlobalUniqueID <String, NetworkInterface> ret = new DefaultTreeWithGlobalUniqueID <> ();
  
      // Build basic level - all IFs without a parent
      final ICommonsList <NetworkInterface> aNonRootNIs = new CommonsArrayList <> ();
      try
      {
        for (final NetworkInterface aNI : IteratorHelper.getIterator (NetworkInterface.getNetworkInterfaces ()))
          if (aNI.getParent () == null)
            ret.getRootItem ().createChildItem (aNI.getName (), aNI);
          else
            aNonRootNIs.add (aNI);
      }
      catch (final Throwable t)
      {
        throw new IllegalStateException ("Failed to get all network interfaces", t);
      }
  
      int nNotFound = 0;
      while (aNonRootNIs.isNotEmpty ())
      {
        final NetworkInterface aNI = aNonRootNIs.removeFirst ();
        final DefaultTreeItemWithID <String, NetworkInterface> aParentItem = ret.getItemWithID (aNI.getParent ()
                                                                                                   .getName ());
        if (aParentItem != null)
        {
          // We found the parent
          aParentItem.createChildItem (aNI.getName (), aNI);
  
          // Reset counter
          nNotFound = 0;
        }
        else
        {
          // Add again at the end
          aNonRootNIs.add (aNI);
  
          // Parent not found
          nNotFound++;
  
          // We tried too many times without success - we iterated the whole
          // remaining list and found no parent tree item
          if (nNotFound > aNonRootNIs.size ())
            throw new IllegalStateException ("Seems like we have a data structure inconsistency! Remaining are: " +
                                             aNonRootNIs);
        }
      }
      return ret;
    }