<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def PushSection(self, name, pre_formatters):
 """Given a section name, push it on the top of the stack. Returns: The new section, or None if there is no such section. """

        if name == '@':
            value = self.stack[-1].context
        else:
            value = self.stack[-1].context.get(name)
        
        # Apply pre-formatters
        for i, (f, args, formatter_type) in enumerate(pre_formatters):
            if formatter_type == ENHANCED_FUNC:
                value = f(value, self, args)
            elif formatter_type == SIMPLE_FUNC:
                value = f(value)
            else:
                assert False, 'Invalid formatter type %r' % formatter_type
        
        self.stack.append(_Frame(value))
        return value