bool MissingStateBehaviourGUI( State state,SerializedObject serializedObject )
        {
            serializedObject.Update();
            SerializedProperty property = serializedObject.FindProperty("m_Script");
            if( property == null )
            {
                return false;
            }

            EditorGUI.BeginChangeCheck();

            EditorGUILayout.PropertyField( property );

            MonoScript monoScript = property.objectReferenceValue as MonoScript;

            bool valid = ( monoScript != null && monoScript.GetClass() != null && monoScript.GetClass().IsSubclassOf( typeof(StateBehaviour) ) );

            if( !valid )
            {
                EditorGUILayout.HelpBox( "The associated script can not be loaded.\nPlease fix any compile errors\nand assign a valid script.", MessageType.Warning, true);
            }

            if( serializedObject.ApplyModifiedProperties() )
            {
                state.ForceRebuild( EditorUtility.InstanceIDToObject );
                FinalizeStateEditor();
            }

            return true;
        }