int dst, boolean insMode ) throws SAXException {
Object dst, boolean insMode ) throws SAXException {
  private void emitChildList(ContentHandler ch, Sequence s, BranchNode parent,                             int dst, boolean insMode ) throws SAXException {    for (int ic = 0; ic < parent.getChildCount(); ic++) {      boolean lastStopNode = ic == parent.getChildCount() - 1;      BranchNode child = parent.getChild(ic);      if (child.hasBaseMatch()) {        Vector childStopNodes = new Vector();        m.getAreaStopNodes(childStopNodes, child);        int src = getDiffId(child.getBaseMatch());        if (childStopNodes.size() == 0 && !lastStopNode) {          if (s.isEmpty()) {            s.init(src, dst);            continue;          }          else if (s.appends(src, dst)) {            s.append();            continue;          }        }        // Did not append to sequence (or @ last stopnode) => emit sequence        if (!s.appends(src, dst)) {          // Current does not append to prev seq -> output prev seq + new          // in separate tags          if (!s.isEmpty()) {            openCopy(s.src, s.dst, s.run, ch);            closeCopy(ch);          }          if (childStopNodes.size() > 0 || lastStopNode) {            openCopy(src, dst, 1, ch);            copy(child.getBaseMatch(), child, ch, childStopNodes);            closeCopy(ch);            s.setEmpty(); // Reset sequence          }          else            s.init(src, dst);        }        else { // appends to open sequence (other reason for seq. break)          s.append();          openCopy(s.src, s.dst, s.run, ch);          copy(child.getBaseMatch(), child, ch, childStopNodes);          closeCopy(ch);          s.setEmpty(); // Reset sequence        }      } // endif has base match      else {        if (!s.isEmpty()) {          openCopy(s.src, s.dst, s.run, ch);          closeCopy(ch);          s.setEmpty();        }        if( !insMode ) {          // Insert tree...          AttributesImpl copyAtts = new AttributesImpl();          copyAtts.addAttribute("", "", "dst", "CDATA", String.valueOf(dst));          // SHORTINS = Concatenate several <ins> tags to a single one          if (ic == 0 || parent.getChild(ic - 1).hasBaseMatch()) // SHORTINS            ch.startElement("", "", DIFF_NS + "insert", copyAtts);        }        insert(child, ch);        if( !insMode ) {          if (lastStopNode || parent.getChild(ic + 1).hasBaseMatch()) // SHORTINS            ch.endElement("", "", DIFF_NS + "insert");        }      }    } // endfor children  }