I've just released MooseX::ABCD which works like MooseX::ABC but plays
nicer with MooseX::Declare.
The difficulty with the way MooseX::ABC works is that it checks that
required methods have been implemented by derived classes when the
inheritance is set up. However, MooseX::Declare sets up inheritance
*before* processing the body of the class, thus none of the class'
methods are defined yet.
MooseX::ABCD fixes this by deferring the check for required methods until
the derived class is made immutable. This allows it work with
MooseX::Declare. It also means that MooseX::ABCD has a bug (or perhaps
feature?) that if a class is mutable, the 'requires' checks do not
happen. However, MooseX::Declare makes classes mutable by default.