def edges
      edges = @edges.keys.flat_map { |key| @edges[key].values }

      if directed?
        edges
      else
        edges.each_slice(2).to_a
      end
    end
def edges
      edges = @edges.keys.flat_map { |key| @edges[key].values }

      if directed?
        edges
      else
        edges.each_slice(2).to_a
      end
    end
@return [Array<Abuelo::Edge>, Array<Array(Abuelo::Edge, Abuelo::Edge)>]
   list of edges of the graph if directed,
   list of list of symmetric pairs of edges of the graph if undirected

 @example directed graph
  "graph.edges" #=> [edge_from_node_1_to_node_2]

 @example undirected graph
  "graph.edges" #=> [[edge_from_node_1_to_node_2, edge_from_node_2_to_node_1]]