Summary
-------
AttributeMapper's type parameter `A` is now bounded by `Attribute<A>`.
Problem
-------
AttributeMapper's type parameter `A` is supposed to be bounded by `Attribute<A>` but is not declared so.
Solution
--------
Make it bounded by `Attribute<A>`. This only affects one use site in implementation that it no longer needs to cast a user AttributeMapper return value to `Attribute<?>`; other places that can access AttributeMapper, such as `Attribute::attributeMapper`, already bounds the returned type argument.
Note this change affects method descriptors, so technically the `readAttribute` and `writeAttribute` methods are now removed and re-added due to descriptor update from `Object` to `Attribute`.
Specification
-------------
-public interface AttributeMapper<A> {
+public interface AttributeMapper<A extends Attribute<A>> {