=== tests/cases/compiler/genericRecursiveImplicitConstructorErrors2.ts ===
module TypeScript2 {
>TypeScript2 : Symbol(TypeScript2, Decl(genericRecursiveImplicitConstructorErrors2.ts, 0, 0))

  export interface DeclKind { };
>DeclKind : Symbol(DeclKind, Decl(genericRecursiveImplicitConstructorErrors2.ts, 0, 20))

  export interface PullTypesymbol { };
>PullTypesymbol : Symbol(PullTypesymbol, Decl(genericRecursiveImplicitConstructorErrors2.ts, 1, 32))

  export interface SymbolLinkKind { };
>SymbolLinkKind : Symbol(SymbolLinkKind, Decl(genericRecursiveImplicitConstructorErrors2.ts, 2, 38))

  export enum PullSymbolVisibility {
>PullSymbolVisibility : Symbol(PullSymbolVisibility, Decl(genericRecursiveImplicitConstructorErrors2.ts, 3, 38))

    Private,
>Private : Symbol(PullSymbolVisibility.Private, Decl(genericRecursiveImplicitConstructorErrors2.ts, 4, 36))

    Public
>Public : Symbol(PullSymbolVisibility.Public, Decl(genericRecursiveImplicitConstructorErrors2.ts, 5, 12))
  }
　
  export class PullSymbol {
>PullSymbol : Symbol(PullSymbol, Decl(genericRecursiveImplicitConstructorErrors2.ts, 7, 3))

    constructor (name: string, declKind: DeclKind) {
>name : Symbol(name, Decl(genericRecursiveImplicitConstructorErrors2.ts, 10, 17))
>declKind : Symbol(declKind, Decl(genericRecursiveImplicitConstructorErrors2.ts, 10, 30))
>DeclKind : Symbol(DeclKind, Decl(genericRecursiveImplicitConstructorErrors2.ts, 0, 20))

    }
    // link methods
    public addOutgoingLink<A,B,C>(linkTo: PullSymbol, kind: SymbolLinkKind) {
>addOutgoingLink : Symbol(addOutgoingLink, Decl(genericRecursiveImplicitConstructorErrors2.ts, 12, 5))
>A : Symbol(A, Decl(genericRecursiveImplicitConstructorErrors2.ts, 14, 27))
>B : Symbol(B, Decl(genericRecursiveImplicitConstructorErrors2.ts, 14, 29))
>C : Symbol(C, Decl(genericRecursiveImplicitConstructorErrors2.ts, 14, 31))
>linkTo : Symbol(linkTo, Decl(genericRecursiveImplicitConstructorErrors2.ts, 14, 34))
>PullSymbol : Symbol(PullSymbol, Decl(genericRecursiveImplicitConstructorErrors2.ts, 7, 3))
>kind : Symbol(kind, Decl(genericRecursiveImplicitConstructorErrors2.ts, 14, 53))
>SymbolLinkKind : Symbol(SymbolLinkKind, Decl(genericRecursiveImplicitConstructorErrors2.ts, 2, 38))

    }

    public getType<A,B,C>(): PullTypeSymbol<A,B,C> {
>getType : Symbol(getType, Decl(genericRecursiveImplicitConstructorErrors2.ts, 16, 5))
>A : Symbol(A, Decl(genericRecursiveImplicitConstructorErrors2.ts, 18, 19))
>B : Symbol(B, Decl(genericRecursiveImplicitConstructorErrors2.ts, 18, 21))
>C : Symbol(C, Decl(genericRecursiveImplicitConstructorErrors2.ts, 18, 23))
>PullTypeSymbol : Symbol(PullTypeSymbol, Decl(genericRecursiveImplicitConstructorErrors2.ts, 21, 3))
>A : Symbol(A, Decl(genericRecursiveImplicitConstructorErrors2.ts, 18, 19))
>B : Symbol(B, Decl(genericRecursiveImplicitConstructorErrors2.ts, 18, 21))
>C : Symbol(C, Decl(genericRecursiveImplicitConstructorErrors2.ts, 18, 23))

      return undefined;
>undefined : Symbol(undefined)
    }
  }
  export class PullTypeSymbol <A,B,C>extends PullSymbol {
>PullTypeSymbol : Symbol(PullTypeSymbol, Decl(genericRecursiveImplicitConstructorErrors2.ts, 21, 3))
>A : Symbol(A, Decl(genericRecursiveImplicitConstructorErrors2.ts, 22, 31))
>B : Symbol(B, Decl(genericRecursiveImplicitConstructorErrors2.ts, 22, 33))
>C : Symbol(C, Decl(genericRecursiveImplicitConstructorErrors2.ts, 22, 35))
>PullSymbol : Symbol(PullSymbol, Decl(genericRecursiveImplicitConstructorErrors2.ts, 7, 3))
  }
}

