code: def _parse_template_or_argument(self):
          
          self._head += 2
          braces = 2
          while self._read() == "{":
              self._head += 1
              braces += 1
          has_content = False
          self._push()
  
          while braces:
              if braces == 1:
                  return self._emit_text_then_stack("{")
              if braces == 2:
                  try:
                      self._parse_template(has_content)
                  except BadRoute:
                      return self._emit_text_then_stack("{{")
                  break
              try:
                  self._parse_argument()
                  braces -= 3
              except BadRoute:
                  try:
                      self._parse_template(has_content)
                      braces -= 2
                  except BadRoute:
                      return self._emit_text_then_stack("{" * braces)
              if braces:
                  has_content = True
                  self._head += 1
  
          self._emit_all(self._pop())
          if self._context & contexts.FAIL_NEXT:
              self._context ^= contexts.FAIL_NEXT
docs: Parse a template or argument at the head of the wikicode string.