Yeah, it's actually interesting how it's defined
Code:
TList = class(TObject,IFPObserved)
  private
    FList: TFPList;
  protected
    function Get(Index: Integer): Pointer;
  public
    property Items[Index: Integer]: Pointer read Get write Put; default;
end; // + a bunch of stuff between those...
TList = class(TFPList) would be normal expected way, but this is different. I actually got valuable hint for nxPascal font class from this, on how to typecast object list from base-class. Through property... brilliant.