package TM::Serializable::Dumper;

use Class::Trait 'base';
use Class::Trait 'TM::Serializable';

use Data::Dumper;

sub serialize {
    my $self = shift;
    use Data::Dumper;

    my $s;
    {
	local $Data::Dumper::Purity = 1;
	$s = Data::Dumper->Dump ([$self], ['tm']);         # NB: we have recursive data structures
    }
    return $s;
}

sub deserialize {
    my $self = shift;
    my $s    = shift;
    my $tm;
    eval $s;
    $self->melt ($tm);
}

1;