def METHOD_NAME(self, first: LogMessage, second: LogMessage, path: Optional[List[str]] = None) -> LogMessage:
    if path is None:
        path = []
    for key in second:
        if key in first:
            if isinstance(first[key], dict) and isinstance(second[key], dict):
                self.METHOD_NAME(first[key], second[key], path + [str(key)])  # type: ignore # type is verified above
            else:
                if first[key] != second[key]:
                    _LOGGER.warning("Conflict at %s" % ".".join(path + [str(key)]))
                first[key] = second[key]
        else:
            first[key] = second[key]
    return first