{ package MooseX::ClassCompositor::OnAcid; use Moose; extends qw( MooseX::ClassCompositor ); around class_for => sub { my $orig = shift; my $self = shift; my @roles = map { ref($_) eq q(HASH) ? 'Moose::Meta::Role'->create_anon_role(methods => $_) : $_ } @_; $self->$orig(@roles); }; } { package Foo; use Moose::Role; requires '_build_bar'; } my %methods = ( _build_bar => sub {"foo"}, ); my $class = MooseX::ClassCompositor::OnAcid->new( { class_basename => 'Test' } )->class_for('Foo', \%methods); print $class->new->dump;