def METHOD_NAME(self, location, x, y):
    tile_options = walkable_tiles | entrance_tiles
    for x, y in self.flood_fill_logic(location, tile_options, x, y):
        if self.logic_map[x + y * self.w] is not None:
            continue
        tile = self.map.get_tile(x, y)
        if tile == 0x5C:  # bush
            other_location = Location()
            location.connect(other_location, self.requirements_settings.bush)
            self.fill_bush(other_location, x, y)
        elif tile == 0x20:  # rock
            other_location = Location()
            location.connect(other_location, POWER_BRACELET)
            self.fill_rock(other_location, x, y)
        elif tile == 0xE8:  # pit
            if self.map.get_tile(x - 1, y) in tile_options and self.map.get_tile(x + 1, y) in tile_options:
                if self.logic_map[x - 1 + y * self.w] == location and self.logic_map[x + 1 + y * self.w] is None:
                    other_location = Location().connect(location, FEATHER)
                    self.METHOD_NAME(other_location, x + 1, y)
                if self.logic_map[x - 1 + y * self.w] is None and self.logic_map[x + 1 + y * self.w] == location:
                    other_location = Location().connect(location, FEATHER)
                    self.METHOD_NAME(other_location, x - 1, y)
            if self.map.get_tile(x, y - 1) in tile_options and self.map.get_tile(x, y + 1) in tile_options:
                if self.logic_map[x + (y - 1) * self.w] == location and self.logic_map[x + (y + 1) * self.w] is None:
                    other_location = Location().connect(location, FEATHER)
                    self.METHOD_NAME(other_location, x, y + 1)
                if self.logic_map[x + (y - 1) * self.w] is None and self.logic_map[x + (y + 1) * self.w] == location:
                    other_location = Location().connect(location, FEATHER)
                    self.METHOD_NAME(other_location, x, y - 1)