streamInput = input; streamOutput = output;
input = new Channel (Character.TYPE, 1, 2); output = new Channel (Character.TYPE, 1);
    public void init()    {        add (new Pipeline ()        {            public void init ()            {                add(new CharGenerator("Hello World!"));            }        });        add (new Pipeline ()        {            public void init ()            {                add (new Filter ()                {                    Channel input = new Channel (Character.TYPE, 1, 2);                    Channel output = new Channel (Character.TYPE, 1);                    public void initIO ()                    {                        streamInput = input;                        streamOutput = output;                    }                    public void work ()                    {                        char c = input.popChar ();                        if (Character.isLetter (c))                        {                            c = (Character.isUpperCase (c) ? Character.toLowerCase (c) : Character.toUpperCase (c));                        }                        output.pushChar (c);                    }                });            }        });        add (new Pipeline ()        {            public void init ()            {                add(new CharPrinter());            }        });    }