outer: while (System.currentTimeMillis() - startTime < context.timeout && !candidates.first().isMinimal()) {
for (final ParseStep candidateStep : candidates) {
if (exhausted.contains(candidateStep)) {
continue;
}
final ParseStep nextStep = picker.pickNext(subContext, candidateStep);
if (nextStep != null && nextStep.result.isSuccess()) {
lastParseStepCount++;
if (dumpSteps) {
System.out.println(lastParseStepCount + "\t" + nextStep);
}