No custom coderefs created or passed to custom accessors now; let people do what they need to do on their own. The attribute metaclass is stashed in $_, and we've provided 3 convenience methods to help interact with the associated class' meta-instance class.
Adding an instance type constraint to an attribute can be done easily with: isa => 'PackageName', ...however, this is suboptimal, for reasons discussed at significant length and volume elsewhere on the interwebs. Instead, you could do: use Moose::TypeConstraints 'class_type'; # ... isa => class_type('PackageName'), ...but that's wordy, and for some reason, confuses my simple little brain. Given that what we're trying to express is "the value this attribute holds isa instance of the PackageName class", why not just say that? isa_instance_of => 'PackageName', Voila. Also a little wordy, but completely encapsulated inside the attribute, non-confusing to me, clearly expresses the intent of the author.
We were only documenting and using a subset of it, and with the recent changes we need to keep a tighter control over it. This will also allow us to refine how we handle this down the road.
With the change from hashref to arrayref in MX::CoercePerAttribute 1.000, the stringification heuristics changed enough to throw off our constraint check. We now explicitly check to ensure that coerce is not a reference before trying to do anything with it. So that was a fun bug to diagnose.
Completely not comprehensive, and uses the older hashref syntax. This is, at the moment, more to check that the warning MXCPA issues now than anything else... But will be a good point to start at when incorporating the MXCPS functionality directly.