The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use MooseX::DefClass;

class Foo {
    method foo {}

    class Bar {
        method bar {}
    }

    class Baz {
        method baz {}
    }
}

role Role {
    requires 'required_thing';
    method role {}
}

class Moo::Kooh {
    extends 'Foo';
    with 'Role';

    method kooh {}
    method required_thing {}
}

class Corge extends Foo::Bar with Role {
    method corge {}
    method required_thing {}
}

class Quux extends Corge is immutable {
    method quux {}
}

1;