docs: def NewSection(self, token_type, section_name, pre_formatters):
          """For sections or repeated sections."""
          pre_formatters = [self._GetFormatter(f) for f in pre_formatters]
          
          # TODO: Consider getting rid of this dispatching, and turn _Do* into methods
          if token_type == REPEATED_SECTION_TOKEN:
              new_block = _RepeatedSection(section_name, pre_formatters)
              func = _DoRepeatedSection
          elif token_type == SECTION_TOKEN:
              new_block = _Section(section_name, pre_formatters)
              func = _DoSection
          elif token_type == DEF_TOKEN:
              new_block = _Section(section_name, [])
              func = _DoDef
          else:
              raise AssertionError('Invalid token type %s' % token_type)
          
          self._NewSection(func, new_block)