void getGroup(Group group, ElementType parent)
      throws XMLMiddlewareException, MalformedURLException, IOException, EOFException
   {
      // This gets a choice or sequence.

      boolean moreCPs = true;

      while (moreCPs)
      {
         discardWhitespace();
         getContentParticle(group, parent);
         discardWhitespace();
         if (isChar('|'))
         {
            if (group.type == Particle.TYPE_UNKNOWN)
            {
               group.type = Particle.TYPE_CHOICE;
            }
            else if (group.type == Particle.TYPE_SEQUENCE)
            {
               throwXMLMiddlewareException("Invalid mixture of ',' and '|' in content model.");
            }
         }
         else if (isChar(','))
         {
            if (group.type == Particle.TYPE_UNKNOWN)
            {
               group.type = Particle.TYPE_SEQUENCE;
            }
            else if (group.type == Particle.TYPE_CHOICE)
            {
               throwXMLMiddlewareException("Invalid mixture of ',' and '|' in content model.");
            }
         }
         else if (isChar(')'))
         {
            moreCPs = false;
            getFrequency(group);

            // If there is a single content particle in the group,
            // we simply call it a sequence.

            if (group.type == Particle.TYPE_UNKNOWN)
            {
               group.type = Particle.TYPE_SEQUENCE;
            }
         }
      }
   }