package Class::Privacy::MethodProxy; use Class::Privacy; use strict; use vars qw/$AUTOLOAD/; no warnings; sub isa { my $obj = shift; my $class = shift; return $obj->UNIVERSAL::isa($class) unless CORE::ref $obj eq 'Class::Privacy::MethodProxy'; return Class::Privacy::_get_hidden($obj)->isa($class); } sub can { my $obj = shift; my $method = shift; return $obj->can($method) unless CORE::ref $obj eq 'Class::Privacy::MethodProxy'; return Class::Privacy::_get_hidden($obj)->can($method); } sub AUTOLOAD { my $self = shift; my $method = $AUTOLOAD; $method =~ s/.*:://; return if $method eq 'DESTROY'; Class::Privacy::_privacy_check($self, Class::Privacy::_get_hidden($self), 0, $method); no strict 'refs'; Class::Privacy::_get_hidden($self)->$method(@_); } 1;