package Data::MultiValued::TagContainerForRanges; use Moose; use MooseX::Types::Moose qw(HashRef); use Moose::Util::TypeConstraints; use Data::MultiValued::RangeContainer; extends 'Data::MultiValued::TagContainer'; has '+_storage' => ( isa => HashRef[class_type('Data::MultiValued::RangeContainer')], ); has '+_default_tag' => ( isa => class_type('Data::MultiValued::RangeContainer'), ); sub _create_new_inferior { Data::MultiValued::RangeContainer->new(); } sub _rebless_storage { my ($self) = @_; bless $self->{_storage},'Data::MultiValued::RangeContainer'; bless $self->{_default_tag},'Data::MultiValued::RangeContainer'; return; } sub _as_hash { my ($self) = @_; my %st = %{$self->_storage}; my %dt = %{$self->_default_tag}; return { _storage => \%st, _default_tag => \%dt, }; } 1;