The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package KiokuX::Model::Role::Annotations::Annotation;
use Moose::Role;

use namespace::clean;

with qw(KiokuX::Model::Role::Annotations::Annotation::API);

has subject => (
    isa => "Str|Object",
	reader => "_subject",
    required => 1,
);

sub subject { shift->_subject } # fucking role attributes

# ex: set sw=4 et:

__PACKAGE__

__END__

=pod

=head1 NAME

KiokuX::Model::Role::Annotations::Annotation - a role for annotation objects

=head1 SYNOPSIS

    package MyAnnotation;
    use Moose;

    with qw(KiokuX::Model::Role::Annotations::Annotation);



    # to create an annotation:
    MyAnnotation->new( subject => $object );

=head1 DESCRIPTION

This role implements the abstract
L<KiokuX::Model::Role::Annotations::Annotation::API> role (which requires just
a C<subject> method to return the key object), using an attribute.

=head1 ATTRIBUTES

=over 4

=item subject

A string or an object.

Required.

=back