in reply to lvalue trickery

sub val : lvalue { $_[0]->{val}->{one} }
change it to:
sub val : lvalue { $_[0]->{val}->{one} = undef unless exists $_[0]->{val}->{one}; $_[0]->{val}->{one}; }