protected void parse(FileReader filereader)
        throws IOException
    {
        StringBuffer stringbuffer = new StringBuffer();
        StringBuffer stringbuffer1 = new StringBuffer();
        LinkedList linkedlist = header;
        int i;
        while((i = filereader.read()) != -1) 
        {
            char c = (char)i;
            if(c == '<')
            {
                stringbuffer1.setLength(0);
                while((c = (char)filereader.read()) != '>') 
                    stringbuffer1.append(c);
                String s = stringbuffer1.toString();
                int j;
                for(j = tags.length; --j >= 0;)
                    if(s.startsWith(tags[j]))
                    {
                        linkedlist.add(stringbuffer.toString());
                        stringbuffer.setLength(0);
                        break;
                    }

                switch(j)
                {
                case 0: // '\0'
                    stringbuffer.append("<" + stringbuffer1 + ">");
                    break;

                case 1: // '\001'
                    linkedlist = replyPart;
                    break;

                case 2: // '\002'
                    linkedlist = footer;
                    break;

                default:
                    linkedlist.add(new Tag(s));
                    break;
                }
            } else
            {
                stringbuffer.append(c);
            }
        }
        linkedlist.add(stringbuffer.toString());
    }