<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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)