sub SPLICE { my $self = shift; $self->SUPER::SPLICE(@_); croak "Cannot be empty" if 0 == @$self } sub SHIFT { my $self = shift; croak "Cannot be empty" if 1 == @$self; $self->SUPER::SHIFT(@_) } sub POP { my $self = shift; croak "Cannot be empty" if 1 == @$self; $self->SUPER::POP(@_) }