    # 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