=== tests/cases/compiler/specializeVarArgs1.ts ===
interface Observable<T>{ }
>Observable : Symbol(Observable, Decl(specializeVarArgs1.ts, 0, 0))
>T : Symbol(T, Decl(specializeVarArgs1.ts, 0, 21))

 

interface ObservableArray<T> extends Observable<T[]>
>ObservableArray : Symbol(ObservableArray, Decl(specializeVarArgs1.ts, 0, 26))
>T : Symbol(T, Decl(specializeVarArgs1.ts, 4, 26))
>Observable : Symbol(Observable, Decl(specializeVarArgs1.ts, 0, 0))
>T : Symbol(T, Decl(specializeVarArgs1.ts, 4, 26))

{

    push(...values: T[]);
>push : Symbol(push, Decl(specializeVarArgs1.ts, 6, 1))
>values : Symbol(values, Decl(specializeVarArgs1.ts, 8, 9))
>T : Symbol(T, Decl(specializeVarArgs1.ts, 4, 26))

}

 

function observableArray<T>(): ObservableArray<T> { return null;}
>observableArray : Symbol(observableArray, Decl(specializeVarArgs1.ts, 10, 1))
>T : Symbol(T, Decl(specializeVarArgs1.ts, 14, 25))
>ObservableArray : Symbol(ObservableArray, Decl(specializeVarArgs1.ts, 0, 26))
>T : Symbol(T, Decl(specializeVarArgs1.ts, 14, 25))

 

var a =  observableArray<string>();
>a : Symbol(a, Decl(specializeVarArgs1.ts, 18, 3))
>observableArray : Symbol(observableArray, Decl(specializeVarArgs1.ts, 10, 1))

a.push('Some Value');
>a.push : Symbol(ObservableArray.push, Decl(specializeVarArgs1.ts, 6, 1))
>a : Symbol(a, Decl(specializeVarArgs1.ts, 18, 3))
>push : Symbol(ObservableArray.push, Decl(specializeVarArgs1.ts, 6, 1))

