support Property instead of Predicate in takeWhile, add tests for Property.takeWhile