##
my $subobj = $obj->subclass();
# or, better, my $subobj = $obj->subclass_clone();
####
my $subobj = $obj->clone_into('Class::SubClass');
# ...
sub clone_into {
my ($self, $subclass) = @_;
return $subclass->new(%$self);
}
####
my $subobj = Class::SubClass->new(%$obj);
####
my $subobj = Class::SubClass->clone_from($obj);
# ...
sub clone_from {
my ($package, $base) = @_;
return $package->new(%$base);
}