diff --git a/src/plugins/qmldesigner/designercore/include/qmlchangeset.h b/src/plugins/qmldesigner/designercore/include/qmlchangeset.h
index 25db8b51fe1e07670f20ab359625de2b5c39d997..417a75d805a62c6d38e9079ace62600af8c3d426 100644
--- a/src/plugins/qmldesigner/designercore/include/qmlchangeset.h
+++ b/src/plugins/qmldesigner/designercore/include/qmlchangeset.h
@@ -44,6 +44,7 @@ public:
     ModelNode target() const;
     void setTarget(const ModelNode &target);
     bool isValid() const;
+    static bool isValidQmlModelStateOperation(const ModelNode &modelNode);
 };
 
 
diff --git a/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp b/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp
index 852b77f04551ae79465dddaccc9957bce41ee41d..b4a052b4008de1b2a557d95a7dcdf12aad9956dc 100644
--- a/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp
+++ b/src/plugins/qmldesigner/designercore/model/qmlchangeset.cpp
@@ -60,9 +60,14 @@ bool QmlPropertyChanges::isValidQmlPropertyChanges(const ModelNode &modelNode)
 
 bool QmlModelStateOperation::isValid() const
 {
-    return QmlModelNodeFacade::isValid() && (
-                modelNode().metaInfo().isSubclassOf("<cpp>.QDeclarative1StateOperation", -1, -1)
-                || modelNode().metaInfo().isSubclassOf("<cpp>.QQuickStateOperation", -1, -1));
+    return isValidQmlModelStateOperation(modelNode());
+}
+
+bool QmlModelStateOperation::isValidQmlModelStateOperation(const ModelNode &modelNode)
+{
+    return isValidQmlModelNodeFacade(modelNode)
+            && (modelNode.metaInfo().isSubclassOf("<cpp>.QDeclarative1StateOperation", -1, -1)
+                || modelNode.metaInfo().isSubclassOf("<cpp>.QQuickStateOperation", -1, -1));
 }
 
 void QmlPropertyChanges::removeProperty(const PropertyName &name)