Generate program that has the following intention:

The intention of the program is to implement a depth-first search (DFS) algorithm using a modified deque (double-ended queue) to traverse a graph of interconnected nodes. The algorithm starts at a specific NAME_1 (startnode) and searches for a specified goal NAME_1. If the goal NAME_1 is found, the function returns True, otherwise it returns False.

The modified deque (Queue) is used to keep track of the nodes to visit in the depth-first search order, and the set nodesseen is used to keep track of the nodes that have already been visited to prevent revisiting them. The algorithm explores the graph by visiting the successors of the current NAME_1 and adding them to the queue if they haven't been seen before.

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
```` There should be exactly 5 paragraphs separated by the markdown divider: ***.
user