def METHOD_NAME(self, response):
    address_text = response.xpath('//div[@class = "address"][1]/text()').extract()[
        1
    ]
    self._validate_location(address_text)
    h4s = response.xpath("//h4")
    # General meeting description is mentioned just after the H4 for current year
    general_desc = h4s.xpath("following-sibling::p[1]//em//text()").extract_first()
    # Dictionary containing all meeting dictionaries
    # The dates will be the keys
    meetings = dict()
    last_year = datetime.today().replace(year=datetime.today().year - 1)
    for entry_cnt, entry in enumerate(h4s, start=1):
        entry_str = entry.xpath("./text()").extract_first()
        test_year = entry_str[0:4]
        if "Schedule" in entry_str:
            for item in entry.xpath(
                "following-sibling::ol[1]//li//text()"
            ).getall():
                date, start, end = self._parse_date_start_end(item, test_year)
                meetings[date] = {
                    "start": start,
                    "end": end,
                    # Scheduled appointments have no links
                    "links": [],
                }
        elif "Agendas" in entry_str or "Minutes" in entry_str:
            # Only consider ps between two h4s
            for p in entry.xpath(
                "following-sibling::p[count(preceding-sibling::h4)=" "$entry_cnt]",
                entry_cnt=entry_cnt,
            ):
                # The  non-breaking space signals the end of the meeting lists
                if (
                    p.xpath("./text()")
                    and "\xa0" in p.xpath("./text()").extract_first()
                ):
                    break
                for item in p.xpath("./a"):
                    item_str = item.xpath("./text()").extract_first()
                    date, start, end = self._parse_date_start_end(
                        item_str, test_year
                    )
                    item_links = item.xpath("@href").extract()
                    links = self._parse_links(item_links, entry_str)
                    if date in meetings:
                        meetings[date]["links"].extend(links)
                    else:
                        meetings[date] = {
                            "start": start,
                            "end": end,
                            "links": links,
                        }
    # Create the meeting objects
    for key, item in meetings.items():
        if item["start"] < last_year and not self.settings.getbool(
            "CITY_SCRAPERS_ARCHIVE"
        ):
            continue
        meeting = Meeting(
            title="Commission",
            description=unicodedata.normalize("NFKD", general_desc),
            classification=COMMISSION,
            start=item["start"],
            end=item["end"],
            time_notes="Estimated 90 minutes duration",
            all_day=False,
            location=self.location,
            links=item["links"],
            source=response.url,
        )
        meeting["status"] = self._get_status(meeting)
        meeting["id"] = self._get_id(meeting)
        yield meeting