anchor.diff:    private
       { TODO: This is wrong, we must have one Data Storage object }
       FDataList: TObjectList;
  -    FFormats: TStrings;
       FUrlList: TList;
  -    FHTML: TfpgString;
       function    Geturls: TList;
       procedure   Seturls(const AValue: TList);
       function    GetText: TfpgString;
  
positive.code: 
    { We take ownership of AValue. Can we do this? }
    FUrlList := AValue;
    FFormats.Clear;
    Formats.Add('text/uri-list');
  end;
  
  function TfpgMimeDataBase.GetText: TfpgString;
  
negative.code: end;
  
  function TfpgMimeDataBase.GetHTML: TfpgString;
  var
    i: integer;
    s: string;
  begin
    { TODO: if data was HTML, we must strip all tags - regex will make this easy }
    for i := 0 to FDataList.Count-1 do
    begin
      if TfpgMimeDataStruct(FDataList[i]).format = 'text/html' then
      begin
        s := TfpgMimeDataStruct(FDataList[i]).data;
        Result := s;
        break;
      end;
    end;
  end;
  
  procedure TfpgMimeDataBase.SetHTML(const AValue: TfpgString);
  var
    i: integer;
    r: TfpgMimeDataStruct;
  begin
    { remove existing 'text/html' first }
    for i := FDataList.Count-1 downto 0 do
    begin
      r := TfpgMimeDataStruct(FDataList[i]);
      if r.format = 'text/html' then
      begin
        FDataList.Remove(FDataList[i]);
        break;
      end;
    end;
    { now add new structure }
    r := TfpgMimeDataStruct.Create('text/html', AValue);
    FDataList.Add(r);
  end;
  
  function TfpgMimeDataBase.GetFormatCout: integer;
  