def followes(state):
    """
    Return the set of states that can be reached from state following e arrows and his state.
    :param state: starting state from where e arrows will follow
    :return: The set of states that can be reached from param state following e arrows.
    """

    # Create a new set with state as it's only member.
    states = set()
    states.add(state)

    # Check if state has arrows labelled e from it.
    if state.label is None:
        # check if edge1 is a state
        if state.edge1 is not None:
            # If there's and edge1, follow it.
            states |= followes(state.edge1)
        # Check if edge2 is a state
        if state.edge2 is not None:
            # If there's and edge2, follow it.
            states |= followes(state.edge2)

    # Return the set of states.
    return states