Is this a bug or intended behavior? I would think there should a type mismatch. {$mode delphi} program test; type TFooA = class end; type TFooB = class end; type TList<T: TFooA> = class procedure Foo; end; procedure TList<T: TFooB>.Foo; begin end; begin end. Regards, Ryan Joseph