public void read()
    {
        Object obj = null;
        while(!done) 
        {
            searching = true;
            while(searching) 
            {
                bufferString = buffer.toString();
                tagStart = bufferString.indexOf("<", searchStart);
                if(tagStart < 0)
                    try
                    {
                        StringBuffer stringbuffer = new StringBuffer(buffReader.readLine());
                        if(countBytes)
                            try
                            {
                                byteCount += stringbuffer.toString().getBytes(encoding).length;
                            }
                            catch(UnsupportedEncodingException unsupportedencodingexception)
                            {
                                throw new UserError("Encoding \"" + encoding + "\" is not supported by your platform!");
                            }
                        lineNumber++;
                        buffer.append(stringbuffer.toString() + LINE_SEPARATOR);
                    }
                    catch(IOException ioexception)
                    {
                        Trace.userinfo("\"" + fileName + "\" could not be read.");
                        return;
                    }
                    catch(NullPointerException nullpointerexception)
                    {
                        searching = false;
                    }
                else
                    searching = false;
            }
            if(tagStart < 0)
            {
                done = true;
                continue;
            }
            try
            {
                tryStates();
            }
            catch(TransitionMade transitionmade)
            {
                continue;
            }
            searchStart = tagStart + 1;
        }
    }