diff --git a/src/CppParser/Parser.cpp b/src/CppParser/Parser.cpp
index fe41c55e..a1ea4246 100644
--- a/src/CppParser/Parser.cpp
+++ b/src/CppParser/Parser.cpp
@@ -714,41 +714,16 @@ void Parser::EnsureCompleteRecord(const clang::RecordDecl* Record,
     if (!RC->isIncomplete || RC->completeDeclaration)
         return;
 
-    auto Complete = NS->FindClass(Record->getName(),
-        /*IsComplete=*/true, /*Create=*/false);
-    if (Complete)
-    {
-        RC->completeDeclaration = Complete;
-        return;
-    }
-
-    auto Definition = Record->getDefinition();
-    bool isCXX = false;
+    Decl* Definition;
     if (auto CXXRecord = dyn_cast<CXXRecordDecl>(Record))
-    {
         Definition = CXXRecord->getDefinition();
-        isCXX = true;
-    }
+    else
+        Definition = Record->getDefinition();
 
     if (!Definition)
         return;
 
-    auto DC = GetNamespace(Definition);
-    Complete = DC->FindClass(Record->getName(),
-        /*IsComplete=*/true, /*Create=*/false);
-    if (Complete)
-    {
-        RC->completeDeclaration = Complete;
-        return;
-    }
-    Complete = DC->FindClass(Record->getName(),
-        /*IsComplete=*/true, /*Create=*/true);
-    if (isCXX)
-        WalkRecordCXX(cast<CXXRecordDecl>(Definition), Complete);
-    else
-        WalkRecord(Definition, Complete);
-    HandleDeclaration(Definition, Complete);
-    RC->completeDeclaration = Complete;
+    RC->completeDeclaration = WalkDeclaration(Definition);
 }
 
 Class* Parser::GetRecord(const clang::RecordDecl* Record, bool& Process)