def colorize(string, color='black', bold=False, underline=False, highlight=False):
        """
        :param string: message to colorize.
        :type string: unicode
        :param color: one of :attr:`fatbotslim.irc.colors.ColorMessage._colors`.
        :type color: str
        :param bold: if the string has to be in bold.
        :type bold: bool
        :param underline: if the string has to be underlined.
        :type underline: bool
        :param highlight: if the string foreground and background has to be switched.
        :type highlight: bool
        """
        result = ''
        if bold:
            result += ColorMessage._bold
        if underline:
            result += ColorMessage._underline
        if highlight:
            result += ColorMessage._highlight
        result += ColorMessage._colors.get(color, ColorMessage._colors['black'])
        return result + string + ColorMessage._reset