@Override
        public boolean visit(final RadComponent component) {
          if (!component.getDelegee().isShowing()) { // Skip invisible components
            return true;
          }
          final Shape oldClip = g.getClip();
          final RadContainer parent = component.getParent();
          if (parent != null) {
            final Point p = SwingUtilities.convertPoint(component.getDelegee(), 0, 0, editor.getLayeredPane());
            final Rectangle visibleRect = layeredPaneRect.intersection(new Rectangle(p.x, p.y, parent.getWidth(), parent.getHeight()));
            g.setClip(visibleRect);
          }
          if (component.isSelected()) { // we will paint selection later
            selection.add(component);
          }
          else {
            paintComponentBoundsImpl(editor, component, g);
          }
          paintGridOutline(editor, component, g);
          if (parent != null) {
            g.setClip(oldClip);
          }
          return true;
        }
@Override
        public boolean visit(final RadComponent component)