/// <summary>
        /// Prüfe das Element zuvor, bevor man es zum Indexieren schickt.
        /// <para>Es werden mehrere Parameter geprüft.
        /// <list type="number">
        /// <item>Soll das Element überhaupt indexiert werden: Soll diese Klasse indexiert werden? Sind alle Pflichtfelder vorhanden? Ist irgendein Ausnahmewert vorhanden?</item>
        /// <item>Ist das Element bereits indexiert?</item>
        /// <item>Hat sich der Inhalt des Elements geändert? </item>
        /// </list>
        /// </para>
        /// </summary>
        /// <param name="element">Das Element, das indexiert werden soll.</param>
        internal async Task SendToIndexerAsync(Element element)
        {
            bool isAlreadyIndexed = IsAlreadyIndexed(element);
            bool isForbidden      = RemoveWhenForbidden(element, isAlreadyIndexed);

            if (isForbidden)
            {
                return;
            }

            using ElementLogContext context = new();
            bool hasContentChanged = HasContentChanged(element);
            bool isIndexingNeeded  = RemoveWhenChanged(element, isAlreadyIndexed, hasContentChanged, context);

            if (isIndexingNeeded == false)
            {
                return;
            }

            _log.Info(LocalizationService.FormatResourceString("CrawlerIndexerInterfaceMessage03", element.Id));

            bool isIndexingSuccess = await _indexer.AddElementToIndexAsync(element);

            MarkElementFound(element, context, isIndexingSuccess);
        }