unless (ref $self) { my $class = ref($self) || $self; # Check whether we can clone. Only the SAME class allowed, no inheritance $self = ref($soap) eq $class ? $soap->clone : { _transport => SOAP::Transport->new, _serializer => SOAP::Serializer->new, _deserializer => SOAP::Deserializer->new, _packager => SOAP::Packager::MIME->new, _schema => undef, _autoresult => 0, _on_action => sub { sprintf '"%s#%s"', shift || '', shift }, _on_fault => sub {ref $_[1] ? return $_[1] : Carp::croak $_[0]->transport->is_success ? $_[1] : $_[0]->transport->status}, };