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); }