code: private void render(SVG.Use obj)
     {
        debug("Use render");
  
        if ((obj.width != null && obj.width.isZero()) ||
            (obj.height != null && obj.height.isZero()))
           return;
  
        updateStyleForElement(state, obj);
  
        if (!display())
           return;
  
        // Locate the referenced object
        SVG.SvgObject  ref = obj.document.resolveIRI(obj.href);
        if (ref == null) {
           error("Use reference '%s' not found", obj.href);
           return;
        }
  
        if (obj.transform != null) {
           canvas.concat(obj.transform);
        }
  
        // Handle the x,y attributes
        float _x = (obj.x != null) ? obj.x.floatValueX(this) : 0f;
        float _y = (obj.y != null) ? obj.y.floatValueY(this) : 0f;
        canvas.translate(_x, _y);
  
        checkForClipPath(obj);
  
        boolean  compositing = pushLayer();
  
        parentPush(obj);
  
        if (ref instanceof SVG.Svg)
        {
           SVG.Svg  svgElem = (SVG.Svg) ref;
           Box viewPort = makeViewPort(null, null, obj.width, obj.height);
  
           statePush();
           render(svgElem, viewPort);
           statePop();
        }
        else if (ref instanceof SVG.Symbol)
        {
           Length _w = (obj.width != null) ? obj.width : new Length(100, Unit.percent);
           Length _h = (obj.height != null) ? obj.height : new Length(100, Unit.percent);
           Box viewPort = makeViewPort(null, null, _w, _h);
  
           statePush();
           render((SVG.Symbol) ref, viewPort);
           statePop();
        }
        else
        {
           render(ref);
        }
  
        parentPop();
  
        if (compositing)
           popLayer(obj);
  
        updateParentBoundingBox(obj);
     }
docs: ==============================================================================