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 in a graph using Python. The NAME_1 class represents a NAME_1 in the 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, as its arguments. It uses a set called nodesvisited to keep track of the visited nodes and prevents infinite loops in the search process. The function returns True if there is a path from startnode to goalnode, and False otherwise.
 Your answer should have exactly 3 paragraphs. Make sure that the last paragraph starts with the word "steps" and that each paragraph is separated by two new lines.
user