code: def parse_fragment_definition(lexer: Lexer) -> FragmentDefinitionNode:
      
      start = lexer.token
      expect_keyword(lexer, "fragment")
      # Experimental support for defining variables within fragments changes the grammar
      # of FragmentDefinition
      if lexer.experimental_fragment_variables:
          return FragmentDefinitionNode(
              name=parse_fragment_name(lexer),
              variable_definitions=parse_variable_definitions(lexer),
              type_condition=parse_type_condition(lexer),
              directives=parse_directives(lexer, False),
              selection_set=parse_selection_set(lexer),
              loc=loc(lexer, start),
          )
      return FragmentDefinitionNode(
          name=parse_fragment_name(lexer),
          type_condition=parse_type_condition(lexer),
          directives=parse_directives(lexer, False),
          selection_set=parse_selection_set(lexer),
          loc=loc(lexer, start),
      )
docs: FragmentDefinition