code: private static <T> List<Method> getMethods(Class<T> type, String... names) {
  
  		Assert.notNull(type, "Missing class to search for methods!");
  		Assert.notNullOrEmpty(names, "Missing method names to search for!");
  
  		Map<String, Method> candidates = new HashMap<>();
  		for (Method method : type.getMethods()) {
  
  			if (Modifier.isStatic(method.getModifiers()) &&
  			    method.getReturnType().equals(type) &&
  			    method.getParameterTypes().length == 1 &&
  			    method.getParameterTypes()[0].isAssignableFrom(String.class)) {
  
  				candidates.put(method.getName(), method);
  			}
  		}
  
  		List<Method> output = new ArrayList<>();
  
  		// go in order desired
  		for (String name : names) {
  			if (candidates.containsKey(name)) {
  				output.add(candidates.get(name));
  			}
  		}
  
  		return output;
  	}
docs: Get methods in order desired to invoke them one by one until match or fail
  
  @param type  desired
  @param names of methods in order
  @param <T>   class to search for methods
  @return method list to use