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 intention of the program is to implement a depth-first search (DFS) algorithm for graphs using Python classes and functions. The NAME_1 class represents a NAME_1 in a graph, with various attributes to keep track of its value, successor, successors, predecessors, incoming nodes, and outgoing nodes. The p4 function is a depth-first search function that takes two nodes, startnode and goalnode, and searches for a path from the startnode to the goalnode. The search_from function is a recursive helper function that checks if a NAME_1 has been visited before and continues the search based on the NAME_1's successors. The algorithm returns True if a path from the startnode to the goalnode is found and False otherwise.
 Write your response with at least 400 words.
user