private CNCState.CNCState ProcessSyncToolCommand(Arguments block,
                                                         ActionProgram.ActionProgram program,
                                                         CNCState.CNCState state)
        {
            var cmd = block.Options.FirstOrDefault((arg) => (arg.letter == 'M'));

            if (cmd == null)
            {
                return(state);
            }

            int tool;

            if (block.SingleOptions.ContainsKey('T'))
            {
                tool = block.SingleOptions['T'].ivalue1;
            }
            else
            {
                tool = state.SyncToolState.Tool;
            }

            switch (cmd.ivalue1)
            {
            case 703:
                return(builder.ProcessSyncToolStart(tool, program, state));

            case 705:
                return(builder.ProcessSyncToolStop(tool, program, state));
            }
            return(state);
        }