/**
   * DOCUMENT ME!
   *
   * @param g2 DOCUMENT ME!
   * @param c DOCUMENT ME!
   */
  public void paintChildren(Graphics2D g2, Component c) {
    if ((c.getChildren() == null) || c.getChildren().isEmpty()) {
      return;
    }

    Rectangle bounds = c.getBounds();
    Graphics2D gcopy = (Graphics2D) g2.create();

    gcopy.translate(bounds.x, bounds.y);

    Insets padding = c.getPadding();

    if (padding != null) {
      gcopy.translate(padding.left, padding.top);
    }

    ArrayList childrenCopy = (ArrayList) c.getChildren();

    Comparator comparator = ComponentComparator.getInstance();
    Collections.sort(childrenCopy, comparator);

    Iterator iterator = childrenCopy.iterator();

    while (iterator.hasNext()) {
      Component component = (Component) iterator.next();
      paintChild(gcopy, component);
    }

    gcopy.dispose();
  }