private void copyElement(ElementNodeBuilder enb, DictionaryBuilder db, NodeTreePointable ntp,
ElementNodePointable enp) throws IOException {
UTF8StringPointable strp = ppool.takeOne(UTF8StringPointable.class);
SequencePointable seqp = ppool.takeOne(SequencePointable.class);
AttributeNodePointable anp = ppool.takeOne(AttributeNodePointable.class);
TaggedValuePointable tvp = ppool.takeOne(TaggedValuePointable.class);
ElementNodePointable cenp = ppool.takeOne(ElementNodePointable.class);
try {
ElementNodeBuilder tempEnb = createENB();
enb.startChild(tempEnb);
enp.getName(cqp);
int newURICode = recode(cqp.getNamespaceCode(), ntp, db, strp);
int newPrefixCode = recode(cqp.getPrefixCode(), ntp, db, strp);
int newLocalCode = recode(cqp.getLocalCode(), ntp, db, strp);
tempEnb.setName(newURICode, newLocalCode, newPrefixCode);
tempEnb.startAttributeChunk();
if (enp.attributesChunkExists()) {
enp.getAttributeSequence(ntp, seqp);
for (int i = 0; i < seqp.getEntryCount(); ++i) {
seqp.getEntry(i, tvp);
tvp.getValue(anp);
copyAttribute(tempEnb, db, ntp, anp);
}
}
tempEnb.endAttributeChunk();
tempEnb.startChildrenChunk();
if (enp.childrenChunkExists()) {
enp.getChildrenSequence(ntp, seqp);
for (int i = 0; i < seqp.getEntryCount(); ++i) {
seqp.getEntry(i, tvp);
byte nTag = tvp.getTag();
switch (nTag) {
case ValueTag.ELEMENT_NODE_TAG: {
tvp.getValue(cenp);
copyElement(tempEnb, db, ntp, cenp);
break;
}
case ValueTag.COMMENT_NODE_TAG:
case ValueTag.PI_NODE_TAG: