code: def InTemplateArgumentList(self, clean_lines, linenum, pos):
      
      while linenum < clean_lines.NumLines():
        # Find the earliest character that might indicate a template argument
        line = clean_lines.elided[linenum]
        match = Match(r'^[^{};=\[\]\.<>]*(.)', line[pos:])
        if not match:
          linenum += 1
          pos = 0
          continue
        token = match.group(1)
        pos += len(match.group(0))
  
        # These things do not look like template argument list:
        #   class Suspect {
        #   class Suspect x; }
        if token in ('{', '}', ';'): return False
  
        # These things look like template argument list:
        #   template <class Suspect>
        #   template <class Suspect = default_value>
        #   template <class Suspect[]>
        #   template <class Suspect...>
        if token in ('>', '=', '[', ']', '.'): return True
  
        # Check if token is an unmatched '<'.
        # If not, move on to the next character.
        if token != '<':
          pos += 1
          if pos >= len(line):
            linenum += 1
            pos = 0
          continue
  
        # We can't be sure if we just find a single '<', and need to
        # find the matching '>'.
        (_, end_line, end_pos) = CloseExpression(clean_lines, linenum, pos - 1)
        if end_pos < 0:
          # Not sure if template argument list or syntax error in file
          return False
        linenum = end_line
        pos = end_pos
      return False
docs: Check if current position is inside template argument list.
  
      Args:
        clean_lines: A CleansedLines instance containing the file.
        linenum: The number of the line to check.
        pos: position just after the suspected template argument.
      Returns:
        True if (linenum, pos) is inside template arguments.