docs: def print_summary(self, verbose=False, no_color=False):
          'Prints a summary of the validation process so far.'
  
          types = {0: 'Unknown',
                   1: 'Extension/Multi-Extension',
                   2: 'Full Theme',
                   3: 'Dictionary',
                   4: 'Language Pack',
                   5: 'Search Provider',
                   7: 'Subpackage',
                   8: 'App'}
          detected_type = types[self.detected_type]
  
          buffer = StringIO()
          self.handler = OutputHandler(buffer, no_color)
  
          # Make a neat little printout.
          self.handler.write('\n<<GREEN>>Summary:') \
              .write('-' * 30) \
              .write('Detected type: <<BLUE>>%s' % detected_type) \
              .write('-' * 30)
  
          if self.failed():
              self.handler.write('<<BLUE>>Test failed! Errors:')
  
              # Print out all the errors/warnings:
              for error in self.errors:
                  self._print_message('<<RED>>Error:<<NORMAL>>\t',
                                      error, verbose)
              for warning in self.warnings:
                  self._print_message('<<YELLOW>>Warning:<<NORMAL>> ',
                                      warning, verbose)
          else:
              self.handler.write('<<GREEN>>All tests succeeded!')
  
          if self.notices:
              for notice in self.notices:
                  self._print_message(prefix='<<WHITE>>Notice:<<NORMAL>>\t',
                                      message=notice,
                                      verbose=verbose)
  
          if 'is_jetpack' in self.metadata and verbose:
              self.handler.write('\n')
              self.handler.write('<<GREEN>>Jetpack add-on detected.<<NORMAL>>\n'
                                 'Identified files:')
              if 'jetpack_identified_files' in self.metadata:
                  for filename, data in \
                          self.metadata['jetpack_identified_files'].items():
                      self.handler.write((' %s\n' % filename) +
                                         ('  %s : %s' % data))
  
              if 'jetpack_unknown_files' in self.metadata:
                  self.handler.write('Unknown files:')
                  for filename in self.metadata['jetpack_unknown_files']:
                      self.handler.write(' %s' % filename)
  
          self.handler.write('\n')
          if self.unfinished:
              self.handler.write('<<RED>>Validation terminated early')
              self.handler.write('Errors during validation are preventing '
                                 'the validation process from completing.')
              self.handler.write('Use the <<YELLOW>>--determined<<NORMAL>> '
                                 'flag to ignore these errors.')
              self.handler.write('\n')
  
          return buffer.getvalue()