<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def remove_edge(self, p_from, p_to, p_remove_unconnected_nodes=True):
 """ Removes an edge from the graph. When remove_unconnected_nodes is True, then the nodes are also removed if they become isolated. """

        if self.has_edge(p_from, p_to):
            self._edges[p_from].remove(p_to)

        try:
            del self._edge_numbers[(p_from, p_to)]
        except KeyError:
            return None

        if p_remove_unconnected_nodes:
            if self.is_isolated(p_from):
                self.remove_node(p_from)

            if self.is_isolated(p_to):
                self.remove_node(p_to)