/**
   * From the <code>SVGContext</code> from the element children of the node.
   *
   * @param ctx the <code>BridgeContext</code> for the document
   * @param e the <code>Element</code> whose subtree's elements will have threir <code>SVGContext
   *     </code>s removed
   * @see org.apache.batik.dom.svg.SVGContext
   * @see org.apache.batik.bridge.BridgeUpdateHandler
   */
  protected void removeContextFromChild(BridgeContext ctx, Element e) {
    if (SVG_NAMESPACE_URI.equals(e.getNamespaceURI())) {
      String ln = e.getLocalName();
      if (ln.equals(SVG12Constants.SVG_FLOW_DIV_TAG)
          || ln.equals(SVG12Constants.SVG_FLOW_LINE_TAG)
          || ln.equals(SVG12Constants.SVG_FLOW_PARA_TAG)
          || ln.equals(SVG12Constants.SVG_FLOW_SPAN_TAG)) {
        ((AbstractTextChildBridgeUpdateHandler) ((SVGOMElement) e).getSVGContext()).dispose();
      }
    }

    Node child = getFirstChild(e);
    while (child != null) {
      if (child.getNodeType() == Node.ELEMENT_NODE) {
        removeContextFromChild(ctx, (Element) child);
      }
      child = getNextSibling(child);
    }
  }
  /**
   * Add to the element children of the node, a <code>SVGContext</code> to support dynamic update.
   * This is recursive, the children of the nodes are also traversed to add to the support elements
   * their context
   *
   * @param ctx a <code>BridgeContext</code> value
   * @param e an <code>Element</code> value
   * @see org.apache.batik.dom.svg.SVGContext
   * @see org.apache.batik.bridge.BridgeUpdateHandler
   */
  protected void addContextToChild(BridgeContext ctx, Element e) {
    if (SVG_NAMESPACE_URI.equals(e.getNamespaceURI())) {
      String ln = e.getLocalName();
      if (ln.equals(SVG12Constants.SVG_FLOW_DIV_TAG)
          || ln.equals(SVG12Constants.SVG_FLOW_LINE_TAG)
          || ln.equals(SVG12Constants.SVG_FLOW_PARA_TAG)
          || ln.equals(SVG12Constants.SVG_FLOW_SPAN_TAG)) {
        ((SVGOMElement) e).setSVGContext(new FlowContentBridge(ctx, this, e));
      }
    }

    // traverse the children to add SVGContext
    Node child = getFirstChild(e);
    while (child != null) {
      if (child.getNodeType() == Node.ELEMENT_NODE) {
        addContextToChild(ctx, (Element) child);
      }
      child = getNextSibling(child);
    }
  }