NestWhile
NestWhile[f, expr, test, m, max, n] applies f to expr until test does not return True.
test is a function that takes as its argument the last m results. max denotes the maximum number of applications
of f and n denotes that f should be applied another n times after test has terminated the recursion.
Attributes[NestWhile] := {Protected}