def METHOD_NAME(self, v):
    if self._finished:
        return
    self._discovered[v] = True
    # descendants have higher entry time
    # and smaller exit time
    self._time += 1
    self._entry_time[v] = self._time
    self._dfs_process_vertex_early(v)
    en = self.edges[v]
    while en:
        y = en.vert
        if not self._discovered[y]:
            self._parent[y] = v  # DFS-tree
            self._dfs_process_edge1(v, y)  # tree edge
            self.METHOD_NAME(y)
        elif not self._processed[y] or self.directed:
            # actual proc inside will only ocurr if
            # parent(v)!=y (i.e y is a higher
            # ancestor not mark as processed yet)
            self._dfs_process_edge2(v, y)  # non-tree edge
        if self._finished:
            return
        en = en.next
    self._dfs_process_vertex_late(v)
    self._time += 1
    self._exit_time[v] = self._time
    self._processed[v] = True