def METHOD_NAME(self, source, to, label=None):
    """Add an edge to this graph."""
    if source not in self._adjacency_list:
        raise ValueError("Unknown <from> node: " + str(source))
    if to not in self._adjacency_list:
        raise ValueError("Unknown <to> node: " + str(to))
    edge = (to, label)
    self._adjacency_list[source].add(edge)
    if label not in self._label_map:
        self._label_map[label] = set()
    self._label_map[label].add((source, to))