public XQExpression visit(PIConstructor constructor, XQueryContext ctxt) throws XQueryException {
boolean isLoopInvariant = true;
String target = constructor.getTarget();
if(target == null) {
XQExpression t = constructor.getTargetExpr();
t.visit(this, ctxt);
isLoopInvariant &= t.isLoopInvariant();
}
String content = constructor.getContent();
if(content == null) {
XQExpression c = constructor.getContentExpr();
c.visit(this, ctxt);
isLoopInvariant &= c.isLoopInvariant();
}
if(isLoopInvariant) {
XQExpression t = constructor.getTargetExpr();
if(t != null) {
removeInvariants(t);
}
XQExpression c = constructor.getContentExpr();
if(c != null) {
removeInvariants(c);
}
return hookLoopInvariant(constructor);
}