StringField msgType = extractField();
StringField msgType = extractField(dd);
    private void parseHeader(DataDictionary dd) throws InvalidMessage {        boolean invalidHeaderFieldOrder = false;        StringField beginString = extractField();        if (beginString.getField() != BeginString.FIELD) {            invalidHeaderFieldOrder = true;        }        StringField bodyLength = extractField();        if (bodyLength.getField() != BodyLength.FIELD) {            invalidHeaderFieldOrder = true;        }        StringField msgType = extractField();        if (msgType.getField() != MsgType.FIELD) {            invalidHeaderFieldOrder = true;        }        if (doValidation && invalidHeaderFieldOrder) {            throw new InvalidMessage("Header fields out of order");        }        header.setField(beginString);        header.setField(bodyLength);        header.setField(msgType);        StringField field = extractField();        while (field != null && isHeaderField(field, dd)) {            header.setField(field);            field = extractField();        }        pushBack(field);    }