'Parse the header; may return None if header is invalid'

@classmethod
def parse(cls, header):

    m = _rx_range.match((header or ''))
    if (not m):
        return None
    (start, end) = m.groups()
    if (not start):
        return cls((- int(end)), None)
    start = int(start)
    if (not end):
        return cls(start, None)
    end = (int(end) + 1)
    if (start >= end):
        return None
    return cls(start, end)
