anchor.diff:  
   uses
     Classes, contnrs, sysutils,
  -  mVirtualDataSetInterfaces;
  +  mVirtualDataSetInterfaces, mMaps;
   
   const
     PREFIX_JOIN_SEPARATOR = '$';
  
positive.code: procedure TmBuiltInJoins.Clear;
  begin
    FList.Clear;
  end;
  
  function TmBuiltInJoins.Add: TmBuiltInJoin;
  begin
    Result := TmBuiltInJoin.Create;
    FList.Add(Result);
  end;
  
  function TmBuiltInJoins.Get(const aIndex: integer): TmBuiltInJoin;
  begin
    Result := FList.Items[aIndex] as TmBuiltInJoin;
  end;
  
  function TmBuiltInJoins.FindByPrefix(const aPrefix: string): TmBuiltInJoin;
  
negative.code:   i : integer;
  begin
    Result := nil;
    if FDictionary.Count = 0 then
    begin
      for i := 0 to Count - 1 do
        FDictionary.Add(uppercase(Get(i).Prefix), Get(i));
    end;
    Result := FDictionary.Find(uppercase(aPrefix)) as TmBuiltInJoin;
  end;
  
  { TmBuiltInJoin }
  