+while (my ($browser, $target) = each %BROWSERJOIN) {
+ my $agent1 = delete $data->{agents}->{$browser} or next;
+ my $agent2 = $data->{agents}->{$target} or next;
+ splice @{ $agent2->{versions} }, -3, 3, @{ $agent1->{versions} };
+ $agent2->{browser} = sprintf '%s (former %s)',
+ $agent1->{browser}, $agent2->{browser};
+
+ for (values %{ $data->{data} }) {
+ my $stats = delete $_->{stats}->{$browser} or next;
+ $_ = { %{$_}, %{$stats} } for $_->{stats}->{$target};
+ }
+}
+