--- /dev/null
+package ClassicObject;
+
+sub new {
+ my ($class, %args) = @_;
+ bless \%args, 'ClassicObject';
+}
+
+sub connect { 'a' }
+
+1;
--- /dev/null
+package MooObjectWithDelegate;
+use ClassicObject;
+use Moo;
+
+has 'delegated' => (
+ is => 'ro',
+ isa => sub {
+ do { $_[0] && blessed($_[0]) }
+ or die "Not an Object!";
+ },
+ lazy => 1,
+ builder => '_build_delegated',
+ handles => [qw/connect/],
+);
+
+sub _build_delegated {
+ my $self = shift;
+ return ClassicObject->new;
+}
+
+around 'connect', sub {
+ my ($orig, $self, @args) = @_;
+ return $self->$orig(@args) . 'b';
+};
+
+
+1;
--- /dev/null
+use strictures 1;
+use Test::More;
+use lib qw(t/lib);
+
+use_ok 'MooObjectWithDelegate';
+
+{
+ package MooObjectWithDelegate;
+ use Moo;
+
+ around 'connect', sub {
+ my ($orig, $self, @args) = @_;
+ return $self->$orig(@args) . 'c';
+ };
+}
+
+ok my $moo_object = MooObjectWithDelegate->new,
+ 'got object';
+
+is $moo_object->connect, 'abc',
+ 'got abc';
+
+done_testing;