-  my $password;
-  if ($variable && ('Form' eq ref $variable) && defined $variable->{password}) {
-    $password             = $variable->{password};
-    $variable->{password} = 'X' x 8;
+    foreach my $entry (@{ $src }) {
+      my $exists = !!$dumped->{refaddr($entry) // ''};
+      push @{ $dumped->{$addr} }, clone_for_dump($entry, $dumped);
+
+      weaken($dumped->{$addr}->[-1]) if $exists;
+
+    }
+
+  } elsif (ref($src) =~ m{^(?:HASH|Form|SL::.+)$}) {
+    $dumped->{$addr} = {};
+
+    foreach my $key (keys %{ $src }) {
+      my $exists             = !!$dumped->{refaddr($src->{$key}) // ''};
+      $dumped->{$addr}->{$key} = clone_for_dump($src->{$key}, $dumped);
+
+      weaken($dumped->{$addr}->{$key}) if $exists;
+    }