'Returns a non-empty error message if the next header is out of order.
This function also updates the internal state to be ready to check
the next include.
Args:
header_type: One of the _XXX_HEADER constants defined above.
Returns:
The empty string if the header is in the right order, or an
error message describing what\'s wrong.'

def CheckNextIncludeOrder(self, header_type):

    error_message = ('Found    %s    after    %s' % (self._TYPE_NAMES[header_type], self._SECTION_NAMES[self._section]))
    last_section = self._section
    if (header_type == _C_SYS_HEADER):
        if (self._section <= self._C_SECTION):
            self._section = self._C_SECTION
        else:
            self._last_header = ''
            return error_message
    elif (header_type == _CPP_SYS_HEADER):
        if (self._section <= self._CPP_SECTION):
            self._section = self._CPP_SECTION
        else:
            self._last_header = ''
            return error_message
    elif (header_type == _LIKELY_MY_HEADER):
        if (self._section <= self._MY_H_SECTION):
            self._section = self._MY_H_SECTION
        else:
            self._section = self._OTHER_H_SECTION
    elif (header_type == _POSSIBLE_MY_HEADER):
        if (self._section <= self._MY_H_SECTION):
            self._section = self._MY_H_SECTION
        else:
            self._section = self._OTHER_H_SECTION
    else:
        assert (header_type == _OTHER_HEADER)
        self._section = self._OTHER_H_SECTION
    if (last_section != self._section):
        self._last_header = ''
    return ''
