anchor.diff:  implementation
   
   uses
  -  System.SysUtils,
  +  System.SysUtils,  System.Generics.Defaults,
     Spring.Collections,
     DelphiLensUI.WorkerContext,
     DelphiLensUI.UIXEngine.Intf, DelphiLensUI.UIXEngine.Actions;
  
positive.code:   TDLUIXTabsAnalyzer = class(TInterfacedObject, IDLUIXAnalyzer)
    strict private
      FTabNames: IList<string>;
    public
      procedure BuildFrame(const action: IDLUIXAction; const frame: IDLUIXFrame;
        const context: IDLUIWorkerContext);
  
negative.code:   filteredList : IDLUIXFilteredListAction;
    iTab         : integer;
    navigateToTab: IDLUIXAction;
    sPath        : string;
    sTab         : string;
  begin
    FTabPaths := TCollections.CreateList<string>;
    for sTab in context.TabNames do
      FTabPaths.Add(sTab);
  
    // terribly inefficient but a) it is called rarely and b) FTabPaths will be really short
    FTabPaths.Sort(
      TComparer<string>.Construct(
        function (const left, right: string): integer
        begin
          Result := CompareText(ExtractFileName(left), ExtractFileName(right));
        end));
  
    FTabNames := TCollections.CreateList<string>;
    for sPath in FTabPaths do
      FTabNames.Add(ExtractFileName(sPath));
  
    filteredList := CreateFilteredListAction('', FTabNames, context.Source.UnitName) as IDLUIXFilteredListAction;
    navigateToTab := CreateNavigationAction('&Open', Default(TDLUIXLocation), false);
  