docs: @Nullable
    public static IHCElement <?> recursiveGetFirstChildWithDifferentTagName (@Nonnull final IHCNode aOwner,
                                                                             @Nonnull @Nonempty final EHTMLElement... aElements)
    {
      ValueEnforcer.notNull (aOwner, "Owner");
      ValueEnforcer.notEmpty (aElements, "Elements");
  
      final Wrapper <IHCElement <?>> ret = new Wrapper <> ();
      HCHelper.iterateChildrenNoCopy (aOwner, (aParentNode, aChildNode) -> {
        if (aChildNode instanceof IHCElement <?>)
        {
          final IHCElement <?> aCurrentElement = (IHCElement <?>) aChildNode;
          final String sCurrentTagName = aCurrentElement.getTagName ();
          boolean bFound = false;
          for (final EHTMLElement aElement : aElements)
            if (sCurrentTagName.equalsIgnoreCase (aElement.getElementName ()))
            {
              bFound = true;
              break;
            }
          if (!bFound)
          {
            ret.set (aCurrentElement);
            return EContinue.BREAK;
          }
        }
        return EContinue.CONTINUE;
      });
      return ret.get ();
    }