The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Acme::Group;
use Moose;
use namespace::autoclean;
use XML::Toolkit;

has 'date_collection' => (
    isa         => 'ArrayRef[Acme::Date]',
    is          => 'ro',
    init_arg    => 'dates',
    traits      => [qw(XML Array)],
    lazy        => 1,
    auto_deref  => 1,
    default     => sub { [] },
    handles     => { add_date => ['push'] },
    description => {
        LocalName    => "date",
        Prefix       => "",
        node_type    => "child",
        Name         => "date",
        NamespaceURI => "",
        sort_order   => 0,
    },
);
has 'email_collection' => (
    isa         => 'ArrayRef[Acme::Email]',
    is          => 'ro',
    init_arg    => 'emails',
    traits      => [qw(XML Array)],
    lazy        => 1,
    auto_deref  => 1,
    default     => sub { [] },
    handles     => { add_email => ['push'] },
    description => {
        LocalName    => "email",
        Prefix       => "",
        node_type    => "child",
        Name         => "email",
        NamespaceURI => "",
        sort_order   => 1,
    },
);
has 'id' => (
    isa         => 'Str',
    is          => 'ro',
    traits      => ['XML'],
    description => {
        LocalName    => "id",
        Prefix       => "",
        node_type    => "attribute",
        Name         => "id",
        NamespaceURI => "",
        sort_order   => 2,
    },
);
has 'location_collection' => (
    isa         => 'ArrayRef[Acme::Location]',
    is          => 'ro',
    init_arg    => 'locations',
    traits      => [qw(XML Array)],
    lazy        => 1,
    auto_deref  => 1,
    default     => sub { [] },
    handles     => { add_location => ['push'] },
    description => {
        LocalName    => "location",
        Prefix       => "",
        node_type    => "child",
        Name         => "location",
        NamespaceURI => "",
        sort_order   => 3,
    },
);
has 'mailing_list_collection' => (
    isa         => 'ArrayRef[Acme::Mailing_list]',
    is          => 'ro',
    init_arg    => 'mailing_lists',
    traits      => [qw(XML Array)],
    lazy        => 1,
    auto_deref  => 1,
    default     => sub { [] },
    handles     => { add_mailing_list => ['push'] },
    description => {
        LocalName    => "mailing_list",
        Prefix       => "",
        node_type    => "child",
        Name         => "mailing_list",
        NamespaceURI => "",
        sort_order   => 4,
    },
);
has 'name_collection' => (
    isa         => 'ArrayRef[Acme::Name]',
    is          => 'ro',
    init_arg    => 'names',
    traits      => [qw(XML Array)],
    lazy        => 1,
    auto_deref  => 1,
    default     => sub { [] },
    handles     => { add_name => ['push'] },
    description => {
        LocalName    => "name",
        Prefix       => "",
        node_type    => "child",
        Name         => "name",
        NamespaceURI => "",
        sort_order   => 5,
    },
);
has 'status' => (
    isa         => 'Str',
    is          => 'ro',
    traits      => ['XML'],
    description => {
        LocalName    => "status",
        Prefix       => "",
        node_type    => "attribute",
        Name         => "status",
        NamespaceURI => "",
        sort_order   => 6,
    },
);
has 'tsar_collection' => (
    isa         => 'ArrayRef[Acme::Tsar]',
    is          => 'ro',
    init_arg    => 'tsars',
    traits      => [qw(XML Array)],
    lazy        => 1,
    auto_deref  => 1,
    default     => sub { [] },
    handles     => { add_tsar => ['push'] },
    description => {
        LocalName    => "tsar",
        Prefix       => "",
        node_type    => "child",
        Name         => "tsar",
        NamespaceURI => "",
        sort_order   => 7,
    },
);
has 'web_collection' => (
    isa         => 'ArrayRef[Acme::Web]',
    is          => 'ro',
    init_arg    => 'webs',
    traits      => [qw(XML Array)],
    lazy        => 1,
    auto_deref  => 1,
    default     => sub { [] },
    handles     => { add_web => ['push'] },
    description => {
        LocalName    => "web",
        Prefix       => "",
        node_type    => "child",
        Name         => "web",
        NamespaceURI => "",
        sort_order   => 8,
    },
);
1;

__END__