=== tests/cases/compiler/typeParameterExtendingUnion2.ts ===
class Animal { run() { } }
>Animal : Animal
>run : () => void

class Cat extends Animal { meow }
>Cat : Cat
>Animal : Animal
>meow : any

class Dog extends Animal { woof }
>Dog : Dog
>Animal : Animal
>woof : any

function run(a: Cat | Dog) {
>run : (a: Cat | Dog) => void
>a : Cat | Dog
>Cat : Cat
>Dog : Dog

    a.run();
>a.run() : void
>a.run : () => void
>a : Cat | Dog
>run : () => void
}

function f<T extends Cat | Dog>(a: T) {
>f : <T extends Cat | Dog>(a: T) => void
>T : T
>Cat : Cat
>Dog : Dog
>a : T
>T : T

    a.run();
>a.run() : void
>a.run : () => void
>a : T
>run : () => void

    run(a);
>run(a) : void
>run : (a: Cat | Dog) => void
>a : T
}
