Generic TList <> en Delphi 2009 crash en IndexOf

He visto muchas menciones de errores en los genéricos de Delphi 2009, pero nunca esperé que algo tan básico fallara en la Actualización 3, nada menos. Llamar a IndexOf en un TList genérico o TObjectList provoca una infracción de acceso si la lista contiene 1 o más elementos:

type
  TTest = class( TObject );

procedure DoTest;
var
  list : TObjectList< TTest >;
  t : TTest;
begin
  list := TObjectList< TTest >.Create;
  try
    t := TTest.Create;
    list.IndexOf( t ); // No items in list, correct result -1
    list.Add( t );
    list.IndexOf( t ); // Access violation here
  finally
    list.Free;
  end;
end;

La excepción es "EAccessViolation: Infracción de acceso en la dirección 0048974C en el módulo 'testbed.exe'. Lectura de la dirección 00000000"

Compilar con DCU de depuración genera un problema en generics.collections.pas: el miembro de FComparer no está asignado:

function TList<T>.IndexOf(const Value: T): Integer;
var
  i: Integer;
begin
  for i := 0 to Count - 1 do
    if FComparer.Compare(FItems[i], Value) = 0 then
      Exit(i);
  Result := -1;
end;

Por supuesto, esto hace que el TList genérico sea casi completamente inútil. Como la Actualización 3 no parece haber solucionado este error, ¿tengo otro recurso que no sea actualizar a XE?

Respuestas a la pregunta(2)

Su respuesta a la pregunta