+ foreach my $island (sort keys %dbisland2arch) {
+ my $node= $wiisland2node{$island};
+ if (!defined $node) {
+ error("would delete island: $island");
+ next;
+ }
+ my $ccix= $wiarchs->connected_component_by_vertex($node);
+ my $wiarch= $wiccix2arch{$ccix};
+ if (!defined $wiarch) {
+ error("island has no arch: $island");
+ next;
+ }
+ my $dbarch= $dbisland2arch{$island};
+ my $wiarch= winode2arch($node);
+ if ($wiarch ne $dbarch) {
+ change("change archipelago from $dbarch to $wiarch".
+ " for island $island");
+ }
+ }
+ foreach my $island (sort keys %wiisland2node) {
+ my $dbarch= $dbisland2arch{$island};
+ if (!defined $dbarch) {
+ my $wiarch= wiisland2arch($island);
+ if (!defined $wiarch) {
+ error("new island has no arch: $island");
+ next;
+ # We check arches of non-new islands above
+ }
+ change("new island in $wiarch: $island");
+ }
+ }