public bool Restore(string machineName, IEnumerable <MyObjectBuilder_ScriptSMCursor> cursors)
        {
            MyObjectBuilder_ScriptSM machineDefinition;

            if (!m_machineDefinitions.TryGetValue(machineName, out machineDefinition))
            {
                return(false);
            }

            var definitionWithoutCursors = new MyObjectBuilder_ScriptSM
            {
                Name        = machineDefinition.Name,
                Nodes       = machineDefinition.Nodes,
                Transitions = machineDefinition.Transitions
            };

            var newMachine = new MyVSStateMachine();

            newMachine.Init(definitionWithoutCursors);

            foreach (var newCursorData in cursors)
            {
                if (newMachine.RestoreCursor(newCursorData.NodeName) == null)
                {
                    return(false);
                }
            }

            m_runningMachines.Add(newMachine);
            return(true);
        }
        public bool Restore(string machineName, IEnumerable<MyObjectBuilder_ScriptSMCursor> cursors)
        {
            MyObjectBuilder_ScriptSM machineDefinition;
            if(!m_machineDefinitions.TryGetValue(machineName, out machineDefinition))
                return false;

            var definitionWithoutCursors = new MyObjectBuilder_ScriptSM
            {
                Name = machineDefinition.Name,
                Nodes = machineDefinition.Nodes,
                Transitions = machineDefinition.Transitions
            };

            var newMachine = new MyVSStateMachine();
            newMachine.Init(definitionWithoutCursors);

            foreach (var newCursorData in cursors)
                if(newMachine.RestoreCursor(newCursorData.NodeName) == null)
                    return false;

            m_runningMachines.Add(newMachine);
            return true;
        }