##
sub mylol {
my $self = shift;
local $self->{data} = { newdata => 1 };
super();
# $self->{data} is restored here
};
####
package Moose;
...
our $SUPER_PACKAGE;
our $SUPER_BODY;
our @SUPER_ARGS;
sub super {
# This check avoids a recursion loop - see
# t/bugs/super_recursion.t
return if defined $SUPER_PACKAGE && $SUPER_PACKAGE ne caller();
return unless $SUPER_BODY; $SUPER_BODY->(@SUPER_ARGS);
}