code: public static void visitList(Manager manager, String pattern, Set<SimonType> types, SimonVisitor visitor) throws IOException {
  		List<Simon> simons = new ArrayList<>(manager.getSimons(SimonPattern.create(pattern)));
  		Collections.sort(simons, new Comparator<Simon>() {
  			public int compare(Simon s1, Simon s2) {
  				return s1.getName().compareTo(s2.getName());
  			}
  		});
  		for (Simon simon : simons) {
  			SimonType lType = SimonTypeFactory.getValueFromInstance(simon);
  			if (types == null || types.contains(lType)) {
  				visitor.visit(simon);
  			}
  		}
  	}
docs: Visit simons as a list.
  Calls {@link Manager#getSimons(org.javasimon.SimonFilter)} method
  then Simons are sorted by name and filtered by type
  finally the visitor is called on each of them.
  
  @param manager Simon manager
  @param pattern Pattern
  @param types set of Simon types
  @param visitor Visitor
  @throws IOException