code: public void fireLayerAttributeChangedEvent(String attributeName, Object oldValue, Object newValue) {
  		if (isEventFirable()) {
  			final AttributeChangeEvent.Type eType;
  			if (oldValue == null && newValue != null) {
  				eType = AttributeChangeEvent.Type.ADDITION;
  			} else if (oldValue != null && newValue == null) {
  				eType = AttributeChangeEvent.Type.REMOVAL;
  			} else {
  				eType = AttributeChangeEvent.Type.VALUE_UPDATE;
  			}
  			final AttributeChangeEvent e = new AttributeChangeEvent(
  					this,
  					eType,
  					attributeName,
  					new AttributeValueImpl(oldValue),
  					attributeName,
  					new AttributeValueImpl(newValue));
  			final MapLayerAttributeChangeEvent le = new MapLayerAttributeChangeEvent(this, e);
  			fireLayerAttributeChangedEvent(le);
  		}
  	}
docs: Forward to the parent layer the event that indicates the content of a child layer was changed.
  Only the {@link MapLayerListener} and the container are notified.
  
  @param attributeName is the name of the changed attribute.
  @param oldValue is the old value of the attribute.
  @param newValue is the new value of the attribute.