=== tests/cases/compiler/recursiveComplicatedClasses.ts === class Signature { >Signature : Signature public parameters: ParameterSymbol[] = null; >parameters : ParameterSymbol[] >ParameterSymbol : ParameterSymbol >null : null } function aEnclosesB(a: Symbol) { >aEnclosesB : (a: Symbol) => boolean >a : Symbol >Symbol : Symbol return true; >true : boolean } class Symbol { >Symbol : Symbol public bound: boolean; >bound : boolean public visible() { >visible : () => boolean var b: TypeSymbol; >b : TypeSymbol >TypeSymbol : TypeSymbol return aEnclosesB(b); >aEnclosesB(b) : boolean >aEnclosesB : (a: Symbol) => boolean >b : TypeSymbol } } class InferenceSymbol extends Symbol { >InferenceSymbol : InferenceSymbol >Symbol : Symbol } class ParameterSymbol extends InferenceSymbol { >ParameterSymbol : ParameterSymbol >InferenceSymbol : InferenceSymbol } class TypeSymbol extends InferenceSymbol { >TypeSymbol : TypeSymbol >InferenceSymbol : InferenceSymbol }