'Uses the legislator search to get a full list of bills.  Search page
returns a maximum of 500 results.'

def get_full_bill_list(self, chamber, session):

    search_chamber = self.search_chamber(chamber)
    search_session = self.search_session(session)
    total_rows = list()
    bills = []
    stride = 500
    start = 0
    total = (300 if self.is_testing() else 10000)
    for bill_type in ('bill', 'concurrent', 'resolution'):
        for start in range(0, total, stride):
            url = (BILL_SEARCH_URL % (search_chamber, search_session, start, (start + stride), bill_type))
            html = self.get(url).text
            doc = lxml.html.fromstring(html)
            rows = doc.xpath('//table[@class="guided"]/tbody/tr')
            total_rows.extend(rows)
            if (len(rows) == 0):
                self.debug(('Total    Bills    Found:    %d' % len(total_rows)))
                break
    for row in total_rows:
        bill = {}
        bill_details_link = row.xpath('td[2]/a')[0]
        bill['bill_url'] = urllib.parse.urljoin(BILL_DETAIL_URL_BASE, bill_details_link.get('href'))
        bill['version_url'] = (VERSION_URL % (search_session[(-4):], search_session[0], bill_details_link.text_content()))
        bills.append(bill)
    return bills
