Generate program that has the following intention:

This is the structure of the `NAME_1` class:
````
class NAME_1:
    def __init__(
        self,
        value=None,
        successor=None,
        successors=[],
        predecessors=[],
        incoming_nodes=[],
        outgoing_nodes=[],
    ):
        self.value = value
        self.successor = successor
        self.successors = successors
        self.predecessors = predecessors
        self.incoming_nodes = incoming_nodes
        self.outgoing_nodes = outgoing_nodes
````

The program you have provided is a simple implementation of the depth-first search (DFS) algorithm. DFS is a graph traversal algorithm that traverses a graph in a systematic way, exploring one NAME_1 and all of its adjacent nodes before moving on to the next. The intention of the program is to find a path from a given start NAME_1 to a goal NAME_1, if it exists.

The NAME_1 class is used to represent a NAME_1 in the graph, with each NAME_1 having a value, a successor NAME_1, and a list of successor nodes. The search_from function is used to search for a path from a given start NAME_1 to a goal NAME_1. The function uses a set to track which nodes have already been visited, and it recursively explores each NAME_1's successors until it finds the goal NAME_1 or determines that no path exists.

The intention of the program is to find the shortest path from the start NAME_1 to the goal NAME_1 using DFS. The program can be used to solve problems such as finding the shortest path between two nodes in a graph, finding the shortest path from a given NAME_1 to all other nodes in the graph, or finding the shortest path from a given NAME_1 to a specific NAME_1.
 Provide exactly two different responses that are separated with 6 asterisk symbols: ******.
user