}
while (true) {
// invariant: if (tLeft > 0) then (ti < target.length)
if (pLeft > tLeft) return FuzzyBoolean.NO;
FuzzyBoolean ff = patternChar.matches(target[ti], kind);
if (ff.maybeTrue()) {
FuzzyBoolean xx = outOfStar(pattern, target, pi+1, ti+1, pLeft-1, tLeft-1, starsLeft, kind);
if (xx.maybeTrue()) return ff.and(xx);
}
ti++; tLeft--;
}