use Moose::Role;
-our $VERSION = '0.00100';
+our $VERSION = '0.00200';
=head1 NAME
=head1 METHODS
+=head2 new %args
+
+Extend the default Moose constructor to emulate the behavior of C::A::F and
+store arguments in the instance hashref.
+
+=cut
+
+around new => sub{
+ my $orig = shift;
+ my $class = shift;
+ my %args;
+ if (scalar @_ == 1 && defined $_[0] && ref($_[0]) eq 'HASH') {
+ %args = %{$_[0]};
+ } else {
+ %args = @_;
+ }
+ my $self = $class->$orig(@_);
+ my @extra = grep { !exists($self->{$_}) } keys %args;
+ @{$self}{@extra} = @args{@extra};
+ return $self;
+};
+
=head2 mk_accessors @field_names
Create read-write accessors. An attribute named C<$field_name> will be created.