code: public <T extends TextView> T searchFor(Callable<Collection<T>> viewFetcherCallback, String regex, int expectedMinimumNumberOfMatches, long timeout, boolean scroll) throws Exception {
  		final long endTime = SystemClock.uptimeMillis() + timeout;	
  		Collection<T> views;
  
  		while (true) {
  			final boolean timedOut = timeout > 0 && SystemClock.uptimeMillis() > endTime;
  
  			if(timedOut){
  				logMatchesFound(regex);
  				return null;
  			}
  
  			views = viewFetcherCallback.call();
  
  			for(T view : views){
  				if (RobotiumUtils.getNumberOfMatches(regex, view, uniqueTextViews) == expectedMinimumNumberOfMatches) {
  					uniqueTextViews.clear();
  					return view;
  				}
  			}
  			if(scroll && !scroller.scrollDown()){
  				logMatchesFound(regex);
  				return null; 
  			}
  			if(!scroll){
  				logMatchesFound(regex);
  				return null; 
  			}
  		}
  	}
docs: Searches for a {@code View} with the given regex string and returns {@code true} if the
  searched {@code View} is found a given number of times. Will not scroll, because the caller needs to find new
  {@code View}s to evaluate after scrolling, and call this method again.
  
  @param viewFetcherCallback callback which should return an updated collection of views to search
  @param regex the text to search for. The parameter <strong>will</strong> be interpreted as a regular expression.
  @param expectedMinimumNumberOfMatches the minimum number of matches expected to be found. {@code 0} matches means that one or more
  matches are expected to be found.
  @param timeout the amount of time in milliseconds to wait
  @param scroll whether scrolling should be performed
  
  @return {@code true} if a view of the specified class with the given text is found a given number of times.
  {@code false} if it is not found.
  
  @throws Exception not really, it's just the signature of {@code Callable}