# File lib/graphviz.rb, line 163
  def add_edge( oNodeOne, oNodeTwo, hOpts = {} )
    
    if( oNodeOne.class == Array ) 
      oNodeOne.each do |no|
        add_edge( no, oNodeTwo, hOpts )
      end
    else
      if( oNodeTwo.class == Array )
        oNodeTwo.each do |nt|
          add_edge( oNodeOne, nt, hOpts )
        end
      else
        oEdge = GraphViz::Edge::new( oNodeOne, oNodeTwo, self )
        oEdge.index = @elements_order.size_of( "edge" )
        
        hOpts.each do |xKey, xValue|
          oEdge[xKey.to_s] = xValue
        end
        
        @elements_order.push( { 
          "type" => "edge", 
          "value" => oEdge
        } )
        @loEdges.push( oEdge )
        
        return( oEdge )
      end
    end
  end