anchor.diff:  procedure TfpgMimeDataBase.SetHTML(const AValue: TfpgString);
   var
     i: integer;
  -  r: TfpgMimeDataStruct;
  +  r: TfpgMimeDataItem;
   begin
     { remove existing 'text/html' first }
  -  for i := FDataList.Count-1 downto 0 do
  -  begin
  -    r := TfpgMimeDataStruct(FDataList[i]);
  +  for i := Count-1 downto 0 do
  +  begin
  +    r := Items[i];
       if r.format = 'text/html' then
       begin
  -      FDataList.Remove(FDataList[i]);
  +      FDataList.Remove(r);
         break;
       end;
     end;
     { now add new structure }
  -  r := TfpgMimeDataStruct.Create('text/html', AValue);
  +  r := TfpgMimeDataItem.Create('text/html', AValue);
     FDataList.Add(r);
   end;
   
  -function TfpgMimeDataBase.GetFormatCout: integer;
  +function TfpgMimeDataBase.GetCount: integer;
   begin
     Result := FDataList.Count;
   end;
  
positive.code: function TfpgMimeDataBase.Formats: TStrings;
  var
    i: integer;
    r: TfpgMimeDataStruct;
    s: string;
  begin
    if FDataList.Count = 0 then
      Result := nil
    else
    begin
      Result := TStringList.Create;
      for i := 0 to FDataList.Count-1 do
      begin
        s := TfpgMimeDataStruct(FDataList[i]).format;
        Result.Add(s);
      end;
    end;
  
negative.code: procedure TfpgMimeDataBase.SetData(const AMimeType: TfpgString; const AData: Variant);
  var
    i: integer;
    r: TfpgMimeDataItem;
  begin
    { remove existing mime type first }
    for i := Count-1 downto 0 do
    begin
      r := Items[i];
      if r.format = AMimeType then
      begin
        FDataList.Remove(r);
        break;
      end;
    end;
    { now add new structure }
    r := TfpgMimeDataItem.Create(AMimeType, AData);
    FDataList.Add(r);
  end;
  
  