/// <summary>
 /// Adds an output node to this node
 /// </summary>
 /// <param name="node">Output node to add</param>
 /// <exception cref="ArgumentNullException">Thrown if node is null</exception>
 /// <remarks>
 /// If the output node does not contain this node as an iput, then this node is added to the
 /// output node (<see cref="AddInputNode"/>)
 /// </remarks>
 public void AddOutputNode( IGraphNode node )
 {
     if ( node == null )
     {
         throw new ArgumentNullException( "node" );
     }
     if ( !m_OutputNodes.Contains( node ) )
     {
         m_OutputNodes.Add( node );
         if ( OutputNodeAdded != null )
         {
             OutputNodeAdded( node );
         }
     }
     if ( !node.InputNodes.Contains( this ) )
     {
         node.AddInputNode( this );
     }
 }