docs: protected Attribute setAttributeFromRawValue(String name, AttributeType type, Object value) throws AttributeException {
  		AttributeValue oldValue = extractValueForSafe(name);
  		if (oldValue != null) {
  			if (oldValue.equals(value)) {
  				return null;
  			}
  			// Clone the value for avoid border effects.
  			oldValue = new AttributeValueImpl(oldValue);
  		}
  
  		final Attribute attr = new AttributeImpl(name, type);
  		attr.setValue(type.cast(value));
  
  		saveValue(name, attr);
  
  		this.cache.put(name, attr);
  
  		if (oldValue != null) {
  			fireAttributeChangedEvent(name, oldValue, attr);
  		} else {
  			fireAttributeAddedEvent(name, attr);
  		}
  
  		return attr;
  	}