code: public <Solution> Collection<Variable<Solution, ?>> createFromGetters(
  			Class<Solution> solutionClass) {
  		Collection<Variable<Solution, ?>> variables = new LinkedList<>();
  		for (Method method : solutionClass.getMethods()) {
  			if (isGetter(method)) {
  				String name = method.getName().substring(3);
  				variables.add(createVariableOn(solutionClass, method, name,
  						method.getReturnType()));
  			} else {
  				// not a getter, ignore it
  			}
  		}
  		return variables;
  	}
docs: This method retrieves all the values accessible through a getter (
  <code>getX()</code> method) in order to build the corresponding set of
  {@link Variable}s. Notice that {@link Variable}s are supposed to
  represent the fundamental description of a {@link Solution}, so if the
  {@link Solution} has computation or other additional methods which are
  named as getters, they will also be retrieved as {@link Variable}s. In
  such a case, you should filter the returned {@link Variable}s, rely on
  more advanced methods, or generate the {@link Variable}s manually.
  
  @param solutionClass
  the {@link Solution} class to analyze
  @return the set of {@link Variable}s retrieved from this class
  @see #createFromGettersAndSetters(Class)
  @see #createFromGettersAndConstructors(Class)