La clase está bien, la culpa la tendrá este individuo:
Código Delphi
[-]
fObservers.Insertar(Observer);
¿puedes mostrar el código de insertar?
PD: Puedes usar FreeAndNil(fObservers) en lugar de estas dos lineas:
Código Delphi
[-]
fObservers.Free;
fObservers := nil;
pues precisamente hace lo mismo, además de controlar una posible excepción al liberar fobservers, que en tu caso, se quedaría apuntando a memoria residual.
Edito: Lo siento, pero en un foro no hay nada urgente.... a saber cuando voy a conectarme de nuevo
.
Saludos