add operator while

Time: 238 ms, Memory: 21.00Mb
OK (258 tests, 260 assertions)

Change-Id: If93ace77f6145b42289207e6091cf6a3617b32aa