def METHOD_NAME(self, indent_str: Union[str, None]):
    """
    Annotate a given match element showing the match path elements and the parsed values.
    @param indent_str if None, all elements are separated just with a single space, no matter how deep the nesting level
           of those elements is. If not None, all elements are put into an own line, that is prefixed by the given indent_str and
           indenting is increased by two spaces for each level.
    """
    next_indent = None
    if not isinstance(indent_str, str) and indent_str is not None:
        msg = "indent_str has to be of the type string or None."
        logging.getLogger(DEBUG_LOG_NAME).error(msg)
        raise TypeError(msg)
    try:
        if isinstance(self.match_object, bytes):
            data = self.match_object.decode(AminerConfig.ENCODING)
        else:
            data = repr(self.match_object)
    except UnicodeError:
        data = repr(self.match_object)
    if indent_str is None:
        result = f"{self.path}: {data}"
    else:
        result = f"{indent_str}{self.path}: {data}"
        next_indent = indent_str + "  "
    if self.children is not None:
        for child_match in self.children:
            if next_indent is None:
                result += " " + child_match.METHOD_NAME(None)
            else:
                result += "\n" + child_match.METHOD_NAME(next_indent)
    return result