code: @Override
  	public final String initValues(final FieldCase c) {
  		if (valueCallback != null) {
  			String v = valueCallback.getImmutableValue();
  			if (v != null) {
  				return v;
  			}
  		}
  		if (!init) {
  			if (c == FieldCase.BLANK) {
  				String v;
  				try {
  					v = initValuesImpl(FieldCase.AVG);
  				} catch (Exception e) {
  					throw new IllegalStateException(this + " could not generate value", e);
  				}
  				if (v != null) {
  					StringBuffer b = new StringBuffer(v.length());
  					for (int i = 0; i < v.length(); i++) {
  						b.append(' ');
  					}
  					value = b.toString();
  				}
  			} else {
  				try {
  					long newToken = generator.getCurrentToken();
  					if (token != -1 && token < newToken) {
  						throw new IllegalStateException(this + " is called for the second time within its initialization");
  					}
  					token = newToken;
  					value = initValuesImpl(c);
  				} catch (Exception e) {
  					throw new IllegalStateException(this + " could not generate value", e);
  				} finally {
  					token = -1;
  				}
  				if (c == FieldCase.NULL) {
  					value = null;
  				}
  			}
  		}
  		init = true;
  		return value;
  	}
docs: Is usually called by the getValue() method of the constraint class to get the value of the
  constraint. However, the method can also be called directly, for example if certain field
  have to be generated. Calling the method repeatedly is ineffective as long as no reset has
  been executed - the value is retained.