public EngineDouble(
     Position startPosition,
     Func<Position, bool> validPositionEvaluator)
     : this(startPosition, validPositionEvaluator, p => true)
 {
 }
            public bool MoveDelta(int x, int y)
            {
                var newPosition = currentPosition.MoveDelta(x, y);
                if (validPositionEvaluator(newPosition))
                {
                    currentPosition = newPosition;
                    return true;
                }

                return false;
            }
 public EngineDouble(
     Position startPosition,
     Func<Position, bool> validPositionEvaluator,
     Func<Position, bool> cleaningAtPositionEvaluator)
 {
     currentPosition = startPosition;
     this.validPositionEvaluator = validPositionEvaluator;
     this.cleaningAtPositionEvaluator = cleaningAtPositionEvaluator;
 }