docs: def _print_message(self, prefix, message, verbose=True):
          'Prints a message and takes care of all sorts of nasty code'
  
          # Load up the standard output.
          output = ['\n', prefix, message['message']]
  
          # We have some extra stuff for verbose mode.
          if verbose:
              verbose_output = []
  
              # Detailed problem description.
              if message['description']:
                  verbose_output.append(
                      self._flatten_list(message['description']))
  
              if message.get('signing_severity'):
                  verbose_output.append(
                      ('\tAutomated signing severity: %s' %
                       message['signing_severity']))
  
              if message.get('signing_help'):
                  verbose_output.append(
                      '\tSuggestions for passing automated signing:')
                  verbose_output.append(
                      self._flatten_list(message['signing_help']))
  
              # Show the user what tier we're on
              verbose_output.append('\tTier:\t%d' % message['tier'])
  
              # If file information is available, output that as well.
              files = message['file']
              if files is not None and files != '':
                  fmsg = '\tFile:\t%s'
  
                  # Nested files (subpackes) are stored in a list.
                  if type(files) is list:
                      if files[-1] == '':
                          files[-1] = '(none)'
                      verbose_output.append(fmsg % ' > '.join(files))
                  else:
                      verbose_output.append(fmsg % files)
  
              # If there is a line number, that gets put on the end.
              if message['line']:
                  verbose_output.append('\tLine:\t%s' % message['line'])
              if message['column'] and message['column'] != 0:
                  verbose_output.append('\tColumn:\t%d' % message['column'])
  
              if message.get('context'):
                  verbose_output.append('\tContext:')
                  verbose_output.extend([('\t> %s' % x
                                          if x is not None
                                          else '\t>' + ('-' * 20))
                                         for x
                                         in message['context']])
  
              # Stick it in with the standard items.
              output.append('\n')
              output.append('\n'.join(verbose_output))
  
          # Send the final output to the handler to be rendered.
          self.handler.write(u''.join(map(unicodehelper.decode, output)))