code: private void  render(SVG.SvgObject obj)
     {
        if (obj instanceof NotDirectlyRendered)
           return;
  
        // Save state
        statePush();
  
        checkXMLSpaceAttribute(obj);
  
        if (obj instanceof SVG.Svg) {
           render((SVG.Svg) obj);
        } else if (obj instanceof SVG.Use) {
           render((SVG.Use) obj);
        } else if (obj instanceof SVG.Switch) {
           render((SVG.Switch) obj);
        } else if (obj instanceof SVG.Group) {
           render((SVG.Group) obj);
        } else if (obj instanceof SVG.Image) {
           render((SVG.Image) obj);
        } else if (obj instanceof SVG.Path) {
           render((SVG.Path) obj);
        } else if (obj instanceof SVG.Rect) {
           render((SVG.Rect) obj);
        } else if (obj instanceof SVG.Circle) {
           render((SVG.Circle) obj);
        } else if (obj instanceof SVG.Ellipse) {
           render((SVG.Ellipse) obj);
        } else if (obj instanceof SVG.Line) {
           render((SVG.Line) obj);
        } else if (obj instanceof SVG.Polygon) {
           render((SVG.Polygon) obj);
        } else if (obj instanceof SVG.PolyLine) {
           render((SVG.PolyLine) obj);
        } else if (obj instanceof SVG.Text) {
           render((SVG.Text) obj);
        }
  
        // Restore state
        statePop();
     }
docs: Render dispatcher