// ** This class was generated with DemFGen (vers:04/27/2009)


public class InlineCircsTU{
   private CircsTU func;
   public InlineCircsTU(CircsTU f){ func = f; }

   public Integer traverse(Pict _h){ return traversePict(_h); }

   public Integer traverseSquare(Square _h){
      Integer _size = func.combine(_h.size);
      return func.combine((Square)_h, (Integer)_size);
   }
   public Integer traversePict(Pict _h){
      if(_h instanceof Overlay) return this.traverseOverlay((Overlay)_h);
      if(_h instanceof Offset) return this.traverseOffset((Offset)_h);
      if(_h instanceof Circle) return this.traverseCircle((Circle)_h);
      if(_h instanceof Square) return this.traverseSquare((Square)_h);
      else throw new RuntimeException("Unknown Pict Variant");
   }
   public Integer traverseOverlay(Overlay _h){
      Integer _top = traversePict(_h.top);
      Integer _bot = traversePict(_h.bot);
      return func.combine((Overlay)_h, (Integer)_top, (Integer)_bot);
   }
   public Integer traverseOffset(Offset _h){
      Integer _dx = func.combine(_h.dx);
      Integer _dy = func.combine(_h.dy);
      Integer _inner = traversePict(_h.inner);
      return func.combine((Offset)_h, (Integer)_dx, (Integer)_dy, (Integer)_inner);
   }
   public Integer traverseCircle(Circle _h){
      Integer _rad = func.combine(_h.rad);
      return func.combine((Circle)_h);
   }

}