void parseRequests(MC2ParserImpl mc2parser) 
                throws IllegalStateException, IOException, MC2ParserException {
        started();
        // parse all that we can find
        final int docDepth = mc2parser.getDepth();
        while (mc2parser.getDepth() > 0) {
            final int id = mc2parser.getNextTransactionID();
            if (id != Integer.MIN_VALUE) {
                // find corresponding request
                final int reqIndex = getRequestIndexForID(id);
                MC2Request req = m_reqArray[reqIndex];
                if (req != null) {
                    // there are reply elements which have attributes
                    // those will be lost if we advance in search for a status
                    try {
                        // each element has to try to parse his status
                        req.parse(mc2parser);
                    } catch (MC2ParserException ex) {
                        if (LOG.isError()) {
                            LOG.error("MC2Document.readResponse()", ex);
                        }
                        req.error(new UnexpectedError(
                                "Caught exception while parsing request", ex));
                    }
                }
                m_reqArray[reqIndex] = null;
            }
            mc2parser.advanceToDepth(docDepth);
        }
        failUtstandingRequests();
    }