=== tests/cases/conformance/types/typeRelationships/bestCommonType/bestCommonTypeOfTuple2.ts ===
interface base { }
>base : Symbol(base, Decl(bestCommonTypeOfTuple2.ts, 0, 0))

interface base1 { i }
>base1 : Symbol(base1, Decl(bestCommonTypeOfTuple2.ts, 0, 18))
>i : Symbol(i, Decl(bestCommonTypeOfTuple2.ts, 1, 17))

class C implements base { c }
>C : Symbol(C, Decl(bestCommonTypeOfTuple2.ts, 1, 21))
>base : Symbol(base, Decl(bestCommonTypeOfTuple2.ts, 0, 0))
>c : Symbol(c, Decl(bestCommonTypeOfTuple2.ts, 2, 25))

class D implements base { d }
>D : Symbol(D, Decl(bestCommonTypeOfTuple2.ts, 2, 29))
>base : Symbol(base, Decl(bestCommonTypeOfTuple2.ts, 0, 0))
>d : Symbol(d, Decl(bestCommonTypeOfTuple2.ts, 3, 25))

class E implements base { e }
>E : Symbol(E, Decl(bestCommonTypeOfTuple2.ts, 3, 29))
>base : Symbol(base, Decl(bestCommonTypeOfTuple2.ts, 0, 0))
>e : Symbol(e, Decl(bestCommonTypeOfTuple2.ts, 4, 25))

class F extends C { f }
>F : Symbol(F, Decl(bestCommonTypeOfTuple2.ts, 4, 29))
>C : Symbol(C, Decl(bestCommonTypeOfTuple2.ts, 1, 21))
>f : Symbol(f, Decl(bestCommonTypeOfTuple2.ts, 5, 19))

class C1 implements base1 { i = "foo"; c }
>C1 : Symbol(C1, Decl(bestCommonTypeOfTuple2.ts, 5, 23))
>base1 : Symbol(base1, Decl(bestCommonTypeOfTuple2.ts, 0, 18))
>i : Symbol(i, Decl(bestCommonTypeOfTuple2.ts, 7, 27))
>c : Symbol(c, Decl(bestCommonTypeOfTuple2.ts, 7, 38))

class D1 extends C1 { i = "bar"; d }
>D1 : Symbol(D1, Decl(bestCommonTypeOfTuple2.ts, 7, 42))
>C1 : Symbol(C1, Decl(bestCommonTypeOfTuple2.ts, 5, 23))
>i : Symbol(i, Decl(bestCommonTypeOfTuple2.ts, 8, 21))
>d : Symbol(d, Decl(bestCommonTypeOfTuple2.ts, 8, 32))

var t1: [C, base];
>t1 : Symbol(t1, Decl(bestCommonTypeOfTuple2.ts, 10, 3))
>C : Symbol(C, Decl(bestCommonTypeOfTuple2.ts, 1, 21))
>base : Symbol(base, Decl(bestCommonTypeOfTuple2.ts, 0, 0))

var t2: [C, D];
>t2 : Symbol(t2, Decl(bestCommonTypeOfTuple2.ts, 11, 3))
>C : Symbol(C, Decl(bestCommonTypeOfTuple2.ts, 1, 21))
>D : Symbol(D, Decl(bestCommonTypeOfTuple2.ts, 2, 29))

var t3: [C1, D1];
>t3 : Symbol(t3, Decl(bestCommonTypeOfTuple2.ts, 12, 3))
>C1 : Symbol(C1, Decl(bestCommonTypeOfTuple2.ts, 5, 23))
>D1 : Symbol(D1, Decl(bestCommonTypeOfTuple2.ts, 7, 42))

var t4: [base1, C1];
>t4 : Symbol(t4, Decl(bestCommonTypeOfTuple2.ts, 13, 3))
>base1 : Symbol(base1, Decl(bestCommonTypeOfTuple2.ts, 0, 18))
>C1 : Symbol(C1, Decl(bestCommonTypeOfTuple2.ts, 5, 23))

var t5: [C1, F]
>t5 : Symbol(t5, Decl(bestCommonTypeOfTuple2.ts, 14, 3))
>C1 : Symbol(C1, Decl(bestCommonTypeOfTuple2.ts, 5, 23))
>F : Symbol(F, Decl(bestCommonTypeOfTuple2.ts, 4, 29))

var e11 = t1[4]; // base
>e11 : Symbol(e11, Decl(bestCommonTypeOfTuple2.ts, 16, 3))
>t1 : Symbol(t1, Decl(bestCommonTypeOfTuple2.ts, 10, 3))

var e21 = t2[4]; // {}
>e21 : Symbol(e21, Decl(bestCommonTypeOfTuple2.ts, 17, 3))
>t2 : Symbol(t2, Decl(bestCommonTypeOfTuple2.ts, 11, 3))

var e31 = t3[4]; // C1
>e31 : Symbol(e31, Decl(bestCommonTypeOfTuple2.ts, 18, 3))
>t3 : Symbol(t3, Decl(bestCommonTypeOfTuple2.ts, 12, 3))

var e41 = t4[2]; // base1
>e41 : Symbol(e41, Decl(bestCommonTypeOfTuple2.ts, 19, 3))
>t4 : Symbol(t4, Decl(bestCommonTypeOfTuple2.ts, 13, 3))

var e51 = t5[2]; // {}
>e51 : Symbol(e51, Decl(bestCommonTypeOfTuple2.ts, 20, 3))
>t5 : Symbol(t5, Decl(bestCommonTypeOfTuple2.ts, 14, 3))

