//====== ctors

        public SnakeFreeMove(SnakeBody snakeBody, Direction initialDirection)
        {
            this.snakeBody = Verify.NotNull(snakeBody, nameof(snakeBody));

            CurrentDirection = initialDirection;
        }
        //====== ctors

        public GameOverConditions(SnakeBody snakeBody, Terrain terrain, AppleGenerator applesGenerator, GameTime gameTime) : base(gameTime)
        {
            this.snakeBody       = Verify.NotNull(snakeBody, nameof(snakeBody));
            this.terrain         = Verify.NotNull(terrain, nameof(terrain));
            this.applesGenerator = Verify.NotNull(applesGenerator, nameof(applesGenerator));
        }