From your design, there are three layers of assigning values to attributes, with one taking precedence over the other in the order they are listed below. They should be clearly explained:

* value specified via `attributes`
* value specified via `attributeValue`
* value specified via `defaultValue`