docs: private void processElementCluster(GeneratorMain gen, Node cur) {
      int size = -1;
      double overweight = 1.0;
  
      String sizestr = ((Element) cur).getAttribute(ATTR_SIZE);
      if(sizestr != null && sizestr.length() > 0) {
        size = (int) (ParseUtil.parseIntBase10(sizestr) * sizescale);
      }
  
      String name = ((Element) cur).getAttribute(ATTR_NAME);
  
      String dcostr = ((Element) cur).getAttribute(ATTR_DENSITY);
      if(dcostr != null && dcostr.length() > 0) {
        overweight = ParseUtil.parseDouble(dcostr);
      }
  
      if(size < 0) {
        throw new AbortException("No valid cluster size given in specification file.");
      }
      if(name == null || name.length() == 0) {
        throw new AbortException("No cluster name given in specification file.");
      }
  
      // *** add new cluster object
      Random newRand = clusterRandom.getSingleThreadedRandom();
      GeneratorSingleCluster cluster = new GeneratorSingleCluster(name, size, overweight, newRand);
  
      // TODO: check for unknown attributes.
      XMLNodeIterator iter = new XMLNodeIterator(cur.getFirstChild());
      while(iter.hasNext()) {
        Node child = iter.next();
        if(TAG_UNIFORM.equals(child.getNodeName())) {
          processElementUniform(cluster, child);
        }
        else if(TAG_NORMAL.equals(child.getNodeName())) {
          processElementNormal(cluster, child);
        }
        else if(TAG_GAMMA.equals(child.getNodeName())) {
          processElementGamma(cluster, child);
        }
        else if(TAG_HALTON.equals(child.getNodeName())) {
          processElementHalton(cluster, child);
        }
        else if(TAG_ROTATE.equals(child.getNodeName())) {
          processElementRotate(cluster, child);
        }
        else if(TAG_TRANSLATE.equals(child.getNodeName())) {
          processElementTranslate(cluster, child);
        }
        else if(TAG_CLIP.equals(child.getNodeName())) {
          processElementClipping(cluster, child);
        }
        else if(child.getNodeType() == Node.ELEMENT_NODE) {
          LOG.warning("Unknown element in XML specification file: " + child.getNodeName());
        }
      }
  
      gen.addCluster(cluster);
    }