type = ((ItemChecker)next).getRequiredType();
next = ((ItemChecker)next).getBaseExpression();
}
if ((next.getImplementationMethod() & PROCESS_METHOD) != 0 && !(type instanceof DocumentNodeTest)) {
SequenceReceiver out = context.getReceiver();
TypeCheckingFilter filter = new TypeCheckingFilter();
filter.setUnderlyingReceiver(out);
filter.setPipelineConfiguration(out.getPipelineConfiguration());
filter.setRequiredType(type, requiredCardinality, role, this);
context.setReceiver(filter);
next.process(context);
try {
filter.close();
} catch (XPathException e) {
e.maybeSetLocation(this);
throw e;
}
context.setReceiver(out);