PyTracer.data:
    { filename: { lineno: None, .. }, ... }
    OR: { filename: { (l1, l2): None, .. }, ... }

CoverageData.lines:
    { filename: { lineno: None, ...}, ... }

Collector.get_line_data():
    PyTracer.data  -->  { filename: { lineno: None, .. }, ... }
    returns { filename: { lineno: None, .. }, ... }

    called by:
        coverage._harvest_data, passed into CoverageData.add_line_data()

CoverageData.add_line_data( { filename: { lineno: None, .. }, ... } )
    --> data.lines

CoverageData.measured_files():
    returns [filename, ...]
    called by:
        Reporter.find_code_units()
        tests

CoverageData.executed_lines():
    returns { lineno: None, ... }
    called by:
        coverage._analyze()

CoverageData.summary():
    returns { filename: count(lineno), ... }
    called by:
        cmdline (for "debug data")
        tests

.coverage
    {'lines': { filename: [lineno, ...], ... }}
