public bool ShouldVisitChilds(Declaration decl) { if (decl == translationUnit) { return(true); } if (decl is TranslationUnit) { return(false); } if (recordStack.Contains(record => record.Object is Type)) { return(false); } if (recordStack.IsBeingVisited(decl)) { return(false); } if (decl.Namespace == null) { return(true); } // No need to continue visiting after a declaration of another // translation unit is encountered. return(decl.Namespace.TranslationUnit == translationUnit); }