public static bool IsMatureTreeStumpOrBoulderAt(GameLocation gameLocation, Point tile)
        {
            gameLocation.terrainFeatures.TryGetValue(new Vector2(tile.X, tile.Y), out TerrainFeature terrainFeature);

            if (terrainFeature is Tree || terrainFeature is FruitTree ||
                (terrainFeature is Bush bush &&
                 ClickToMoveHelper.IsBushDestroyable(bush, gameLocation, tile)))
            {
                return(true);
            }

            foreach (LargeTerrainFeature largeTerrainFeature in gameLocation.largeTerrainFeatures)
            {
                if (largeTerrainFeature is Bush bush2 &&
                    bush2.getRenderBounds(new Vector2(bush2.tilePosition.X, bush2.tilePosition.Y)).Contains(
                        tile.X * Game1.tileSize,
                        tile.Y * Game1.tileSize) && ClickToMoveHelper.IsBushDestroyable(bush2, gameLocation, tile))
                {
                    return(true);
                }
            }

            return(ClickToMoveHelper.IsStumpAt(gameLocation, tile.X, tile.Y) ||
                   ClickToMoveHelper.IsBoulderAt(gameLocation, tile.X, tile.Y));
        }
        public static bool IsBoulderAt(this GameLocation gameLocation, int x, int y)
        {
            if (!(gameLocation is Forest || gameLocation is Woods) && gameLocation.resourceClumps.Any(
                    resourceClump => ClickToMoveHelper.IsBoulderAt(resourceClump, x, y)))
            {
                return(true);
            }

            gameLocation.objects.TryGetValue(new Vector2(x, y), out SObject @object);

            return(@object is not null && (@object.Name == "Stone" || @object.Name == "Boulder"));
        }