Returns the exact, authentic node name for the given node name if a node corresponding to
        the given name exists in the graph (maybe not locally yet) or `None` otherwise.

        By default, this method checks whether a node with the given name exists locally in the
        graph and return `node_name` if it does or `None` otherwise.

        In `Graph` extensions that are used by applications where the user can enter potentially
        incorrect node names, this method should be overridden to improve usability.

        Arguments:
            node_name (str): The node name to return the authentic node name for.

        Returns:
            The authentic name of the node corresponding to the given node name or
            `None` if no such node exists.

def get_authentic_node_name(self, node_name: str) -> Optional[str]:
        """
        Returns the exact, authentic node name for the given node name if a node corresponding to
        the given name exists in the graph (maybe not locally yet) or `None` otherwise.

        By default, this method checks whether a node with the given name exists locally in the
        graph and return `node_name` if it does or `None` otherwise.

        In `Graph` extensions that are used by applications where the user can enter potentially
        incorrect node names, this method should be overridden to improve usability.

        Arguments:
            node_name (str): The node name to return the authentic node name for.

        Returns:
            The authentic name of the node corresponding to the given node name or
            `None` if no such node exists.
        """
        # Is there a node with the given name?
        vertex: IGraphVertex = None
        try:
            vertex: IGraphVertex = self._wrapped_graph.vs.find(node_name)
        except ValueError:
            pass

        # Is node_name a node index?
        if vertex is None:
            try:
                vertex: IGraphVertex = self._wrapped_graph.vs[int(node_name)]
            except ValueError:
                return None
            except IndexError:
                return None

        try:
            return vertex["name"]
        except KeyError:
            return str(vertex.index)