code: def parse_schema_extension(lexer: Lexer) -> SchemaExtensionNode:
      
      start = lexer.token
      expect_keyword(lexer, "extend")
      expect_keyword(lexer, "schema")
      directives = parse_directives(lexer, True)
      operation_types = (
          many_nodes(
              lexer, TokenKind.BRACE_L, parse_operation_type_definition, TokenKind.BRACE_R
          )
          if peek(lexer, TokenKind.BRACE_L)
          else []
      )
      if not directives and not operation_types:
          raise unexpected(lexer)
      return SchemaExtensionNode(
          directives=directives, operation_types=operation_types, loc=loc(lexer, start)
      )
docs: SchemaExtension