Generates a value that satisfies a predicate. This function keeps re-trying
by increasing the size of the original generator ad infinitum. Make sure there is a high chance that
the predicate is satisfied.