def METHOD_NAME(self, chamber):
    grouped_hearings = defaultdict(list)
    for hearing in self.session.query(CACommitteeHearing):
        location = (
            self.session.query(CALocation)
            .filter_by(location_code=hearing.location_code)[0]
            .description
        )
        date = self._tz.localize(hearing.hearing_date)
        chamber_abbr = location[0:3]
        event_chamber = {"Asm": "lower", "Sen": "upper"}[chamber_abbr]
        if event_chamber != chamber:
            continue
        grouped_hearings[(location, date)].append(hearing)
    for ((location, date), hearings) in grouped_hearings.items():
        # Get list of bill_ids from the database.
        bill_ids = [hearing.bill_id for hearing in hearings]
        bills = [
            "%s %s" % re.match(r"\d+([^\d]+)(\d+)", bill).groups()
            for bill in bill_ids
        ]
        # Dereference the committee_nr number and get display name.
        msg = "More than one committee meeting at (location, date) %r"
        msg = msg % ((location, date),)
        assert len(set(hearing.committee_nr for hearing in hearings)) == 1, msg
        committee_name = _committee_nr[hearings.pop().committee_nr]
        desc = "Committee Meeting: " + committee_name
        event = Event(
            name=desc,
            start_date=date,
            location_name=committee_name,
        )
        event.add_committee(committee_name, note="host")
        for bill_id in bills:
            if "B" in bill_id:
                type_ = "bill"
            else:
                type_ = "resolution"
            item = event.add_agenda_item("consideration")
            item.add_bill(bill_id, note=type_)
        event.add_person(committee_name + " Committee", note="host")
        event.add_source("https://downloads.leginfo.legislature.ca.gov/")
        yield event