class Foo[X] def test_superclass: -> X end module M[X] def test_module: -> X end class Bar[X] < Foo[Array[X]] def initialize: (X) -> void include M[Integer] end