Outputs a colorful hexdump of the first argument. 

        This function will attempt to 'flatten' iterable data passed to it until all remaining elements
        are binary representable.

        In python2, objects should be of type 'str', in python3, 'bytes' or 'bytearray' will work.

        The level of the last message printed is used unless specified otherwise with the level= kwarg

        Arguments to pass to hexdump:
            width(int): The number of characters per line
            skip(bool): Set to True, if repeated lines should be replaced by a "*"
            hexii(bool): Set to True, if a hexii-dump should be returned instead of a hexdump.
            begin(int):  Offset of the first byte to print in the left column
            highlight(iterable): Byte values to highlight.

def hexdump(self, s, *args, **kwargs):
        """
        Outputs a colorful hexdump of the first argument. 

        This function will attempt to 'flatten' iterable data passed to it until all remaining elements
        are binary representable.

        In python2, objects should be of type 'str', in python3, 'bytes' or 'bytearray' will work.

        The level of the last message printed is used unless specified otherwise with the level= kwarg

        Arguments to pass to hexdump:
            width(int): The number of characters per line
            skip(bool): Set to True, if repeated lines should be replaced by a "*"
            hexii(bool): Set to True, if a hexii-dump should be returned instead of a hexdump.
            begin(int):  Offset of the first byte to print in the left column
            highlight(iterable): Byte values to highlight.
        """
        levelOverride = kwargs.get('level') or self._lastlevel
        hexdmp = hexdump.hexdump(self, s, **kwargs)
        self._log(levelOverride, hexdmp, 'indented', args, kwargs)