action.checkPermittedContents(parentType, env, false);
}
public TailCall processLeavingTail(XPathContext context) throws XPathException {
Controller controller = context.getController();
SequenceIterator iter = select.iterate(context);
XPathContextMajor c2 = context.newContext();
c2.setOrigin(this);
c2.setCurrentIterator(iter);
c2.setCurrentTemplateRule(null);
if (containsTailCall) {
if (controller.isTracing()) {
TraceListener listener = controller.getTraceListener();
Item item = iter.next();
if (item == null) {
return null;
}
listener.startCurrentItem(item);
TailCall tc = ((TailCallReturner)action).processLeavingTail(c2);
listener.endCurrentItem(item);
return tc;
} else {
Item item = iter.next();
if (item == null) {
return null;
}
return ((TailCallReturner)action).processLeavingTail(c2);
}
} else {
if (controller.isTracing()) {
TraceListener listener = controller.getTraceListener();
while(true) {
Item item = iter.next();
if (item == null) {
break;
}
listener.startCurrentItem(item);
action.process(c2);
listener.endCurrentItem(item);
}
} else {
while(true) {
Item item = iter.next();
if (item == null) {
break;
}
action.process(c2);
}