if ( ! doFull ) {
Set <String> done = new HashSet<String>();
if ( nl != null ) for (int i = 0; i< nl.getLength(); i++ ) {
Node node = nl.item(i);
if (node.getNodeType() == node.ELEMENT_NODE && ( ! done.contains(node.getNodeName())) ) {
<BUG>doDebug(d,"Going down the rabbit hole path="+path+" node="+node.getNodeName());
</BUG>
recurse(tm, addSlash(path)+node.getNodeName(),node,doFull,d);
<BUG>doDebug(d,"Back from the rabbit hole path="+path+" node="+node.getNodeName());
</BUG>
done.add(node.getNodeName());

if ( ! doFull ) {
Set <String> done = new HashSet<String>();
if ( nl != null ) for (int i = 0; i< nl.getLength(); i++ ) {
Node node = nl.item(i);
if (node.getNodeType() == node.ELEMENT_NODE && ( ! done.contains(node.getNodeName())) ) {
if ( DF ) doDebug(d,"Going down the rabbit hole path="+path+" node="+node.getNodeName());
recurse(tm, addSlash(path)+node.getNodeName(),node,doFull,d);
if ( DF ) doDebug(d,"Back from the rabbit hole path="+path+" node="+node.getNodeName());
done.add(node.getNodeName());
