* Pass key/index as first block arg to :class and :extend
class: |key, hsh|


document `XML::AttributeHash` etc

* cleanup ReadableWriteable
* deprecate Representable::*::ClassMethods (::from_hash and friends)

* Song < OpenStruct in test_helper

* have representable-options (:include, :exclude) and user-options

* make all properties "Object-like", even arrays of strings etc. This saves us from having `extend ObjectBinding if typed?` and we could just call to_hash/from_hash on all attributes. performance issues here? otherwise: implement!


def compile_fragment(doc)
module ReaderWriter
  def compile_fragment(doc)
    do whatever
    super
  end
=> do that for all "features" (what parts would that be?: getter/setter, reader/writer, readable/writeable )?

* make lambda options optional (arity == 0)

* pass args to methods when arity matches

* DISCUSS if Decorator.new.representable_attrs != Decorator.representable_attrs ? (what about performance?)
* REMOVE :from, make :a(lia)s authorative.

* does :instance not work with :decorator ?
* make it easy to override Binding#options via #to_hash(whatever: {hit: {decorator: HitDecorator}})

* DISCUSS: should inline representers be created at runtime, so we don't need ::representer_engine?
* deprecate `Decorator::Coercion`.

* cleanup XML so it matches the current #serialize standard.
