title: Why is TList.Remove() producing an EAccessViolation error?
body: <p>Why EAccessViolation is raised when executing the code below? </p>
  
  <pre><code>uses
    Generics.Collections;
    ...
  
  var
    list: TList&lt;TNotifyEvent&gt;;
    ...
  
  begin
    list := TList&lt;TNotifyEvent&gt;.Create();
    try
      list.Add(myNotifyEvent);
      list.Remove(myNotifyEvent);  // EAccessViolation at address...
    finally
      FreeAndNil(list);
    end;
  end;
  
  procedure myNotifyEvent(Sender: TObject);
  begin
    OutputDebugString('event');  // nebo cokoliv jineho
  end;
  </code></pre>