8 has over => (is => 'ro', required => 1);
10 has values => (is => 'ro', default => sub { {} });
12 sub key_list { sort keys %{$_[0]->values} }
15 my ($self, $key) = @_;
16 return $self->values->{$key};
21 return DX::ArrayStream->from_array($self->all);
26 my $values = $self->values;
27 my @ret = @{$values}{sort keys %$values};
32 my ($self, $value) = @_;
33 return ref($self)->new(%$self, values => { %{$self->values} })
38 my ($self, $value) = @_;
39 $self->values->{$value->${\$self->over}} = $value;
44 my ($self, $value) = @_;
45 delete $self->values->{ref($value) ? $value->${\$self->over} : $value};