'Request a specific header from the server for an article or range
of articles.  If \'id\' is not None, a header for only the article
with that Message-ID will be requested.  If both low and high are
None, a header for the currently selected article will be selected;
If both low and high are zero-length strings, headers for all articles
in the currently selected group will be requested;  Otherwise, high
and low will be used as bounds - if one is None the first or last
article index will be substituted, as appropriate.'

def fetchXHeader(self, header, low=None, high=None, id=None):

    if (id is not None):
        r = (header + ('    <%s>' % (id,)))
    elif (low is high is None):
        r = header
    elif (high is None):
        r = (header + ('    %d-' % (low,)))
    elif (low is None):
        r = (header + ('    -%d' % (high,)))
    else:
        r = (header + ('    %d-%d' % (low, high)))
    self.sendLine(('XHDR    ' + r))
    self._newState(self._stateXHDR, self.getXHeaderFailed)
