@throws nullpointerexception if either argument is null
@param predicate the predicate to use as an end of loop test, not null
@param e <> the type that the closure acts on
@param closure the closure to call repeatedly, not null
file : https_github_com_apache_commons-collections_git/src/main/java/org/apache/commons/collections4/ClosureUtils.java