docs: def to_end_tag(self, tag_func):
          """
          Creates a tag that parses until it finds the corresponding end
          tag, eg: for a tag named ``mytag`` it will parse until
          ``endmytag``. The decorated func's return value is used to
          render the parsed content and takes three arguments - the
          parsed content between the start and end tags, the template
          context and the tag token.
          """
          @wraps(tag_func)
          def tag_wrapper(parser, token):
  
              class ToEndTagNode(template.Node):
  
                  def __init__(self):
                      end_name = "end%s" % tag_func.__name__
                      self.nodelist = parser.parse((end_name,))
                      parser.delete_first_token()
  
                  def render(self, context):
                      args = (self.nodelist.render(context), context, token)
                      return tag_func(*args[:tag_func.__code__.co_argcount])
  
              return ToEndTagNode()
  
          return self.tag(tag_wrapper)