code: private void addChildren(ArrayList<View> views, ViewGroup viewGroup, boolean onlySufficientlyVisible) {
  		if(viewGroup != null){
  			for (int i = 0; i < viewGroup.getChildCount(); i++) {
  				final View child = viewGroup.getChildAt(i);
  
  				if(onlySufficientlyVisible && isViewSufficientlyShown(child)) {
  					views.add(child);
  				}
  
  				else if(!onlySufficientlyVisible && child != null) {
  					views.add(child);
  				}
  
  				if (child instanceof ViewGroup) {
  					addChildren(views, (ViewGroup) child, onlySufficientlyVisible);
  				}
  			}
  		}
  	}
docs: Adds all children of {@code viewGroup} (recursively) into {@code views}.
  
  @param views an {@code ArrayList} of {@code View}s
  @param viewGroup the {@code ViewGroup} to extract children from
  @param onlySufficientlyVisible if only sufficiently visible views should be returned