<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def active_trail_nodes(self, start, observed=None):
 """ Returns all the nodes reachable from start via an active trail. Parameters start: Graph node observed : List of nodes (optional) If given the active trail would be computed assuming these nodes to be observed. Examples -------- {'a', 'b', 'c', 'd'} {'a', 'd'} {'b'} """


        if observed and self.parent_node in observed:
            return set(start)
        else:
            return set(self.nodes()) - set(observed if observed else [])