code: def parse_field(lexer: Lexer) -> FieldNode:
      
      start = lexer.token
      name_or_alias = parse_name(lexer)
      if expect_optional_token(lexer, TokenKind.COLON):
          alias: Optional[NameNode] = name_or_alias
          name = parse_name(lexer)
      else:
          alias = None
          name = name_or_alias
      return FieldNode(
          alias=alias,
          name=name,
          arguments=parse_arguments(lexer, False),
          directives=parse_directives(lexer, False),
          selection_set=parse_selection_set(lexer)
          if peek(lexer, TokenKind.BRACE_L)
          else None,
          loc=loc(lexer, start),
      )
docs: Field: Alias? Name Arguments? Directives? SelectionSet?