private void dump(REntity e,int depth){
Iterator<RName> anames = e.getAttributeIterator();
while(anames.hasNext()){
try {
RName aname = anames.next();
IRObject value = e.get(aname);
dtstate.traceTagBegin("attribute", "name",aname.stringValue(),"type",getType(e,aname));
switch(e.getEntry(aname).type){
case IRObject.iEntity: {
if(value.type()==IRObject.iNull){
dtstate.traceInfo("value","type","null","value","null",null);
break;
}
dtstate.traceTagBegin("entity",
"name", ((REntity)value).getName().stringValue(),
"id", printIds ? ((REntity)value).getID()+"" : "");
if(!(boundries.get(e)!= null && boundries.get(e).contains(value))){
dtstate.debug(" recurse\n");
}else{
if(boundries.get(e)==null)boundries.put(e, new ArrayList());
boundries.get(e).add(value);
dump((REntity)value, depth+1);
}
dtstate.traceTagEnd();
break;
}
case IRObject.iArray: {
ArrayList values = value.arrayValue();
Iterator iv = values.iterator();
while(iv.hasNext()){
IRObject v = (IRObject) iv.next();
if(v.type()==IRObject.iEntity){
dump((REntity)v,depth+2);
}else{
dtstate.traceInfo("value","v",v.stringValue(),null);
}
}
break;
}
default : {