code: private <T extends ProgramElementDoc> List<T> filterByVisibility(T[] docs, Visibility visibility) {
  	if (visibility == Visibility.PRIVATE)
  	    return Arrays.asList(docs);
  
  	List<T> filtered = new ArrayList<T>();
  	for (T doc : docs) {
  	    if (Visibility.get(doc).compareTo(visibility) > 0)
  		filtered.add(doc);
  	}
  	return filtered;
      }
docs: Returns all program element docs that have a visibility greater or
  equal than the specified level