TypeElevation.mergeAll() previously searched specifically for PanelTypeElevation objects. As a result, merge did not work correctly for non-panel systems extending TypeElevation.
mergeAll() now delegates candidate selection to collectMergers(). This allows the base class to support non-panel type elevations while retaining panel-specific behavior in PanelTypeElevation.
The change is additive, so most subclasses require no source updates. A subclass that already declares a member named collectMergers may now conflict with or override the inherited method. If the method is intended to customize merging, update it to the compatible signature:
extend public void collectMergers(TypeElevation{} mergers)
Otherwise, rename the existing member to avoid the inherited interface.
Calling mergeAll() on a non-panel TypeElevation now collects split TypeElevation objects and removes them before inserting the merged elevation. This replaces the previous panel-only search.
The base implementation can collect split elevations belonging to other TypeElevation subclasses in the same space. Extensions whose elevation objects must only merge with the same product, system, or subclass should override collectMergers() and append only compatible objects to the supplied set. PanelTypeElevation already does this to retain panel-only merging.