diff --git a/src/plugins/qmldesigner/core/instances/objectnodeinstance.cpp b/src/plugins/qmldesigner/core/instances/objectnodeinstance.cpp
index db259b6ec4fa86439bd4a5bec3dd67ae5b529c12..4dc99587e721ab16fc22d51eae533876fbd12125 100644
--- a/src/plugins/qmldesigner/core/instances/objectnodeinstance.cpp
+++ b/src/plugins/qmldesigner/core/instances/objectnodeinstance.cpp
@@ -331,9 +331,20 @@ static QVariant objectToVariant(QObject *object)
     return QVariant::fromValue(object);
 }
 
+static bool hasFullImplementedListInterface(const QDeclarativeListReference &list)
+{
+    return list.isValid() && list.canCount() && list.canAt() && list.canAppend() && list.canClear();
+}
+
 static void removeObjectFromList(const QDeclarativeProperty &metaProperty, QObject *objectToBeRemoved, QDeclarativeEngine * engine)
 {
     QDeclarativeListReference listReference(metaProperty.object(), metaProperty.name().toLatin1(), engine);
+
+#ifndef QT_DEBUG
+    if (!hasFullImplementedListInterface(listReference))
+        return;
+#endif
+
     int count = listReference.count();
 
     QObjectList objectList;
@@ -376,6 +387,12 @@ void ObjectNodeInstance::addToNewProperty(QObject *object, QObject *newParent, c
 
     if (isList(metaProperty)) {
         QDeclarativeListReference list = qvariant_cast<QDeclarativeListReference>(metaProperty.read());
+
+#ifndef QT_DEBUG
+        if (!hasFullImplementedListInterface(listReference))
+            return;
+#endif
+
         Q_ASSERT(list.canAppend());
         list.append(object);
     } else if (isObject(metaProperty)) {
@@ -469,6 +486,11 @@ void ObjectNodeInstance::deleteObjectsInList(const QDeclarativeProperty &metaPro
     QObjectList objectList;
     QDeclarativeListReference list = qvariant_cast<QDeclarativeListReference>(metaProperty.read());
 
+#ifndef QT_DEBUG
+    if (!hasFullImplementedListInterface(list))
+        return;
+#endif
+
     Q_ASSERT(list.canCount());
     Q_ASSERT(list.canAt());
 
@@ -557,7 +579,12 @@ void ObjectNodeInstance::resetProperty(QObject *object, const QString &propertyN
             return;
         property.write(resetValue(propertyName));
     } else if (property.propertyTypeCategory() == QDeclarativeProperty::List) {
-        qvariant_cast<QDeclarativeListReference>(property.read()).clear();
+        QDeclarativeListReference list = qvariant_cast<QDeclarativeListReference>(property.read());
+#ifndef QT_DEBUG
+        if (!hasFullImplementedListInterface(list))
+            return;
+#endif
+        list.clear();
     }
 }