code: public IconProviderBuilder withValue(Object value, Icon icon)
  	{
  		if (currentProperty == null)
  			throw new IllegalStateException("You must set the property first.");
  		if (!currentProperty.getAllowedValues().contains(value))
  			throw new IllegalStateException("The property " + currentProperty + "(" + currentProperty.getClass().getSimpleName()
  					+ ") doesn't not contain value " + value);
  
  		stateIcons.put(currentProperty, value, checkNotNull(icon));
  		return this;
  	}
docs: Sets the {@link Icon} to use for the state value.<br>
  {@link #forProperty(IProperty)} must be called before with the corresponding {@link IProperty}.
  
  @param value the value
  @param icon the icon
  @return the icon provider builder