Genéricos não resolvendo tipos de método corretamente

Considere o seguinte :

{$APPTYPE CONSOLE}

uses
  Generics.Collections;

type
  TObjProc = procedure of object;
  TFoo = class
    public procedure DoFoo;
    public procedure DoBar;
  end;

procedure TFoo.DoFoo;
begin
  WriteLn('foo');
end;

procedure TFoo.DoBar;
begin
  WriteLn('bar');
end;

var
  ProcList : TList<TObjProc>;
  Foo : TFoo;
  aProc : TObjProc;
begin
  Foo := TFoo.Create;
  ProcList := TList<TObjProc>.Create;
  ProcList.Add(Foo.DoFoo);
  ProcList.Add(Foo.DoBar);
  for aProc in ProcList do aProc;
  ReadLn;
end.

Isso produz a saída esperada de

foo
bar

Agora, suponha que desejamos atribuir um procedimento da lista. Enumerar obras, como acima. Isso também funciona:

aProc := ProcList.Items[0];
aProc;

Mas isso gera um erro do compilador :

aProc := ProcList.First;
// E2010 Incompatible types: 
//'procedure, untyped pointer or untyped parameter' and 'TObjProc'

O que é duplamente estranho, já que

function TList<T>.First: T;
begin
  Result := Items[0];
end;

Então o que está acontecendo?

Isso afeta as versões mais recentes do Delphi também? Fico tentado a fazer o controle de qualidade se houver uma expectativa razoável de que isso funcione (o que acho que existe).

questionAnswers(1)

yourAnswerToTheQuestion