sink.ConnectGraph ();
sink.SetupOperator ();
    public void ConnectGraph ()    {        // make sure I have some elements - not sure what to do otherwise        ASSERT (!streamElements.isEmpty ());                // go through the list and connect it together:        try        {            ListIterator childIter;            childIter = (ListIterator) streamElements.iterator ();            Stream source = null;                    while (childIter.hasNext ())            {                // advance the iterator:                Stream sink = (Stream) childIter.next ();                ASSERT (sink != null);                                // setup the sink itself                sink.ConnectGraph ();                                if (source != null && source.GetIOField ("output") != null)                {                    // create and connect a pass filter                    ChannelConnectFilter connect = new ChannelConnectFilter ();                    Channel in = source.GetIOField ("output");                    Channel out = sink.GetIOField ("input");                    connect.UseChannels (in, out);                }                source = sink;            }        }        catch (NoSuchElementException error)        {            // this should never happen            ASSERT (false);        }        // set myself up with proper input and output        {            input = ((Stream)streamElements.getFirst ()).GetIOField ("input");            output = ((Stream)streamElements.getLast ()).GetIOField ("output");        }    }