if (__eval.isInterrupted()) {
throw new InterruptException(__eval.getStackTrace(), __eval.getCurrentAST().getLocation());
}
if (gens[i].hasNext()) {
if (!gens[i].next()) {
return new BoolResult(TF.boolType(), __eval
.__getVf().bool(false), __eval);
}
if (i == size - 1) {
__eval.unwind(olds[i]);
__eval.pushEnv();
} else {
i++;
gens[i] = producers.get(i).getBacktracker(__eval);
gens[i].init();
olds[i] = __eval.getCurrentEnvt();
__eval.pushEnv();
}
} else {
__eval.unwind(olds[i]);
i--;
}
}
} finally {
__eval.unwind(old);
}
return new BoolResult(TF.boolType(), __eval.__getVf().bool(true),
__eval);
}