{ %fail } {$mode objfpc} {$interfaces corba} type generic IList = interface end; generic ISet = interface end; generic IMap = interface type TKeySet = specialize ISet; // wrong syntax? TValueSet = specialize IList; // wrong syntax? function Keys : TKeySet; function Values : TValueSet; end; begin end.