code: private void invokeValueChangeListeners(
              final Collection<AbstractHtml5SharedObject> sharedObjects) {
  
          for (final AbstractHtml5SharedObject sharedObject : sharedObjects) {
              final AttributeValueChangeListener valueChangeListener = sharedObject
                      .getValueChangeListener(ACCESS_OBJECT);
              if (valueChangeListener != null) {
  
                  // ownerTags should not be modified in the consuming
                  // part, here
                  // skipped it making unmodifiable to gain
                  // performance
                  final AttributeValueChangeListener.Event event = new AttributeValueChangeListener.Event(
                          this, ownerTags);
                  valueChangeListener.valueChanged(event);
              }
          }
  
          if (valueChangeListeners != null) {
              for (final AttributeValueChangeListener listener : valueChangeListeners) {
                  final AttributeValueChangeListener.Event event = new AttributeValueChangeListener.Event(
                          this, Collections.unmodifiableSet(ownerTags));
                  listener.valueChanged(event);
              }
          }
  
      }
docs: this method should be called after changing of attribute value not before
  changing value