diff --git a/src/plugins/cpptools/insertionpointlocator.cpp b/src/plugins/cpptools/insertionpointlocator.cpp
index 08d9722086f89293a369afbd62a1619ad4f95677..f7118a2cfecfa9663073d17335e32af6ae51dc6a 100644
--- a/src/plugins/cpptools/insertionpointlocator.cpp
+++ b/src/plugins/cpptools/insertionpointlocator.cpp
@@ -363,7 +363,7 @@ public:
         : ASTVisitor(translationUnit)
     {}
 
-    void operator()(Declaration *decl, unsigned *line, unsigned *column)
+    void operator()(Symbol *decl, unsigned *line, unsigned *column)
     {
         // default to end of file
         _bestToken.maybeSet(-1, translationUnit()->ast()->lastToken());
@@ -470,7 +470,7 @@ static Declaration *isNonVirtualFunctionDeclaration(Symbol *s)
     return declaration;
 }
 
-static InsertionLocation nextToSurroundingDefinitions(Declaration *declaration, const CppRefactoringChanges &changes)
+static InsertionLocation nextToSurroundingDefinitions(Symbol *declaration, const CppRefactoringChanges &changes)
 {
     InsertionLocation noResult;
     Class *klass = declaration->enclosingClass();
@@ -545,15 +545,18 @@ static InsertionLocation nextToSurroundingDefinitions(Declaration *declaration,
     return InsertionLocation(QString::fromUtf8(definitionFunction->fileName()), prefix, suffix, line, column);
 }
 
-QList<InsertionLocation> InsertionPointLocator::methodDefinition(Declaration *declaration) const
+QList<InsertionLocation> InsertionPointLocator::methodDefinition(Symbol *declaration,
+                                                                 bool useSymbolFinder) const
 {
     QList<InsertionLocation> result;
     if (!declaration)
         return result;
 
-    CppTools::SymbolFinder symbolFinder;
-    if (symbolFinder.findMatchingDefinition(declaration, m_refactoringChanges.snapshot(), true))
-        return result;
+    if (useSymbolFinder) {
+        CppTools::SymbolFinder symbolFinder;
+        if (symbolFinder.findMatchingDefinition(declaration, m_refactoringChanges.snapshot(), true))
+            return result;
+    }
 
     const InsertionLocation location = nextToSurroundingDefinitions(declaration, m_refactoringChanges);
     if (location.isValid()) {
diff --git a/src/plugins/cpptools/insertionpointlocator.h b/src/plugins/cpptools/insertionpointlocator.h
index da9799744b7cc1368c6932ed91d25e90d4a0253d..f5ea46d26d37a2a62a012e9225ae0edd08f2b4f6 100644
--- a/src/plugins/cpptools/insertionpointlocator.h
+++ b/src/plugins/cpptools/insertionpointlocator.h
@@ -98,7 +98,8 @@ public:
                                                const CPlusPlus::Class *clazz,
                                                AccessSpec xsSpec) const;
 
-    QList<InsertionLocation> methodDefinition(CPlusPlus::Declaration *declaration) const;
+    QList<InsertionLocation> methodDefinition(CPlusPlus::Symbol *declaration,
+                                              bool useSymbolFinder = true) const;
 
 private:
     CppRefactoringChanges m_refactoringChanges;