+ warn "FIXME later didn't change single_sw_port_visible = ",dump( \@single_sw_port_visible ),$/;
+
+ my $did_patch = 0;
+
+ foreach my $single ( @single_sw_port_visible ) {
+ my ( $sw, $port, $visible ) = @$single;
+ foreach my $port ( keys %{ $s->{$visible} } ) {
+ # check back in original full map to see if it was visible
+ my @visible = @{ $stat->{_sw_port_sw}->{$visible}->{$port} };
+ if ( scalar grep(/$sw/,@visible) ) {
+ warn "PATCH $visible $port -> $sw ONLY";
+ $stat->{_found}->{$sw} = "$visible $port";
+ delete $s->{$visible}->{$port};
+ $did_patch++;
+ $d = dump($s);
+ warn "PATCHED _found = ", dump($stat->{_found});
+ warn "PATCHED s = $d\n";
+ $later = $s;
+ goto UNIQUE_LATER;
+ } else {
+ die "fatal inconsistency - dungeon colapses, you die";
+ }
+ }
+ }
+ warn "## applied $did_patch patches to unblock\n";
+
+ last if $d eq $last_later;
+