Coupling traits/activities that aren't directly related makes the code harder to modify and extend. In OpenRA we avoid this wherever possibly by calling these functions via an interface.  You've already fixed this up for the Demolish part, so leaving this half of the logic tied to BridgeHut is an odd choice.  This is partly to allow more than one trait to implement them, and partly because it forces people to think about the interface they are exposing, and hopefully do it sensibly.

A concrete (heh) example of where this could be a problem in the future is tunnel portals: if we wanted to make them IDemolishable we would need to add a second check here, vs just setting AllowDemolish within the portal trait.

Another example is the spy, which had special case all over the place, and caused a bunch of trouble when I was refactoring the rendering code. This wouldn't have been nearly as much of a problem if there were a minimal interface for determining the effective player-stance towards a unit, but instead everything that did an ownership check had to check for spys themselves.