code: public synchronized String makeEscapedCompactString() {
      StringBuffer buffer = new StringBuffer();
      for(Group group: this){
        buffer.append(group.makeEscapedCompactString());
      }
      return buffer.toString();
    }
docs: Represent the counter in a textual format that can be converted back to
  its object form
  @return the string in the following format
  {(groupname)(group-displayname)[(countername)(displayname)(value)][][]}{}{}