/// <summary>
 /// Initializes a new instance of the <see cref="SpiderMovementStrategy"/> class.
 /// </summary>
 /// <param name="robotState"> The robot state Finite State Machine. </param>
 /// <param name="updateLocationStrategy"> The strategy used to update the location. </param>
 /// <param name="instructionParser"> The instance of <see cref="instructionParser"/> that cn convert the char based instruction set. </param>
 public SpiderMovementStrategy(IFiniteStateMachine robotState, IUpdateLocationStrategy updateLocationStrategy, IInstructionParser instructionParser)
 {
     this._robotState             = robotState ?? throw new ArgumentNullException(nameof(robotState));
     this._updateLocationStrategy = updateLocationStrategy ?? throw new ArgumentNullException(nameof(updateLocationStrategy));
     this._instructionParser      = instructionParser ?? throw new ArgumentNullException(nameof(instructionParser));
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="MovementStrategyFactory"/> class.
 /// </summary>
 /// <param name="locationStrategy">  The location strategy. </param>
 /// <param name="instructionParser"> The instructionParser. </param>
 public MovementStrategyFactory(IUpdateLocationStrategy locationStrategy, IInstructionParser instructionParser)
 {
     this._locationStrategy  = locationStrategy ?? throw new ArgumentNullException(nameof(locationStrategy));
     this._instructionParser = instructionParser ?? throw new ArgumentNullException(nameof(instructionParser));
 }