diff --git a/src/libs/qmljs/qmljsrewriter.cpp b/src/libs/qmljs/qmljsrewriter.cpp
index 35886ee46198df00dbba9346ba45d86c83776ad8..e48fda894dc054094fa477a7c5f1e46af8a16e0f 100644
--- a/src/libs/qmljs/qmljsrewriter.cpp
+++ b/src/libs/qmljs/qmljsrewriter.cpp
@@ -55,11 +55,13 @@ Rewriter::Rewriter(const QString &originalText,
 void Rewriter::addBinding(AST::UiObjectInitializer *ast,
                           const QString &propertyName,
                           const QString &propertyValue,
-                          BindingType bindingType)
+                          BindingType bindingType,
+                          UiObjectMemberList *insertAfter)
 {
-    UiObjectMemberList *insertAfter = searchMemberToInsertAfter(ast->members,
-                                                                propertyName,
-                                                                m_propertyOrder);
+    if (!insertAfter)
+        insertAfter = searchMemberToInsertAfter(ast->members,
+                                                propertyName,
+                                                m_propertyOrder);
     SourceLocation endOfPreviousMember;
     SourceLocation startOfNextMember;
 
@@ -568,9 +570,10 @@ void Rewriter::appendToArrayBinding(UiArrayBinding *arrayBinding,
     m_changeSet->insert(insertionPoint, QLatin1String(",\n") + content);
 }
 
-void Rewriter::addObject(UiObjectInitializer *ast, const QString &content)
+void Rewriter::addObject(UiObjectInitializer *ast, const QString &content, UiObjectMemberList *insertAfter = 0)
 {
-    UiObjectMemberList *insertAfter = searchMemberToInsertAfter(ast->members, m_propertyOrder);
+    if (!insertAfter)
+        insertAfter = searchMemberToInsertAfter(ast->members, m_propertyOrder);
 
     int insertionPoint;
     QString textToInsert;
diff --git a/src/libs/qmljs/qmljsrewriter.h b/src/libs/qmljs/qmljsrewriter.h
index ce480856e422ade4775fb4abf40c44de1e074236..fef264577487c435294e69e7e85821b744af05e1 100644
--- a/src/libs/qmljs/qmljsrewriter.h
+++ b/src/libs/qmljs/qmljsrewriter.h
@@ -59,7 +59,8 @@ public:
     void addBinding(AST::UiObjectInitializer *ast,
                     const QString &propertyName,
                     const QString &propertyValue,
-                    BindingType bindingType);
+                    BindingType bindingType,
+                    UiObjectMemberList *insertAfter = 0);
 
     void changeProperty(AST::UiObjectInitializer *ast,
                         const QString &propertyName,
@@ -70,7 +71,7 @@ public:
 
     void appendToArrayBinding(AST::UiArrayBinding *arrayBinding,
                               const QString &content);
-    void addObject(AST::UiObjectInitializer *ast, const QString &content);
+    void addObject(AST::UiObjectInitializer *ast, const QString &content, UiObjectMemberList *insertAfter = 0);
     void removeObjectMember(AST::UiObjectMember *member, AST::UiObjectMember *parent);
 
     static AST::UiObjectMemberList *searchMemberToInsertAfter(AST::UiObjectMemberList *members, const QStringList &propertyOrder);