use MooseX::Adopt::Class::Accessor::Fast; use Test::More tests => 1; { package Class::Accessor::Chained::Fast; use strict; use base 'Class::Accessor::Fast'; sub make_accessor { my($class, $field) = @_; return sub { my $self = shift; if(@_) { $self->{$field} = (@_ == 1 ? $_[0] : [@_]); return $self; } return $self->{$field}; }; } } { package TestPackage; use base qw/Class::Accessor::Chained::Fast/; __PACKAGE__->mk_accessors('foo'); } my $i = bless {}, 'TestPackage'; my $other_i = $i->foo('bar'); is($other_i, $i, 'Accessor returns instance as opposed to value.');