int groupField = field.getField();
int groupCountTag = field.getField(); parent.setField(groupCountTag, field);
    private void parseGroup(StringField field, DataDictionary dd, FieldMap parent) throws InvalidMessage {        DataDictionary.GroupInfo rg = dd.getGroup(getMsgType(), field.getField());        int groupField = field.getField();        int firstField = rg.getDelimeterField();        boolean firstFieldFound = false;        Group group = null;        boolean inGroupParse = true;        while (inGroupParse) {            field = extractField(group, dd);            if (field.getTag() == firstField) {                if (group != null) {                    parent.addGroup(group);                }                group = new Group(groupField, firstField);                group.setField(field);                firstFieldFound = true;            } else {                if (rg.getDataDictionary().isGroup(getMsgType(), field.getField())) {                    if (firstFieldFound) {                        parseGroup(field, rg.getDataDictionary(), group);                    } else {                        throw new InvalidMessage("The group " + groupField + " must set the delimiter field " + firstField);                    }                } else {                    if (rg.getDataDictionary().isField(field.getTag())) {                        group.setField(field);                    } else {                        if (group != null) {                            parent.addGroup(group);                        }                        pushBack(field);                        inGroupParse = false;                    }                }            }        }    }