'Extracts all the requested info for a given bill.
Calls the parent\'s methods to enter the results into JSON files.'

def get_bill_info(self, chamber, session, bill_detail_url, version_list_url):

    chamber = ('lower' if (chamber.lower() == 'house') else chamber)
    chamber = ('upper' if (chamber.lower() == 'senate') else chamber)
    doc = self.lxmlize(bill_detail_url)
    transmit_check = self.get_node(doc, '//h1[text()[contains(.,"Bills")]]/following-sibling::ul/li/text()')
    if ((transmit_check is not None) and ('has    not    been    transmitted' in transmit_check.strip())):
        self.logger.debug('Bill    has    not    been    transmitted    to    other    chamber    ...    skipping    {0}'.format(bill_detail_url))
        return
    bill_id = self.get_node(doc, '//h1/text()')
    self.logger.debug(bill_id)
    bill_title_text = self.get_node(doc, '//h2[text()[contains(.,"Description")]]/following-sibling::p/text()')
    if (bill_title_text is not None):
        bill_title = bill_title_text.strip()
    else:
        long_desc_url = self.get_node(doc, '//a[text()[contains(.,"Long    Description")]]/@href')
        long_desc_page = self.lxmlize(long_desc_url)
        long_desc_text = self.get_node(long_desc_page, '//h1/following-sibling::p/text()')
        if (long_desc_text is not None):
            bill_title = long_desc_text.strip()
        else:
            bill_title = 'No    title    found.'
            self.logger.warning('No    title    found    for    {}.'.format(bill_id))
    self.logger.debug(bill_title)
    bill_type = {'F': 'bill', 'R': 'resolution', 'C': 'concurrent    resolution'}[bill_id[1]]
    bill = Bill(bill_id, legislative_session=session, chamber=chamber, title=bill_title, classification=bill_type)
    bill.add_source(bill_detail_url)
    for subject in self._subject_mapping[bill_id]:
        bill.add_subject(subject)
    companion = doc.xpath('//table[@class="status_info"]//tr[1]/td[2]/a[starts-with(@href,    "?")]/text()')
    companion = (self.make_bill_id(companion[0]) if (len(companion) > 0) else None)
    companion_chamber = self.chamber_from_bill(companion)
    if (companion is not None):
        bill.add_companion(companion, chamber=companion_chamber)
    bill = self.extract_sponsors(bill, doc, chamber)
    bill = self.extract_actions(bill, doc, chamber)
    bill = self.extract_versions(bill, doc, chamber, version_list_url)
    (yield bill)
