public override bool VisitDeclaration(Declaration decl) { if (decl.IsIncomplete && decl.CompleteDeclaration != null) { decl = decl.CompleteDeclaration; } if (AlreadyVisited2(decl)) { return(ShouldVisitChilds(decl)); } Visited.Remove(decl); // So Class can be revisited Declarations.Add(recordStack.Push(decl)); decl.Visit(this); recordStack.Pop(); return(false); }