}
  void doApply(Stylesheet stylesheet, QName mode,               Node context, int pos, int len,               Node parent, Node nextSibling)    throws TransformerException  {    Node copy = parent;    switch (context.getNodeType())      {      case Node.TEXT_NODE:      case Node.ATTRIBUTE_NODE:      case Node.ELEMENT_NODE:      case Node.PROCESSING_INSTRUCTION_NODE:      case Node.COMMENT_NODE:        Document doc = (parent instanceof Document) ? (Document) parent :          parent.getOwnerDocument();        copy = context.cloneNode(false);        copy = doc.adoptNode(copy);        if (copy.getNodeType() == Node.ATTRIBUTE_NODE)          {            if (parent.getFirstChild() != null)              {                // Ignore attempt to add attribute after children              }            else              {                NamedNodeMap attrs = parent.getAttributes();                if (attrs != null)                  {                    attrs.setNamedItemNS(copy);                  }              }          }        else          {            if (nextSibling != null)              {                parent.insertBefore(copy, nextSibling);              }            else              {                parent.appendChild(copy);              }          }      }    if (uas != null)      {        StringTokenizer st = new StringTokenizer(uas, " ");        while (st.hasMoreTokens())          {            addAttributeSet(stylesheet, mode, context, pos, len,                            copy, null, st.nextToken());          }      }    if (children != null)      {        children.apply(stylesheet, mode,                       context, pos, len,                       copy, null);      }    if (next != null)      {        next.apply(stylesheet, mode,                   context, pos, len,                   parent, nextSibling);      }  }