Thank you for those explanations, that’s very informative!
Just actually I’d have no need for such coexistence of helpers, but as we all know (I guess) such may change quickly.
Actually I’d only need one unit (let’s call it uTreeviewDrawHelper) to which a longer code is emigrated having only a few changes of the standard drawing (from TCustomTreeView.DoPaintNode)
and which is activated by one single procedure call for:
TOpenTreeView = class helper for TTreeView
public
procedure TreeViewH_AdvCustDrawItem_Hovered(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean;
bPreserveLastHoveredIdxMSStyle, bIsHotInStateFix: Boolean);
Tomorrow (so I understand so far) with $modeswitch multihelpers another app could use, coexistencely with this unit, another unit “B” adding, via TOpenTreeView, additional/other functionality. That’s good to know. I already was wondering momentarily, what’s about now if I’d need another helper.

In the “helper” I see the possiblity not to e dependent on that the code is part of a full coded component.
Any vetos against the approach?