# typed: true

# DO NOT EDIT MANUALLY
# This is an autogenerated file for types exported from the `parser` gem.
# Please instead update this file by running `bin/tapioca gem parser`.


# @api public
#
# source://parser//lib/parser.rb#19
module Parser
  class << self
    private

    # source://parser//lib/parser/current.rb#5
    def warn_syntax_deviation(feature, version); end
  end
end

# @api public
#
# source://parser//lib/parser.rb#24
module Parser::AST; end

# {Parser::AST::Node} contains information about a single AST node and its
# child nodes. It extends the basic [AST::Node](https://www.rubydoc.info/gems/ast/AST/Node)
# class provided by gem [ast](https://www.rubydoc.info/gems/ast).
#
# @api public
#
# source://parser//lib/parser/ast/node.rb#17
class Parser::AST::Node < ::AST::Node
  # Assigns various properties to this AST node. Currently only the
  # location can be set.
  #
  # @api public
  # @option properties
  # @param properties [Hash]
  #
  # source://parser//lib/parser/ast/node.rb#30
  def assign_properties(properties); end

  # Source map for this Node.
  #
  # @api public
  # @return [Parser::Source::Map]
  #
  # source://parser//lib/parser/ast/node.rb#18
  def loc; end

  # Source map for this Node.
  #
  # @api public
  # @return [Parser::Source::Map]
  #
  # source://parser//lib/parser/ast/node.rb#18
  def location; end
end

# @api public
#
# source://parser//lib/parser/ast/processor.rb#9
class Parser::AST::Processor
  include ::AST::Processor::Mixin

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_alias(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_and(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_and_asgn(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#118
  def on_arg(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_arg_expr(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_args(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#105
  def on_argument(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_array(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_array_pattern(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_array_pattern_with_tail(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#34
  def on_back_ref(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_begin(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_block(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_block_pass(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#118
  def on_blockarg(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_blockarg_expr(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_break(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_case(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_case_match(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#89
  def on_casgn(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_class(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#81
  def on_const(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_const_pattern(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#181
  def on_csend(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#34
  def on_cvar(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#58
  def on_cvasgn(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#160
  def on_def(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_defined?(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#169
  def on_defs(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_dstr(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_dsym(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_eflipflop(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#288
  def on_empty_else(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_ensure(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_erange(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_find_pattern(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_for(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#118
  def on_forward_arg(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_forwarded_kwrestarg(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_forwarded_restarg(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#34
  def on_gvar(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#58
  def on_gvasgn(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_hash(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_hash_pattern(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_if(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_if_guard(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_iflipflop(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_in_match(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_in_pattern(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_index(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_indexasgn(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_irange(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#34
  def on_ivar(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#58
  def on_ivasgn(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#118
  def on_kwarg(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_kwargs(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_kwbegin(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#118
  def on_kwoptarg(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#118
  def on_kwrestarg(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_kwsplat(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_lambda(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#34
  def on_lvar(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#58
  def on_lvasgn(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_masgn(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_match_alt(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_match_as(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_match_current_line(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_match_pattern(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_match_pattern_p(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_match_rest(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#34
  def on_match_var(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_match_with_lvasgn(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_mlhs(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_module(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_next(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_not(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#34
  def on_nth_ref(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#198
  def on_numblock(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#70
  def on_op_asgn(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#118
  def on_optarg(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_or(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_or_asgn(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_pair(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_pin(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_postexe(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_preexe(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#132
  def on_procarg0(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_redo(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_regexp(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_resbody(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_rescue(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#118
  def on_restarg(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_restarg_expr(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_retry(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_return(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_sclass(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#181
  def on_send(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#118
  def on_shadowarg(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_splat(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_super(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_undef(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_unless_guard(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_until(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_until_post(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#29
  def on_var(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#45
  def on_vasgn(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_when(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_while(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_while_post(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_xstr(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def on_yield(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#281
  def process_argument_node(node); end

  # @api public
  #
  # source://parser//lib/parser/ast/processor.rb#12
  def process_regular_node(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#273
  def process_var_asgn_node(node); end

  # @api public
  # @private
  #
  # source://parser//lib/parser/ast/processor.rb#265
  def process_variable_node(node); end
end

# Base class for version-specific parsers.
#
# @api public
#
# source://parser//lib/parser/base.rb#19
class Parser::Base < ::Racc::Parser
  # @api public
  # @param builder [Parser::Builders::Default] The AST builder to use.
  # @return [Base] a new instance of Base
  #
  # source://parser//lib/parser/base.rb#129
  def initialize(builder = T.unsafe(nil)); end

  # @api public
  #
  # source://parser//lib/parser/base.rb#117
  def builder; end

  # @api public
  #
  # source://parser//lib/parser/base.rb#120
  def context; end

  # @api public
  #
  # source://parser//lib/parser/base.rb#122
  def current_arg_stack; end

  # @api public
  # @return [Parser::Diagnostic::Engine]
  #
  # source://parser//lib/parser/base.rb#116
  def diagnostics; end

  # @api public
  #
  # source://parser//lib/parser/base.rb#115
  def lexer; end

  # @api public
  #
  # source://parser//lib/parser/base.rb#121
  def max_numparam_stack; end

  # Parses a source buffer and returns the AST, or `nil` in case of a non fatal error.
  #
  # @api public
  # @param source_buffer [Parser::Source::Buffer] The source buffer to parse.
  # @return [Parser::AST::Node, nil]
  #
  # source://parser//lib/parser/base.rb#189
  def parse(source_buffer); end

  # Parses a source buffer and returns the AST and the source code comments.
  #
  # @api public
  # @return [Array]
  # @see #parse
  # @see Parser::Source::Comment#associate
  #
  # source://parser//lib/parser/base.rb#207
  def parse_with_comments(source_buffer); end

  # @api public
  #
  # source://parser//lib/parser/base.rb#124
  def pattern_hash_keys; end

  # @api public
  #
  # source://parser//lib/parser/base.rb#123
  def pattern_variables; end

  # Resets the state of the parser.
  #
  # @api public
  #
  # source://parser//lib/parser/base.rb#170
  def reset; end

  # @api public
  #
  # source://parser//lib/parser/base.rb#119
  def source_buffer; end

  # @api public
  # @return [Parser::StaticEnvironment]
  #
  # source://parser//lib/parser/base.rb#118
  def static_env; end

  # Parses a source buffer and returns the AST, the source code comments,
  # and the tokens emitted by the lexer. In case of a fatal error, a {SyntaxError}
  # is raised, unless `recover` is true. In case of an error
  # (non-fatal or recovered), `nil` is returned instead of the AST, and
  # comments as well as tokens are only returned up to the location of
  # the error.
  #
  # Currently, token stream format returned by #tokenize is not documented,
  # but is considered part of a public API and only changed according
  # to Semantic Versioning.
  #
  # However, note that the exact token composition of various constructs
  # might vary. For example, a string `"foo"` is represented equally well
  # by `:tSTRING_BEG " :tSTRING_CONTENT foo :tSTRING_END "` and
  # `:tSTRING "foo"`; such details must not be relied upon.
  #
  # @api public
  # @param source_buffer [Parser::Source::Buffer]
  # @param recover [Boolean] If true, recover from syntax errors. False by default.
  # @return [Array]
  #
  # source://parser//lib/parser/base.rb#236
  def tokenize(source_buffer, recover = T.unsafe(nil)); end

  private

  # @api public
  #
  # source://parser//lib/parser/base.rb#260
  def check_kwarg_name(name_t); end

  # @api public
  #
  # source://parser//lib/parser/base.rb#269
  def diagnostic(level, reason, arguments, location_t, highlights_ts = T.unsafe(nil)); end

  # @api public
  #
  # source://parser//lib/parser/base.rb#254
  def next_token; end

  # @api public
  #
  # source://parser//lib/parser/base.rb#285
  def on_error(error_token_id, error_value, value_stack); end

  class << self
    # @api public
    # @return [Parser::Base] parser with the default options set.
    #
    # source://parser//lib/parser/base.rb#87
    def default_parser; end

    # Parses a string of Ruby code and returns the AST. If the source
    # cannot be parsed, {SyntaxError} is raised and a diagnostic is
    # printed to `stderr`.
    #
    # @api public
    # @example
    #   Parser::Base.parse('puts "hello"')
    # @param string [String] The block of code to parse.
    # @param file [String] The name of the file the code originated from.
    # @param line [Numeric] The initial line number.
    # @return [Parser::AST::Node]
    #
    # source://parser//lib/parser/base.rb#33
    def parse(string, file = T.unsafe(nil), line = T.unsafe(nil)); end

    # Parses Ruby source code by reading it from a file. If the source
    # cannot be parsed, {SyntaxError} is raised and a diagnostic is
    # printed to `stderr`.
    #
    # @api public
    # @param filename [String] Path to the file to parse.
    # @return [Parser::AST::Node]
    # @see #parse
    #
    # source://parser//lib/parser/base.rb#67
    def parse_file(filename); end

    # Parses Ruby source code by reading it from a file and returns the AST and
    # comments. If the source cannot be parsed, {SyntaxError} is raised and a
    # diagnostic is printed to `stderr`.
    #
    # @api public
    # @param filename [String] Path to the file to parse.
    # @return [Array]
    # @see #parse
    #
    # source://parser//lib/parser/base.rb#80
    def parse_file_with_comments(filename); end

    # Parses a string of Ruby code and returns the AST and comments. If the
    # source cannot be parsed, {SyntaxError} is raised and a diagnostic is
    # printed to `stderr`.
    #
    # @api public
    # @example
    #   Parser::Base.parse_with_comments('puts "hello"')
    # @param string [String] The block of code to parse.
    # @param file [String] The name of the file the code originated from.
    # @param line [Numeric] The initial line number.
    # @return [Array]
    #
    # source://parser//lib/parser/base.rb#52
    def parse_with_comments(string, file = T.unsafe(nil), line = T.unsafe(nil)); end

    private

    # @api public
    #
    # source://parser//lib/parser/base.rb#100
    def setup_source_buffer(file, line, string, encoding); end
  end
end

# @api public
#
# source://parser//lib/parser.rb#78
module Parser::Builders; end

# source://parser//lib/parser/builders/default.rb#8
class Parser::Builders::Default
  # source://parser//lib/parser/builders/default.rb#243
  def initialize; end

  # source://parser//lib/parser/builders/default.rb#703
  def __ENCODING__(__ENCODING__t); end

  # source://parser//lib/parser/builders/default.rb#348
  def __FILE__(__FILE__t); end

  # source://parser//lib/parser/builders/default.rb#312
  def __LINE__(__LINE__t); end

  # source://parser//lib/parser/builders/default.rb#622
  def accessible(node); end

  # source://parser//lib/parser/builders/default.rb#878
  def alias(alias_t, to, from); end

  # source://parser//lib/parser/builders/default.rb#917
  def arg(name_t); end

  # source://parser//lib/parser/builders/default.rb#1007
  def arg_expr(expr); end

  # source://parser//lib/parser/builders/default.rb#887
  def args(begin_t, args, end_t, check_args = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#440
  def array(begin_t, elements, end_t); end

  # source://parser//lib/parser/builders/default.rb#1598
  def array_pattern(lbrack_t, elements, rbrack_t); end

  # source://parser//lib/parser/builders/default.rb#767
  def assign(lhs, eql_t, rhs); end

  # source://parser//lib/parser/builders/default.rb#712
  def assignable(node); end

  # source://parser//lib/parser/builders/default.rb#540
  def associate(begin_t, pairs, end_t); end

  # source://parser//lib/parser/builders/default.rb#1175
  def attr_asgn(receiver, dot_t, selector_t); end

  # source://parser//lib/parser/builders/default.rb#612
  def back_ref(token); end

  # source://parser//lib/parser/builders/default.rb#1443
  def begin(begin_t, body, end_t); end

  # source://parser//lib/parser/builders/default.rb#1385
  def begin_body(compound_stmt, rescue_bodies = T.unsafe(nil), else_t = T.unsafe(nil), else_ = T.unsafe(nil), ensure_t = T.unsafe(nil), ensure_ = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#1461
  def begin_keyword(begin_t, body, end_t); end

  # source://parser//lib/parser/builders/default.rb#1213
  def binary_op(receiver, operator_t, arg); end

  # source://parser//lib/parser/builders/default.rb#1122
  def block(method_call, begin_t, args, body, end_t); end

  # source://parser//lib/parser/builders/default.rb#1161
  def block_pass(amper_t, arg); end

  # source://parser//lib/parser/builders/default.rb#982
  def blockarg(amper_t, name_t); end

  # source://parser//lib/parser/builders/default.rb#1027
  def blockarg_expr(amper_t, expr); end

  # source://parser//lib/parser/builders/default.rb#1113
  def call_lambda(lambda_t); end

  # source://parser//lib/parser/builders/default.rb#1096
  def call_method(receiver, dot_t, selector_t, lparen_t = T.unsafe(nil), args = T.unsafe(nil), rparen_t = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#1068
  def call_type_for_dot(dot_t); end

  # source://parser//lib/parser/builders/default.rb#1318
  def case(case_t, expr, when_bodies, else_t, else_body, end_t); end

  # source://parser//lib/parser/builders/default.rb#1481
  def case_match(case_t, expr, in_bodies, else_t, else_body, end_t); end

  # source://parser//lib/parser/builders/default.rb#343
  def character(char_t); end

  # source://parser//lib/parser/builders/default.rb#284
  def complex(complex_t); end

  # source://parser//lib/parser/builders/default.rb#1431
  def compstmt(statements); end

  # source://parser//lib/parser/builders/default.rb#1294
  def condition(cond_t, cond, then_t, if_true, else_t, if_false, end_t); end

  # source://parser//lib/parser/builders/default.rb#1300
  def condition_mod(if_true, if_false, cond_t, cond); end

  # source://parser//lib/parser/builders/default.rb#686
  def const(name_t); end

  # source://parser//lib/parser/builders/default.rb#698
  def const_fetch(scope, t_colon2, name_t); end

  # source://parser//lib/parser/builders/default.rb#691
  def const_global(t_colon3, name_t); end

  # source://parser//lib/parser/builders/default.rb#763
  def const_op_assignable(node); end

  # source://parser//lib/parser/builders/default.rb#1628
  def const_pattern(const, ldelim_t, pattern, rdelim_t); end

  # source://parser//lib/parser/builders/default.rb#607
  def cvar(token); end

  # source://parser//lib/parser/builders/default.rb#388
  def dedent_string(node, dedent_level); end

  # source://parser//lib/parser/builders/default.rb#814
  def def_class(class_t, name, lt_t, superclass, body, end_t); end

  # source://parser//lib/parser/builders/default.rb#845
  def def_endless_method(def_t, name_t, args, assignment_t, body); end

  # source://parser//lib/parser/builders/default.rb#863
  def def_endless_singleton(def_t, definee, dot_t, name_t, args, assignment_t, body); end

  # source://parser//lib/parser/builders/default.rb#837
  def def_method(def_t, name_t, args, body, end_t); end

  # source://parser//lib/parser/builders/default.rb#827
  def def_module(module_t, name, body, end_t); end

  # source://parser//lib/parser/builders/default.rb#821
  def def_sclass(class_t, lshft_t, expr, body, end_t); end

  # source://parser//lib/parser/builders/default.rb#853
  def def_singleton(def_t, definee, dot_t, name_t, args, body, end_t); end

  # source://parser//lib/parser/builders/default.rb#237
  def emit_file_line_as_literals; end

  # source://parser//lib/parser/builders/default.rb#237
  def emit_file_line_as_literals=(_arg0); end

  # source://parser//lib/parser/builders/default.rb#265
  def false(false_t); end

  # source://parser//lib/parser/builders/default.rb#1619
  def find_pattern(lbrack_t, elements, rbrack_t); end

  # source://parser//lib/parser/builders/default.rb#276
  def float(float_t); end

  # source://parser//lib/parser/builders/default.rb#1339
  def for(for_t, iterator, in_t, iteratee, do_t, body, end_t); end

  # source://parser//lib/parser/builders/default.rb#913
  def forward_arg(dots_t); end

  # source://parser//lib/parser/builders/default.rb#903
  def forward_only_args(begin_t, dots_t, end_t); end

  # source://parser//lib/parser/builders/default.rb#1084
  def forwarded_args(dots_t); end

  # source://parser//lib/parser/builders/default.rb#1092
  def forwarded_kwrestarg(dstar_t); end

  # source://parser//lib/parser/builders/default.rb#1088
  def forwarded_restarg(star_t); end

  # source://parser//lib/parser/builders/default.rb#596
  def gvar(token); end

  # source://parser//lib/parser/builders/default.rb#1592
  def hash_pattern(lbrace_t, kwargs, rbrace_t); end

  # source://parser//lib/parser/builders/default.rb#586
  def ident(token); end

  # source://parser//lib/parser/builders/default.rb#1508
  def if_guard(if_t, if_body); end

  # source://parser//lib/parser/builders/default.rb#1487
  def in_match(lhs, in_t, rhs); end

  # source://parser//lib/parser/builders/default.rb#1502
  def in_pattern(in_t, pattern, guard, then_t, body); end

  # source://parser//lib/parser/builders/default.rb#1184
  def index(receiver, lbrack_t, indexes, rbrack_t); end

  # source://parser//lib/parser/builders/default.rb#1198
  def index_asgn(receiver, lbrack_t, indexes, rbrack_t); end

  # source://parser//lib/parser/builders/default.rb#272
  def integer(integer_t); end

  # source://parser//lib/parser/builders/default.rb#591
  def ivar(token); end

  # source://parser//lib/parser/builders/default.rb#1347
  def keyword_cmd(type, keyword_t, lparen_t = T.unsafe(nil), args = T.unsafe(nil), rparen_t = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#944
  def kwarg(name_t); end

  # source://parser//lib/parser/builders/default.rb#970
  def kwnilarg(dstar_t, nil_t); end

  # source://parser//lib/parser/builders/default.rb#951
  def kwoptarg(name_t, value); end

  # source://parser//lib/parser/builders/default.rb#958
  def kwrestarg(dstar_t, name_t = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#535
  def kwsplat(dstar_t, arg); end

  # source://parser//lib/parser/builders/default.rb#1287
  def logical_op(type, lhs, op_t, rhs); end

  # source://parser//lib/parser/builders/default.rb#1325
  def loop(type, keyword_t, cond, do_t, body, end_t); end

  # source://parser//lib/parser/builders/default.rb#1330
  def loop_mod(type, body, keyword_t, cond); end

  # source://parser//lib/parser/builders/default.rb#1642
  def match_alt(left, pipe_t, right); end

  # source://parser//lib/parser/builders/default.rb#1649
  def match_as(value, assoc_t, as); end

  # source://parser//lib/parser/builders/default.rb#1528
  def match_hash_var(name_t); end

  # source://parser//lib/parser/builders/default.rb#1542
  def match_hash_var_from_str(begin_t, strings, end_t); end

  # source://parser//lib/parser/builders/default.rb#1680
  def match_label(label_type, label); end

  # source://parser//lib/parser/builders/default.rb#1656
  def match_nil_pattern(dstar_t, nil_t); end

  # source://parser//lib/parser/builders/default.rb#1235
  def match_op(receiver, match_t, arg); end

  # source://parser//lib/parser/builders/default.rb#1661
  def match_pair(label_type, label, value); end

  # source://parser//lib/parser/builders/default.rb#1492
  def match_pattern(lhs, match_t, rhs); end

  # source://parser//lib/parser/builders/default.rb#1497
  def match_pattern_p(lhs, match_t, rhs); end

  # source://parser//lib/parser/builders/default.rb#1581
  def match_rest(star_t, name_t = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#1516
  def match_var(name_t); end

  # source://parser//lib/parser/builders/default.rb#1624
  def match_with_trailing_comma(match, comma_t); end

  # source://parser//lib/parser/builders/default.rb#805
  def multi_assign(lhs, eql_t, rhs); end

  # source://parser//lib/parser/builders/default.rb#800
  def multi_lhs(begin_t, items, end_t); end

  # source://parser//lib/parser/builders/default.rb#255
  def nil(nil_t); end

  # source://parser//lib/parser/builders/default.rb#1263
  def not_op(not_t, begin_t = T.unsafe(nil), receiver = T.unsafe(nil), end_t = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#617
  def nth_ref(token); end

  # source://parser//lib/parser/builders/default.rb#899
  def numargs(max_numparam); end

  # source://parser//lib/parser/builders/default.rb#1038
  def objc_kwarg(kwname_t, assoc_t, name_t); end

  # source://parser//lib/parser/builders/default.rb#1052
  def objc_restarg(star_t, name = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#1166
  def objc_varargs(pair, rest_of_varargs); end

  # source://parser//lib/parser/builders/default.rb#774
  def op_assign(lhs, op_t, rhs); end

  # source://parser//lib/parser/builders/default.rb#924
  def optarg(name_t, eql_t, value); end

  # source://parser//lib/parser/builders/default.rb#488
  def pair(key, assoc_t, value); end

  # source://parser//lib/parser/builders/default.rb#505
  def pair_keyword(key_t, value); end

  # source://parser//lib/parser/builders/default.rb#521
  def pair_label(key_t); end

  # source://parser//lib/parser/builders/default.rb#493
  def pair_list_18(list); end

  # source://parser//lib/parser/builders/default.rb#513
  def pair_quoted(begin_t, parts, end_t, value); end

  # source://parser//lib/parser/builders/default.rb#225
  def parser; end

  # source://parser//lib/parser/builders/default.rb#225
  def parser=(_arg0); end

  # source://parser//lib/parser/builders/default.rb#1637
  def pin(pin_t, var); end

  # source://parser//lib/parser/builders/default.rb#1370
  def postexe(postexe_t, lbrace_t, compstmt, rbrace_t); end

  # source://parser//lib/parser/builders/default.rb#1365
  def preexe(preexe_t, lbrace_t, compstmt, rbrace_t); end

  # source://parser//lib/parser/builders/default.rb#992
  def procarg0(arg); end

  # source://parser//lib/parser/builders/default.rb#572
  def range_exclusive(lhs, dot3_t, rhs); end

  # source://parser//lib/parser/builders/default.rb#567
  def range_inclusive(lhs, dot2_t, rhs); end

  # source://parser//lib/parser/builders/default.rb#280
  def rational(rational_t); end

  # source://parser//lib/parser/builders/default.rb#426
  def regexp_compose(begin_t, parts, end_t, options); end

  # source://parser//lib/parser/builders/default.rb#417
  def regexp_options(regopt_t); end

  # source://parser//lib/parser/builders/default.rb#1377
  def rescue_body(rescue_t, exc_list, assoc_t, exc_var, then_t, compound_stmt); end

  # source://parser//lib/parser/builders/default.rb#933
  def restarg(star_t, name_t = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#1016
  def restarg_expr(star_t, expr = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#581
  def self(token); end

  # source://parser//lib/parser/builders/default.rb#975
  def shadowarg(name_t); end

  # source://parser//lib/parser/builders/default.rb#445
  def splat(star_t, arg = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#319
  def string(string_t); end

  # source://parser//lib/parser/builders/default.rb#329
  def string_compose(begin_t, parts, end_t); end

  # source://parser//lib/parser/builders/default.rb#324
  def string_internal(string_t); end

  # source://parser//lib/parser/builders/default.rb#355
  def symbol(symbol_t); end

  # source://parser//lib/parser/builders/default.rb#365
  def symbol_compose(begin_t, parts, end_t); end

  # source://parser//lib/parser/builders/default.rb#360
  def symbol_internal(symbol_t); end

  # source://parser//lib/parser/builders/default.rb#469
  def symbols_compose(begin_t, parts, end_t); end

  # source://parser//lib/parser/builders/default.rb#1305
  def ternary(cond, question_t, if_true, colon_t, if_false); end

  # source://parser//lib/parser/builders/default.rb#260
  def true(true_t); end

  # source://parser//lib/parser/builders/default.rb#294
  def unary_num(unary_t, numeric); end

  # source://parser//lib/parser/builders/default.rb#1251
  def unary_op(op_t, receiver); end

  # source://parser//lib/parser/builders/default.rb#873
  def undef_method(undef_t, names); end

  # source://parser//lib/parser/builders/default.rb#1512
  def unless_guard(unless_t, unless_body); end

  # source://parser//lib/parser/builders/default.rb#1312
  def when(when_t, patterns, then_t, body); end

  # source://parser//lib/parser/builders/default.rb#455
  def word(parts); end

  # source://parser//lib/parser/builders/default.rb#464
  def words_compose(begin_t, parts, end_t); end

  # source://parser//lib/parser/builders/default.rb#381
  def xstring_compose(begin_t, parts, end_t); end

  private

  # source://parser//lib/parser/builders/default.rb#1829
  def arg_name_collides?(this_name, that_name); end

  # source://parser//lib/parser/builders/default.rb#2025
  def arg_prefix_map(op_t, name_t = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#1999
  def binary_op_map(left_e, op_t, right_e); end

  # source://parser//lib/parser/builders/default.rb#2127
  def block_map(receiver_l, begin_t, end_t); end

  # source://parser//lib/parser/builders/default.rb#1804
  def check_assignment_to_numparam(name, loc); end

  # source://parser//lib/parser/builders/default.rb#1696
  def check_condition(cond); end

  # source://parser//lib/parser/builders/default.rb#1775
  def check_duplicate_arg(this_arg, map = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#1750
  def check_duplicate_args(args, map = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#1862
  def check_duplicate_pattern_key(name, loc); end

  # source://parser//lib/parser/builders/default.rb#1852
  def check_duplicate_pattern_variable(name, loc); end

  # source://parser//lib/parser/builders/default.rb#1844
  def check_lvar_name(name, loc); end

  # source://parser//lib/parser/builders/default.rb#1819
  def check_reserved_for_numparam(name, loc); end

  # source://parser//lib/parser/builders/default.rb#2293
  def collapse_string_parts?(parts); end

  # source://parser//lib/parser/builders/default.rb#1950
  def collection_map(begin_t, parts, end_t); end

  # source://parser//lib/parser/builders/default.rb#2154
  def condition_map(keyword_t, cond_e, begin_t, body_e, else_t, else_e, end_t); end

  # source://parser//lib/parser/builders/default.rb#1985
  def constant_map(scope, colon2_t, name_t); end

  # source://parser//lib/parser/builders/default.rb#2058
  def definition_map(keyword_t, operator_t, name_t, end_t); end

  # source://parser//lib/parser/builders/default.rb#1891
  def delimited_string_map(string_t); end

  # source://parser//lib/parser/builders/default.rb#2315
  def diagnostic(type, reason, arguments, location, highlights = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#2198
  def eh_keyword_map(compstmt_e, keyword_t, body_es, else_t, else_e); end

  # source://parser//lib/parser/builders/default.rb#2064
  def endless_definition_map(keyword_t, operator_t, name_t, assignment_t, body_e); end

  # source://parser//lib/parser/builders/default.rb#1946
  def expr_map(loc); end

  # source://parser//lib/parser/builders/default.rb#2179
  def for_map(keyword_t, in_t, begin_t, end_t); end

  # source://parser//lib/parser/builders/default.rb#2226
  def guard_map(keyword_t, guard_body_e); end

  # source://parser//lib/parser/builders/default.rb#2116
  def index_map(receiver_e, lbrack_t, rbrack_t); end

  # source://parser//lib/parser/builders/default.rb#1882
  def join_exprs(left_expr, right_expr); end

  # source://parser//lib/parser/builders/default.rb#2132
  def keyword_map(keyword_t, begin_t, args, end_t); end

  # source://parser//lib/parser/builders/default.rb#2149
  def keyword_mod_map(pre_e, keyword_t, post_e); end

  # source://parser//lib/parser/builders/default.rb#2035
  def kwarg_map(name_t, value_e = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#2346
  def kwargs?(node); end

  # source://parser//lib/parser/builders/default.rb#2310
  def loc(token); end

  # source://parser//lib/parser/builders/default.rb#2048
  def module_definition_map(keyword_t, name_e, operator_t, end_t); end

  # source://parser//lib/parser/builders/default.rb#1874
  def n(type, children, source_map); end

  # source://parser//lib/parser/builders/default.rb#1878
  def n0(type, source_map); end

  # source://parser//lib/parser/builders/default.rb#288
  def numeric(kind, token); end

  # source://parser//lib/parser/builders/default.rb#1916
  def pair_keyword_map(key_t, value_e); end

  # source://parser//lib/parser/builders/default.rb#1931
  def pair_quoted_map(begin_t, end_t, value_e); end

  # source://parser//lib/parser/builders/default.rb#1902
  def prefix_string_map(symbol); end

  # source://parser//lib/parser/builders/default.rb#2013
  def range_map(start_e, op_t, end_e); end

  # source://parser//lib/parser/builders/default.rb#1980
  def regexp_map(begin_t, end_t, options_e); end

  # source://parser//lib/parser/builders/default.rb#2185
  def rescue_body_map(keyword_t, exc_list_e, assoc_t, exc_var_e, then_t, compstmt_e); end

  # source://parser//lib/parser/builders/default.rb#2336
  def rewrite_hash_args_to_kwargs(args); end

  # source://parser//lib/parser/builders/default.rb#2098
  def send_binary_op_map(lhs_e, selector_t, rhs_e); end

  # source://parser//lib/parser/builders/default.rb#2121
  def send_index_map(receiver_e, lbrack_t, rbrack_t); end

  # source://parser//lib/parser/builders/default.rb#2072
  def send_map(receiver_e, dot_t, selector_t, begin_t = T.unsafe(nil), args = T.unsafe(nil), end_t = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#2104
  def send_unary_op_map(selector_t, arg_e); end

  # source://parser//lib/parser/builders/default.rb#2257
  def static_regexp(parts, options); end

  # source://parser//lib/parser/builders/default.rb#2282
  def static_regexp_node(node); end

  # source://parser//lib/parser/builders/default.rb#2240
  def static_string(nodes); end

  # source://parser//lib/parser/builders/default.rb#1966
  def string_map(begin_t, parts, end_t); end

  # source://parser//lib/parser/builders/default.rb#2302
  def string_value(token); end

  # source://parser//lib/parser/builders/default.rb#2174
  def ternary_map(begin_e, question_t, mid_e, colon_t, end_e); end

  # source://parser//lib/parser/builders/default.rb#1887
  def token_map(token); end

  # source://parser//lib/parser/builders/default.rb#2003
  def unary_op_map(op_t, arg_e = T.unsafe(nil)); end

  # source://parser//lib/parser/builders/default.rb#1911
  def unquoted_map(token); end

  # source://parser//lib/parser/builders/default.rb#2324
  def validate_definee(definee); end

  # source://parser//lib/parser/builders/default.rb#1789
  def validate_no_forward_arg_after_restarg(args); end

  # source://parser//lib/parser/builders/default.rb#2298
  def value(token); end

  # source://parser//lib/parser/builders/default.rb#2092
  def var_send_map(variable_e); end

  # source://parser//lib/parser/builders/default.rb#1995
  def variable_map(name_t); end

  class << self
    # source://parser//lib/parser/builders/default.rb#97
    def emit_arg_inside_procarg0; end

    # source://parser//lib/parser/builders/default.rb#97
    def emit_arg_inside_procarg0=(_arg0); end

    # source://parser//lib/parser/builders/default.rb#58
    def emit_encoding; end

    # source://parser//lib/parser/builders/default.rb#58
    def emit_encoding=(_arg0); end

    # source://parser//lib/parser/builders/default.rb#126
    def emit_forward_arg; end

    # source://parser//lib/parser/builders/default.rb#126
    def emit_forward_arg=(_arg0); end

    # source://parser//lib/parser/builders/default.rb#80
    def emit_index; end

    # source://parser//lib/parser/builders/default.rb#80
    def emit_index=(_arg0); end

    # source://parser//lib/parser/builders/default.rb#174
    def emit_kwargs; end

    # source://parser//lib/parser/builders/default.rb#174
    def emit_kwargs=(_arg0); end

    # source://parser//lib/parser/builders/default.rb#22
    def emit_lambda; end

    # source://parser//lib/parser/builders/default.rb#22
    def emit_lambda=(_arg0); end

    # source://parser//lib/parser/builders/default.rb#203
    def emit_match_pattern; end

    # source://parser//lib/parser/builders/default.rb#203
    def emit_match_pattern=(_arg0); end

    # source://parser//lib/parser/builders/default.rb#40
    def emit_procarg0; end

    # source://parser//lib/parser/builders/default.rb#40
    def emit_procarg0=(_arg0); end

    # source://parser//lib/parser/builders/default.rb#211
    def modernize; end
  end
end

# {Parser::ClobberingError} is raised when {Parser::Source::Rewriter}
# detects a clobbering rewrite action. This class inherits {RuntimeError}
# rather than {StandardError} for backward compatibility.
#
# @api public
#
# source://parser//lib/parser/clobbering_error.rb#11
class Parser::ClobberingError < ::RuntimeError; end

# Context of parsing that is represented by a stack of scopes.
#
# Supported states:
# + :class - in the class body (class A; end)
# + :module - in the module body (module M; end)
# + :sclass - in the singleton class body (class << obj; end)
# + :def - in the method body (def m; end)
# + :defs - in the singleton method body (def self.m; end)
# + :def_open_args - in the arglist of the method definition
#                    keep in mind that it's set **only** after reducing the first argument,
#                    if you need to handle the first argument check `lex_state == expr_fname`
# + :block - in the block body (tap {})
# + :lambda - in the lambda body (-> {})
#
# source://parser//lib/parser/context.rb#18
class Parser::Context
  # @return [Context] a new instance of Context
  #
  # source://parser//lib/parser/context.rb#30
  def initialize; end

  # source://parser//lib/parser/context.rb#45
  def cant_return; end

  # source://parser//lib/parser/context.rb#45
  def cant_return=(_arg0); end

  # source://parser//lib/parser/context.rb#45
  def in_argdef; end

  # source://parser//lib/parser/context.rb#45
  def in_argdef=(_arg0); end

  # source://parser//lib/parser/context.rb#45
  def in_block; end

  # source://parser//lib/parser/context.rb#45
  def in_block=(_arg0); end

  # source://parser//lib/parser/context.rb#45
  def in_class; end

  # source://parser//lib/parser/context.rb#45
  def in_class=(_arg0); end

  # source://parser//lib/parser/context.rb#45
  def in_def; end

  # source://parser//lib/parser/context.rb#45
  def in_def=(_arg0); end

  # source://parser//lib/parser/context.rb#45
  def in_defined; end

  # source://parser//lib/parser/context.rb#45
  def in_defined=(_arg0); end

  # @return [Boolean]
  #
  # source://parser//lib/parser/context.rb#47
  def in_dynamic_block?; end

  # source://parser//lib/parser/context.rb#45
  def in_kwarg; end

  # source://parser//lib/parser/context.rb#45
  def in_kwarg=(_arg0); end

  # source://parser//lib/parser/context.rb#45
  def in_lambda; end

  # source://parser//lib/parser/context.rb#45
  def in_lambda=(_arg0); end

  # source://parser//lib/parser/context.rb#34
  def reset; end
end

# source://parser//lib/parser/context.rb#19
Parser::Context::FLAGS = T.let(T.unsafe(nil), Array)

# Stack that holds names of current arguments,
# i.e. while parsing
#   def m1(a = (def m2(b = def m3(c = 1); end); end)); end
#                                   ^
# stack is [:a, :b, :c]
#
# Emulates `p->cur_arg` in MRI's parse.y
#
# @api private
#
# source://parser//lib/parser/current_arg_stack.rb#14
class Parser::CurrentArgStack
  # @api private
  # @return [CurrentArgStack] a new instance of CurrentArgStack
  #
  # source://parser//lib/parser/current_arg_stack.rb#17
  def initialize; end

  # @api private
  # @return [Boolean]
  #
  # source://parser//lib/parser/current_arg_stack.rb#22
  def empty?; end

  # @api private
  #
  # source://parser//lib/parser/current_arg_stack.rb#34
  def pop; end

  # @api private
  #
  # source://parser//lib/parser/current_arg_stack.rb#26
  def push(value); end

  # @api private
  #
  # source://parser//lib/parser/current_arg_stack.rb#38
  def reset; end

  # @api private
  #
  # source://parser//lib/parser/current_arg_stack.rb#30
  def set(value); end

  # @api private
  #
  # source://parser//lib/parser/current_arg_stack.rb#15
  def stack; end

  # @api private
  #
  # source://parser//lib/parser/current_arg_stack.rb#42
  def top; end
end

# Parser for the running version of Ruby. NOTE: Supports only Ruby <= 3.3. To parse Ruby 3.4+, please use the prism gem. You can also use them in conjunction to support multiple versions using a backwards-compatible AST.
#
# @api public
# @see https://ruby.github.io/prism/rb/docs/ruby_api_md.html prism gem documentation
# @see https://github.com/whitequark/parser/blob/master/doc/PRISM_TRANSLATION.md Guide to using prism and parser together.
#
# source://parser//lib/parser/current.rb#129
Parser::CurrentRuby = Parser::Ruby34

# @api private
#
# source://parser//lib/parser/deprecation.rb#7
module Parser::Deprecation
  # @api private
  #
  # source://parser//lib/parser/deprecation.rb#9
  def warn_of_deprecation; end

  # @api private
  #
  # source://parser//lib/parser/deprecation.rb#8
  def warned_of_deprecation=(_arg0); end
end

# @api public
#
# source://parser//lib/parser/diagnostic.rb#31
class Parser::Diagnostic
  # @api public
  # @param level [Symbol]
  # @param reason [Symbol]
  # @param arguments [Hash]
  # @param location [Parser::Source::Range]
  # @param highlights [Array<Parser::Source::Range>]
  # @return [Diagnostic] a new instance of Diagnostic
  #
  # source://parser//lib/parser/diagnostic.rb#49
  def initialize(level, reason, arguments, location, highlights = T.unsafe(nil)); end

  # @api public
  # @return [Symbol] extended arguments that describe the error
  # @see Parser::MESSAGES
  #
  # source://parser//lib/parser/diagnostic.rb#39
  def arguments; end

  # Supplementary error-related source ranges.
  #
  # @api public
  # @return [Array<Parser::Source::Range>]
  #
  # source://parser//lib/parser/diagnostic.rb#40
  def highlights; end

  # @api public
  # @return [Symbol] diagnostic level
  # @see LEVELS
  #
  # source://parser//lib/parser/diagnostic.rb#39
  def level; end

  # Main error-related source range.
  #
  # @api public
  # @return [Parser::Source::Range]
  #
  # source://parser//lib/parser/diagnostic.rb#40
  def location; end

  # @api public
  # @return [String] the rendered message.
  #
  # source://parser//lib/parser/diagnostic.rb#69
  def message; end

  # @api public
  # @return [Symbol] reason for error
  # @see Parser::MESSAGES
  #
  # source://parser//lib/parser/diagnostic.rb#39
  def reason; end

  # Renders the diagnostic message as a clang-like diagnostic.
  #
  # @api public
  # @example
  #   diagnostic.render # =>
  #   # [
  #   #   "(fragment:0):1:5: error: unexpected token $end",
  #   #   "foo +",
  #   #   "    ^"
  #   # ]
  # @return [Array<String>]
  #
  # source://parser//lib/parser/diagnostic.rb#86
  def render; end

  private

  # If necessary, shrink a `Range` so as to include only the first line.
  #
  # @api public
  # @return [Parser::Source::Range]
  #
  # source://parser//lib/parser/diagnostic.rb#142
  def first_line_only(range); end

  # If necessary, shrink a `Range` so as to include only the last line.
  #
  # @api public
  # @return [Parser::Source::Range]
  #
  # source://parser//lib/parser/diagnostic.rb#155
  def last_line_only(range); end

  # Renders one source line in clang diagnostic style, with highlights.
  #
  # @api public
  # @return [Array<String>]
  #
  # source://parser//lib/parser/diagnostic.rb#110
  def render_line(range, ellipsis = T.unsafe(nil), range_end = T.unsafe(nil)); end
end

# source://parser//lib/parser/diagnostic/engine.rb#36
class Parser::Diagnostic::Engine
  # source://parser//lib/parser/diagnostic/engine.rb#45
  def initialize(consumer = T.unsafe(nil)); end

  # source://parser//lib/parser/diagnostic/engine.rb#39
  def all_errors_are_fatal; end

  # source://parser//lib/parser/diagnostic/engine.rb#39
  def all_errors_are_fatal=(_arg0); end

  # source://parser//lib/parser/diagnostic/engine.rb#37
  def consumer; end

  # source://parser//lib/parser/diagnostic/engine.rb#37
  def consumer=(_arg0); end

  # source://parser//lib/parser/diagnostic/engine.rb#40
  def ignore_warnings; end

  # source://parser//lib/parser/diagnostic/engine.rb#40
  def ignore_warnings=(_arg0); end

  # source://parser//lib/parser/diagnostic/engine.rb#64
  def process(diagnostic); end

  protected

  # source://parser//lib/parser/diagnostic/engine.rb#86
  def ignore?(diagnostic); end

  # source://parser//lib/parser/diagnostic/engine.rb#97
  def raise?(diagnostic); end
end

# Collection of the available diagnostic levels.
#
# @api public
# @return [Array]
#
# source://parser//lib/parser/diagnostic.rb#37
Parser::Diagnostic::LEVELS = T.let(T.unsafe(nil), Array)

# line 3 "lib/parser/lexer.rl"
#
# === BEFORE YOU START ===
#
# Read the Ruby Hacking Guide chapter 11, available in English at
# http://whitequark.org/blog/2013/04/01/ruby-hacking-guide-ch-11-finite-state-lexer/
#
# Remember two things about Ragel scanners:
#
#   1) Longest match wins.
#
#   2) If two matches have the same length, the first
#      in source code wins.
#
# General rules of making Ragel and Bison happy:
#
#  * `p` (position) and `@te` contain the index of the character
#    they're pointing to ("current"), plus one. `@ts` contains the index
#    of the corresponding character. The code for extracting matched token is:
#
#       @source_buffer.slice(@ts...@te)
#
#  * If your input is `foooooooobar` and the rule is:
#
#       'f' 'o'+
#
#    the result will be:
#
#       foooooooobar
#       ^ ts=0   ^ p=te=9
#
#  * A Ragel lexer action should not emit more than one token, unless
#    you know what you are doing.
#
#  * All Ragel commands (fnext, fgoto, ...) end with a semicolon.
#
#  * If an action emits the token and transitions to another state, use
#    these Ragel commands:
#
#       emit($whatever)
#       fnext $next_state; fbreak;
#
#    If you perform `fgoto` in an action which does not emit a token nor
#    rewinds the stream pointer, the parser's side-effectful,
#    context-sensitive lookahead actions will break in a hard to detect
#    and debug way.
#
#  * If an action does not emit a token:
#
#       fgoto $next_state;
#
#  * If an action features lookbehind, i.e. matches characters with the
#    intent of passing them to another action:
#
#       p = @ts - 1
#       fgoto $next_state;
#
#    or, if the lookbehind consists of a single character:
#
#       fhold; fgoto $next_state;
#
#  * Ragel merges actions. So, if you have `e_lparen = '(' %act` and
#    `c_lparen = '('` and a lexer action `e_lparen | c_lparen`, the result
#    _will_ invoke the action `act`.
#
#    e_something stands for "something with **e**mbedded action".
#
#  * EOF is explicit and is matched by `c_eof`. If you want to introspect
#    the state of the lexer, add this rule to the state:
#
#       c_eof => do_eof;
#
#  * If you proceed past EOF, the lexer will complain:
#
#       NoMethodError: undefined method `ord' for nil:NilClass
#
# source://parser//lib/parser/lexer-F1.rb#82
class Parser::Lexer
  # @return [Lexer] a new instance of Lexer
  #
  # source://parser//lib/parser/lexer-F1.rb#8250
  def initialize(version); end

  # Return next token: [type, value].
  #
  # source://parser//lib/parser/lexer-F1.rb#8419
  def advance; end

  # Returns the value of attribute cmdarg.
  #
  # source://parser//lib/parser/lexer-F1.rb#8244
  def cmdarg; end

  # Sets the attribute cmdarg
  #
  # @param value the value to set the attribute cmdarg to.
  #
  # source://parser//lib/parser/lexer-F1.rb#8244
  def cmdarg=(_arg0); end

  # Returns the value of attribute cmdarg_stack.
  #
  # source://parser//lib/parser/lexer-F1.rb#8248
  def cmdarg_stack; end

  # Returns the value of attribute command_start.
  #
  # source://parser//lib/parser/lexer-F1.rb#8244
  def command_start; end

  # Sets the attribute command_start
  #
  # @param value the value to set the attribute command_start to.
  #
  # source://parser//lib/parser/lexer-F1.rb#8244
  def command_start=(_arg0); end

  # Returns the value of attribute comments.
  #
  # source://parser//lib/parser/lexer-F1.rb#8246
  def comments; end

  # Sets the attribute comments
  #
  # @param value the value to set the attribute comments to.
  #
  # source://parser//lib/parser/lexer-F1.rb#8246
  def comments=(_arg0); end

  # Returns the value of attribute cond.
  #
  # source://parser//lib/parser/lexer-F1.rb#8244
  def cond; end

  # Sets the attribute cond
  #
  # @param value the value to set the attribute cond to.
  #
  # source://parser//lib/parser/lexer-F1.rb#8244
  def cond=(_arg0); end

  # Returns the value of attribute cond_stack.
  #
  # source://parser//lib/parser/lexer-F1.rb#8248
  def cond_stack; end

  # source://parser//lib/parser/lexer-F1.rb#8281
  def construct_float(chars); end

  # Returns the value of attribute context.
  #
  # source://parser//lib/parser/lexer-F1.rb#8244
  def context; end

  # Sets the attribute context
  #
  # @param value the value to set the attribute context to.
  #
  # source://parser//lib/parser/lexer-F1.rb#8244
  def context=(_arg0); end

  # source://parser//lib/parser/lexer-F1.rb#8414
  def dedent_level; end

  # Returns the value of attribute diagnostics.
  #
  # source://parser//lib/parser/lexer-F1.rb#8240
  def diagnostics; end

  # Sets the attribute diagnostics
  #
  # @param value the value to set the attribute diagnostics to.
  #
  # source://parser//lib/parser/lexer-F1.rb#8240
  def diagnostics=(_arg0); end

  # source://parser//lib/parser/lexer-F1.rb#8367
  def encoding; end

  # Returns the value of attribute force_utf32.
  #
  # source://parser//lib/parser/lexer-F1.rb#8242
  def force_utf32; end

  # Sets the attribute force_utf32
  #
  # @param value the value to set the attribute force_utf32 to.
  #
  # source://parser//lib/parser/lexer-F1.rb#8242
  def force_utf32=(_arg0); end

  # Returns the value of attribute lambda_stack.
  #
  # source://parser//lib/parser/lexer-F1.rb#8248
  def lambda_stack; end

  # Returns the value of attribute paren_nest.
  #
  # source://parser//lib/parser/lexer-F1.rb#8248
  def paren_nest; end

  # source://parser//lib/parser/lexer-F1.rb#8401
  def pop_cmdarg; end

  # source://parser//lib/parser/lexer-F1.rb#8410
  def pop_cond; end

  # source://parser//lib/parser/lexer-F1.rb#8396
  def push_cmdarg; end

  # source://parser//lib/parser/lexer-F1.rb#8405
  def push_cond; end

  # source://parser//lib/parser/lexer-F1.rb#8290
  def reset(reset_state = T.unsafe(nil)); end

  # %
  #
  # source://parser//lib/parser/lexer-F1.rb#8238
  def source_buffer; end

  # source://parser//lib/parser/lexer-F1.rb#8343
  def source_buffer=(source_buffer); end

  # source://parser//lib/parser/lexer-F1.rb#8388
  def state; end

  # source://parser//lib/parser/lexer-F1.rb#8392
  def state=(state); end

  # Returns the value of attribute static_env.
  #
  # source://parser//lib/parser/lexer-F1.rb#8241
  def static_env; end

  # Sets the attribute static_env
  #
  # @param value the value to set the attribute static_env to.
  #
  # source://parser//lib/parser/lexer-F1.rb#8241
  def static_env=(_arg0); end

  # Returns the value of attribute tokens.
  #
  # source://parser//lib/parser/lexer-F1.rb#8246
  def tokens; end

  # Sets the attribute tokens
  #
  # @param value the value to set the attribute tokens to.
  #
  # source://parser//lib/parser/lexer-F1.rb#8246
  def tokens=(_arg0); end

  # Returns the value of attribute version.
  #
  # source://parser//lib/parser/lexer-F1.rb#8248
  def version; end

  protected

  # source://parser//lib/parser/lexer-F1.rb#14701
  def arg_or_cmdarg(cmd_state); end

  # source://parser//lib/parser/lexer-F1.rb#14763
  def check_ambiguous_slash(tm); end

  # source://parser//lib/parser/lexer-F1.rb#14725
  def diagnostic(type, reason, arguments = T.unsafe(nil), location = T.unsafe(nil), highlights = T.unsafe(nil)); end

  # source://parser//lib/parser/lexer-F1.rb#14731
  def e_lbrace; end

  # source://parser//lib/parser/lexer-F1.rb#14675
  def emit(type, value = T.unsafe(nil), s = T.unsafe(nil), e = T.unsafe(nil)); end

  # source://parser//lib/parser/lexer-F1.rb#14784
  def emit_class_var(ts = T.unsafe(nil), te = T.unsafe(nil)); end

  # source://parser//lib/parser/lexer-F1.rb#14812
  def emit_colon_with_digits(p, tm, diag_msg); end

  # source://parser//lib/parser/lexer-F1.rb#14709
  def emit_comment(s = T.unsafe(nil), e = T.unsafe(nil)); end

  # source://parser//lib/parser/lexer-F1.rb#14721
  def emit_comment_from_range(p, pe); end

  # source://parser//lib/parser/lexer-F1.rb#14691
  def emit_do(do_block = T.unsafe(nil)); end

  # source://parser//lib/parser/lexer-F1.rb#14774
  def emit_global_var(ts = T.unsafe(nil), te = T.unsafe(nil)); end

  # source://parser//lib/parser/lexer-F1.rb#14792
  def emit_instance_var(ts = T.unsafe(nil), te = T.unsafe(nil)); end

  # source://parser//lib/parser/lexer-F1.rb#14800
  def emit_rbrace_rparen_rbrack; end

  # source://parser//lib/parser/lexer-F1.rb#14822
  def emit_singleton_class; end

  # source://parser//lib/parser/lexer-F1.rb#14685
  def emit_table(table, s = T.unsafe(nil), e = T.unsafe(nil)); end

  # source://parser//lib/parser/lexer-F1.rb#14740
  def numeric_literal_int; end

  # source://parser//lib/parser/lexer-F1.rb#14759
  def on_newline(p); end

  # source://parser//lib/parser/lexer-F1.rb#14671
  def range(s = T.unsafe(nil), e = T.unsafe(nil)); end

  # source://parser//lib/parser/lexer-F1.rb#14662
  def stack_pop; end

  # source://parser//lib/parser/lexer-F1.rb#14667
  def tok(s = T.unsafe(nil), e = T.unsafe(nil)); end

  # @return [Boolean]
  #
  # source://parser//lib/parser/lexer-F1.rb#14658
  def version?(*versions); end

  class << self
    # Returns the value of attribute lex_en_expr_arg.
    #
    # source://parser//lib/parser/lexer-F1.rb#8186
    def lex_en_expr_arg; end

    # Sets the attribute lex_en_expr_arg
    #
    # @param value the value to set the attribute lex_en_expr_arg to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8186
    def lex_en_expr_arg=(_arg0); end

    # Returns the value of attribute lex_en_expr_beg.
    #
    # source://parser//lib/parser/lexer-F1.rb#8202
    def lex_en_expr_beg; end

    # Sets the attribute lex_en_expr_beg
    #
    # @param value the value to set the attribute lex_en_expr_beg to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8202
    def lex_en_expr_beg=(_arg0); end

    # Returns the value of attribute lex_en_expr_cmdarg.
    #
    # source://parser//lib/parser/lexer-F1.rb#8190
    def lex_en_expr_cmdarg; end

    # Sets the attribute lex_en_expr_cmdarg
    #
    # @param value the value to set the attribute lex_en_expr_cmdarg to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8190
    def lex_en_expr_cmdarg=(_arg0); end

    # Returns the value of attribute lex_en_expr_dot.
    #
    # source://parser//lib/parser/lexer-F1.rb#8182
    def lex_en_expr_dot; end

    # Sets the attribute lex_en_expr_dot
    #
    # @param value the value to set the attribute lex_en_expr_dot to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8182
    def lex_en_expr_dot=(_arg0); end

    # Returns the value of attribute lex_en_expr_end.
    #
    # source://parser//lib/parser/lexer-F1.rb#8214
    def lex_en_expr_end; end

    # Sets the attribute lex_en_expr_end
    #
    # @param value the value to set the attribute lex_en_expr_end to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8214
    def lex_en_expr_end=(_arg0); end

    # Returns the value of attribute lex_en_expr_endarg.
    #
    # source://parser//lib/parser/lexer-F1.rb#8194
    def lex_en_expr_endarg; end

    # Sets the attribute lex_en_expr_endarg
    #
    # @param value the value to set the attribute lex_en_expr_endarg to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8194
    def lex_en_expr_endarg=(_arg0); end

    # Returns the value of attribute lex_en_expr_endfn.
    #
    # source://parser//lib/parser/lexer-F1.rb#8178
    def lex_en_expr_endfn; end

    # Sets the attribute lex_en_expr_endfn
    #
    # @param value the value to set the attribute lex_en_expr_endfn to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8178
    def lex_en_expr_endfn=(_arg0); end

    # Returns the value of attribute lex_en_expr_fname.
    #
    # source://parser//lib/parser/lexer-F1.rb#8174
    def lex_en_expr_fname; end

    # Sets the attribute lex_en_expr_fname
    #
    # @param value the value to set the attribute lex_en_expr_fname to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8174
    def lex_en_expr_fname=(_arg0); end

    # Returns the value of attribute lex_en_expr_labelarg.
    #
    # source://parser//lib/parser/lexer-F1.rb#8206
    def lex_en_expr_labelarg; end

    # Sets the attribute lex_en_expr_labelarg
    #
    # @param value the value to set the attribute lex_en_expr_labelarg to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8206
    def lex_en_expr_labelarg=(_arg0); end

    # Returns the value of attribute lex_en_expr_mid.
    #
    # source://parser//lib/parser/lexer-F1.rb#8198
    def lex_en_expr_mid; end

    # Sets the attribute lex_en_expr_mid
    #
    # @param value the value to set the attribute lex_en_expr_mid to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8198
    def lex_en_expr_mid=(_arg0); end

    # Returns the value of attribute lex_en_expr_value.
    #
    # source://parser//lib/parser/lexer-F1.rb#8210
    def lex_en_expr_value; end

    # Sets the attribute lex_en_expr_value
    #
    # @param value the value to set the attribute lex_en_expr_value to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8210
    def lex_en_expr_value=(_arg0); end

    # Returns the value of attribute lex_en_expr_variable.
    #
    # source://parser//lib/parser/lexer-F1.rb#8170
    def lex_en_expr_variable; end

    # Sets the attribute lex_en_expr_variable
    #
    # @param value the value to set the attribute lex_en_expr_variable to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8170
    def lex_en_expr_variable=(_arg0); end

    # Returns the value of attribute lex_en_inside_string.
    #
    # source://parser//lib/parser/lexer-F1.rb#8230
    def lex_en_inside_string; end

    # Sets the attribute lex_en_inside_string
    #
    # @param value the value to set the attribute lex_en_inside_string to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8230
    def lex_en_inside_string=(_arg0); end

    # Returns the value of attribute lex_en_leading_dot.
    #
    # source://parser//lib/parser/lexer-F1.rb#8218
    def lex_en_leading_dot; end

    # Sets the attribute lex_en_leading_dot
    #
    # @param value the value to set the attribute lex_en_leading_dot to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8218
    def lex_en_leading_dot=(_arg0); end

    # Returns the value of attribute lex_en_line_begin.
    #
    # source://parser//lib/parser/lexer-F1.rb#8226
    def lex_en_line_begin; end

    # Sets the attribute lex_en_line_begin
    #
    # @param value the value to set the attribute lex_en_line_begin to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8226
    def lex_en_line_begin=(_arg0); end

    # Returns the value of attribute lex_en_line_comment.
    #
    # source://parser//lib/parser/lexer-F1.rb#8222
    def lex_en_line_comment; end

    # Sets the attribute lex_en_line_comment
    #
    # @param value the value to set the attribute lex_en_line_comment to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8222
    def lex_en_line_comment=(_arg0); end

    # Returns the value of attribute lex_error.
    #
    # source://parser//lib/parser/lexer-F1.rb#8165
    def lex_error; end

    # Sets the attribute lex_error
    #
    # @param value the value to set the attribute lex_error to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8165
    def lex_error=(_arg0); end

    # Returns the value of attribute lex_start.
    #
    # source://parser//lib/parser/lexer-F1.rb#8161
    def lex_start; end

    # Sets the attribute lex_start
    #
    # @param value the value to set the attribute lex_start to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8161
    def lex_start=(_arg0); end

    private

    # Returns the value of attribute _lex_eof_trans.
    #
    # source://parser//lib/parser/lexer-F1.rb#8064
    def _lex_eof_trans; end

    # Sets the attribute _lex_eof_trans
    #
    # @param value the value to set the attribute _lex_eof_trans to.
    #
    # source://parser//lib/parser/lexer-F1.rb#8064
    def _lex_eof_trans=(_arg0); end

    # Returns the value of attribute _lex_from_state_actions.
    #
    # source://parser//lib/parser/lexer-F1.rb#7967
    def _lex_from_state_actions; end

    # Sets the attribute _lex_from_state_actions
    #
    # @param value the value to set the attribute _lex_from_state_actions to.
    #
    # source://parser//lib/parser/lexer-F1.rb#7967
    def _lex_from_state_actions=(_arg0); end

    # Returns the value of attribute _lex_index_offsets.
    #
    # source://parser//lib/parser/lexer-F1.rb#461
    def _lex_index_offsets; end

    # Sets the attribute _lex_index_offsets
    #
    # @param value the value to set the attribute _lex_index_offsets to.
    #
    # source://parser//lib/parser/lexer-F1.rb#461
    def _lex_index_offsets=(_arg0); end

    # Returns the value of attribute _lex_indicies.
    #
    # source://parser//lib/parser/lexer-F1.rb#558
    def _lex_indicies; end

    # Sets the attribute _lex_indicies
    #
    # @param value the value to set the attribute _lex_indicies to.
    #
    # source://parser//lib/parser/lexer-F1.rb#558
    def _lex_indicies=(_arg0); end

    # Returns the value of attribute _lex_key_spans.
    #
    # source://parser//lib/parser/lexer-F1.rb#364
    def _lex_key_spans; end

    # Sets the attribute _lex_key_spans
    #
    # @param value the value to set the attribute _lex_key_spans to.
    #
    # source://parser//lib/parser/lexer-F1.rb#364
    def _lex_key_spans=(_arg0); end

    # Returns the value of attribute _lex_to_state_actions.
    #
    # source://parser//lib/parser/lexer-F1.rb#7870
    def _lex_to_state_actions; end

    # Sets the attribute _lex_to_state_actions
    #
    # @param value the value to set the attribute _lex_to_state_actions to.
    #
    # source://parser//lib/parser/lexer-F1.rb#7870
    def _lex_to_state_actions=(_arg0); end

    # Returns the value of attribute _lex_trans_actions.
    #
    # source://parser//lib/parser/lexer-F1.rb#7722
    def _lex_trans_actions; end

    # Sets the attribute _lex_trans_actions
    #
    # @param value the value to set the attribute _lex_trans_actions to.
    #
    # source://parser//lib/parser/lexer-F1.rb#7722
    def _lex_trans_actions=(_arg0); end

    # Returns the value of attribute _lex_trans_keys.
    #
    # source://parser//lib/parser/lexer-F1.rb#87
    def _lex_trans_keys; end

    # Sets the attribute _lex_trans_keys
    #
    # @param value the value to set the attribute _lex_trans_keys to.
    #
    # source://parser//lib/parser/lexer-F1.rb#87
    def _lex_trans_keys=(_arg0); end

    # Returns the value of attribute _lex_trans_targs.
    #
    # source://parser//lib/parser/lexer-F1.rb#7574
    def _lex_trans_targs; end

    # Sets the attribute _lex_trans_targs
    #
    # @param value the value to set the attribute _lex_trans_targs to.
    #
    # source://parser//lib/parser/lexer-F1.rb#7574
    def _lex_trans_targs=(_arg0); end
  end
end

# source://parser//lib/parser/lexer/dedenter.rb#5
class Parser::Lexer::Dedenter
  # source://parser//lib/parser/lexer/dedenter.rb#9
  def initialize(dedent_level); end

  # source://parser//lib/parser/lexer/dedenter.rb#36
  def dedent(string); end

  # source://parser//lib/parser/lexer/dedenter.rb#83
  def interrupt; end
end

# source://parser//lib/parser/lexer/dedenter.rb#7
Parser::Lexer::Dedenter::TAB_WIDTH = T.let(T.unsafe(nil), Integer)

# source://parser//lib/parser/lexer-F1.rb#14869
Parser::Lexer::ESCAPE_WHITESPACE = T.let(T.unsafe(nil), Hash)

# source://parser//lib/parser/lexer-F1.rb#14855
Parser::Lexer::KEYWORDS = T.let(T.unsafe(nil), Hash)

# source://parser//lib/parser/lexer-F1.rb#14862
Parser::Lexer::KEYWORDS_BEGIN = T.let(T.unsafe(nil), Hash)

# source://parser//lib/parser/lexer-F1.rb#8371
Parser::Lexer::LEX_STATES = T.let(T.unsafe(nil), Hash)

# source://parser//lib/parser/lexer/literal.rb#6
class Parser::Lexer::Literal
  # source://parser//lib/parser/lexer/literal.rb#42
  def initialize(lexer, str_type, delimiter, str_s, heredoc_e = T.unsafe(nil), indent = T.unsafe(nil), dedent_body = T.unsafe(nil), label_allowed = T.unsafe(nil)); end

  # source://parser//lib/parser/lexer/literal.rb#116
  def backslash_delimited?; end

  # source://parser//lib/parser/lexer/literal.rb#39
  def dedent_level; end

  # source://parser//lib/parser/lexer/literal.rb#191
  def end_interp_brace_and_try_closing; end

  # source://parser//lib/parser/lexer/literal.rb#218
  def extend_content; end

  # source://parser//lib/parser/lexer/literal.rb#222
  def extend_space(ts, te); end

  # source://parser//lib/parser/lexer/literal.rb#197
  def extend_string(string, ts, te); end

  # source://parser//lib/parser/lexer/literal.rb#204
  def flush_string; end

  # source://parser//lib/parser/lexer/literal.rb#104
  def heredoc?; end

  # source://parser//lib/parser/lexer/literal.rb#39
  def heredoc_e; end

  # source://parser//lib/parser/lexer/literal.rb#168
  def infer_indent_level(line); end

  # source://parser//lib/parser/lexer/literal.rb#91
  def interpolate?; end

  # source://parser//lib/parser/lexer/literal.rb#124
  def munge_escape?(character); end

  # source://parser//lib/parser/lexer/literal.rb#134
  def nest_and_try_closing(delimiter, ts, te, lookahead = T.unsafe(nil)); end

  # source://parser//lib/parser/lexer/literal.rb#108
  def plain_heredoc?; end

  # source://parser//lib/parser/lexer/literal.rb#100
  def regexp?; end

  # source://parser//lib/parser/lexer/literal.rb#40
  def saved_herebody_s; end

  # source://parser//lib/parser/lexer/literal.rb#40
  def saved_herebody_s=(_arg0); end

  # source://parser//lib/parser/lexer/literal.rb#112
  def squiggly_heredoc?; end

  # source://parser//lib/parser/lexer/literal.rb#187
  def start_interp_brace; end

  # source://parser//lib/parser/lexer/literal.rb#39
  def str_s; end

  # source://parser//lib/parser/lexer/literal.rb#232
  def supports_line_continuation_via_slash?; end

  # source://parser//lib/parser/lexer/literal.rb#120
  def type; end

  # source://parser//lib/parser/lexer/literal.rb#95
  def words?; end

  protected

  # source://parser//lib/parser/lexer/literal.rb#263
  def clear_buffer; end

  # source://parser//lib/parser/lexer/literal.rb#259
  def coerce_encoding(string); end

  # source://parser//lib/parser/lexer/literal.rb#238
  def delimiter?(delimiter); end

  # source://parser//lib/parser/lexer/literal.rb#279
  def emit(token, type, s, e); end

  # source://parser//lib/parser/lexer/literal.rb#274
  def emit_start_tok; end
end

# source://parser//lib/parser/lexer/literal.rb#7
Parser::Lexer::Literal::DELIMITERS = T.let(T.unsafe(nil), Hash)

# source://parser//lib/parser/lexer/literal.rb#8
Parser::Lexer::Literal::SPACE = T.let(T.unsafe(nil), Integer)

# source://parser//lib/parser/lexer/literal.rb#9
Parser::Lexer::Literal::TAB = T.let(T.unsafe(nil), Integer)

# source://parser//lib/parser/lexer/literal.rb#11
Parser::Lexer::Literal::TYPES = T.let(T.unsafe(nil), Hash)

# Mapping of strings to parser tokens.
#
# source://parser//lib/parser/lexer-F1.rb#14829
Parser::Lexer::PUNCTUATION = T.let(T.unsafe(nil), Hash)

# source://parser//lib/parser/lexer-F1.rb#14849
Parser::Lexer::PUNCTUATION_BEGIN = T.let(T.unsafe(nil), Hash)

# source://parser//lib/parser/lexer/stack_state.rb#5
class Parser::Lexer::StackState
  # source://parser//lib/parser/lexer/stack_state.rb#6
  def initialize(name); end

  # source://parser//lib/parser/lexer/stack_state.rb#34
  def active?; end

  # source://parser//lib/parser/lexer/stack_state.rb#11
  def clear; end

  # source://parser//lib/parser/lexer/stack_state.rb#38
  def empty?; end

  # source://parser//lib/parser/lexer/stack_state.rb#42
  def inspect; end

  # source://parser//lib/parser/lexer/stack_state.rb#29
  def lexpop; end

  # source://parser//lib/parser/lexer/stack_state.rb#22
  def pop; end

  # source://parser//lib/parser/lexer/stack_state.rb#15
  def push(bit); end

  # source://parser//lib/parser/lexer/stack_state.rb#42
  def to_s; end
end

# line 3 "lib/parser/lexer-strings.rl"
#
# source://parser//lib/parser/lexer-strings.rb#6
class Parser::LexerStrings
  # @return [LexerStrings] a new instance of LexerStrings
  #
  # source://parser//lib/parser/lexer-strings.rb#3300
  def initialize(lexer, version); end

  # source://parser//lib/parser/lexer-strings.rb#3339
  def advance(p); end

  # source://parser//lib/parser/lexer-strings.rb#5069
  def close_interp_on_current_literal(p); end

  # source://parser//lib/parser/lexer-strings.rb#5043
  def continue_lexing(current_literal); end

  # source://parser//lib/parser/lexer-strings.rb#5092
  def dedent_level; end

  # Returns the value of attribute herebody_s.
  #
  # source://parser//lib/parser/lexer-strings.rb#3295
  def herebody_s; end

  # Sets the attribute herebody_s
  #
  # @param value the value to set the attribute herebody_s to.
  #
  # source://parser//lib/parser/lexer-strings.rb#3295
  def herebody_s=(_arg0); end

  # source://parser//lib/parser/lexer-strings.rb#5047
  def literal; end

  # source://parser//lib/parser/lexer-strings.rb#5015
  def next_state_for_literal(literal); end

  # This hook is triggered by "main" lexer on every newline character
  #
  # source://parser//lib/parser/lexer-strings.rb#5100
  def on_newline(p); end

  # source://parser//lib/parser/lexer-strings.rb#5051
  def pop_literal; end

  # === LITERAL STACK ===
  #
  # source://parser//lib/parser/lexer-strings.rb#5009
  def push_literal(*args); end

  # source://parser//lib/parser/lexer-strings.rb#4999
  def read_character_constant(p); end

  # source://parser//lib/parser/lexer-strings.rb#3314
  def reset; end

  # Set by "main" lexer
  #
  # source://parser//lib/parser/lexer-strings.rb#3298
  def source_buffer; end

  # Set by "main" lexer
  #
  # source://parser//lib/parser/lexer-strings.rb#3298
  def source_buffer=(_arg0); end

  # Set by "main" lexer
  #
  # source://parser//lib/parser/lexer-strings.rb#3298
  def source_pts; end

  # Set by "main" lexer
  #
  # source://parser//lib/parser/lexer-strings.rb#3298
  def source_pts=(_arg0); end

  protected

  # source://parser//lib/parser/lexer-strings.rb#5406
  def check_ambiguous_slash(tm); end

  # source://parser//lib/parser/lexer-strings.rb#5417
  def check_invalid_escapes(p); end

  # source://parser//lib/parser/lexer-strings.rb#5136
  def cond; end

  # source://parser//lib/parser/lexer-strings.rb#5132
  def diagnostic(type, reason, arguments = T.unsafe(nil), location = T.unsafe(nil), highlights = T.unsafe(nil)); end

  # source://parser//lib/parser/lexer-strings.rb#5128
  def emit(type, value = T.unsafe(nil), s = T.unsafe(nil), e = T.unsafe(nil)); end

  # source://parser//lib/parser/lexer-strings.rb#5396
  def emit_character_constant; end

  # source://parser//lib/parser/lexer-strings.rb#5373
  def emit_interp_var(interp_var_kind); end

  # @return [Boolean]
  #
  # source://parser//lib/parser/lexer-strings.rb#5140
  def emit_invalid_escapes?; end

  # source://parser//lib/parser/lexer-strings.rb#5291
  def encode_escape(ord); end

  # source://parser//lib/parser/lexer-strings.rb#5384
  def encode_escaped_char(p); end

  # @return [Boolean]
  #
  # source://parser//lib/parser/lexer-strings.rb#5112
  def eof_codepoint?(point); end

  # source://parser//lib/parser/lexer-strings.rb#5210
  def extend_interp_code(current_literal); end

  # source://parser//lib/parser/lexer-strings.rb#5225
  def extend_interp_digit_var; end

  # source://parser//lib/parser/lexer-strings.rb#5364
  def extend_interp_var(current_literal); end

  # source://parser//lib/parser/lexer-strings.rb#5234
  def extend_string_eol_check_eof(current_literal, pe); end

  # source://parser//lib/parser/lexer-strings.rb#5251
  def extend_string_eol_heredoc_intertwined(p); end

  # source://parser//lib/parser/lexer-strings.rb#5241
  def extend_string_eol_heredoc_line; end

  # source://parser//lib/parser/lexer-strings.rb#5267
  def extend_string_eol_words(current_literal, p); end

  # String escaping
  #
  # source://parser//lib/parser/lexer-strings.rb#5154
  def extend_string_escaped; end

  # source://parser//lib/parser/lexer-strings.rb#5287
  def extend_string_for_token_range(current_literal, string); end

  # source://parser//lib/parser/lexer-strings.rb#5279
  def extend_string_slice_end(lookahead); end

  # source://parser//lib/parser/lexer-strings.rb#5124
  def range(s = T.unsafe(nil), e = T.unsafe(nil)); end

  # source://parser//lib/parser/lexer-strings.rb#5356
  def read_post_meta_or_ctrl_char(p); end

  # source://parser//lib/parser/lexer-strings.rb#5388
  def slash_c_char; end

  # source://parser//lib/parser/lexer-strings.rb#5392
  def slash_m_char; end

  # source://parser//lib/parser/lexer-strings.rb#5120
  def tok(s = T.unsafe(nil), e = T.unsafe(nil)); end

  # source://parser//lib/parser/lexer-strings.rb#5295
  def unescape_char(p); end

  # source://parser//lib/parser/lexer-strings.rb#5307
  def unicode_points(p); end

  # @return [Boolean]
  #
  # source://parser//lib/parser/lexer-strings.rb#5116
  def version?(*versions); end

  class << self
    # Returns the value of attribute lex_en_character.
    #
    # source://parser//lib/parser/lexer-strings.rb#3275
    def lex_en_character; end

    # Sets the attribute lex_en_character
    #
    # @param value the value to set the attribute lex_en_character to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3275
    def lex_en_character=(_arg0); end

    # Returns the value of attribute lex_en_interp_backslash_delimited.
    #
    # source://parser//lib/parser/lexer-strings.rb#3255
    def lex_en_interp_backslash_delimited; end

    # Sets the attribute lex_en_interp_backslash_delimited
    #
    # @param value the value to set the attribute lex_en_interp_backslash_delimited to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3255
    def lex_en_interp_backslash_delimited=(_arg0); end

    # Returns the value of attribute lex_en_interp_backslash_delimited_words.
    #
    # source://parser//lib/parser/lexer-strings.rb#3263
    def lex_en_interp_backslash_delimited_words; end

    # Sets the attribute lex_en_interp_backslash_delimited_words
    #
    # @param value the value to set the attribute lex_en_interp_backslash_delimited_words to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3263
    def lex_en_interp_backslash_delimited_words=(_arg0); end

    # Returns the value of attribute lex_en_interp_string.
    #
    # source://parser//lib/parser/lexer-strings.rb#3243
    def lex_en_interp_string; end

    # Sets the attribute lex_en_interp_string
    #
    # @param value the value to set the attribute lex_en_interp_string to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3243
    def lex_en_interp_string=(_arg0); end

    # Returns the value of attribute lex_en_interp_words.
    #
    # source://parser//lib/parser/lexer-strings.rb#3239
    def lex_en_interp_words; end

    # Sets the attribute lex_en_interp_words
    #
    # @param value the value to set the attribute lex_en_interp_words to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3239
    def lex_en_interp_words=(_arg0); end

    # Returns the value of attribute lex_en_plain_backslash_delimited.
    #
    # source://parser//lib/parser/lexer-strings.rb#3259
    def lex_en_plain_backslash_delimited; end

    # Sets the attribute lex_en_plain_backslash_delimited
    #
    # @param value the value to set the attribute lex_en_plain_backslash_delimited to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3259
    def lex_en_plain_backslash_delimited=(_arg0); end

    # Returns the value of attribute lex_en_plain_backslash_delimited_words.
    #
    # source://parser//lib/parser/lexer-strings.rb#3267
    def lex_en_plain_backslash_delimited_words; end

    # Sets the attribute lex_en_plain_backslash_delimited_words
    #
    # @param value the value to set the attribute lex_en_plain_backslash_delimited_words to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3267
    def lex_en_plain_backslash_delimited_words=(_arg0); end

    # Returns the value of attribute lex_en_plain_string.
    #
    # source://parser//lib/parser/lexer-strings.rb#3251
    def lex_en_plain_string; end

    # Sets the attribute lex_en_plain_string
    #
    # @param value the value to set the attribute lex_en_plain_string to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3251
    def lex_en_plain_string=(_arg0); end

    # Returns the value of attribute lex_en_plain_words.
    #
    # source://parser//lib/parser/lexer-strings.rb#3247
    def lex_en_plain_words; end

    # Sets the attribute lex_en_plain_words
    #
    # @param value the value to set the attribute lex_en_plain_words to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3247
    def lex_en_plain_words=(_arg0); end

    # Returns the value of attribute lex_en_regexp_modifiers.
    #
    # source://parser//lib/parser/lexer-strings.rb#3271
    def lex_en_regexp_modifiers; end

    # Sets the attribute lex_en_regexp_modifiers
    #
    # @param value the value to set the attribute lex_en_regexp_modifiers to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3271
    def lex_en_regexp_modifiers=(_arg0); end

    # Returns the value of attribute lex_en_unknown.
    #
    # source://parser//lib/parser/lexer-strings.rb#3279
    def lex_en_unknown; end

    # Sets the attribute lex_en_unknown
    #
    # @param value the value to set the attribute lex_en_unknown to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3279
    def lex_en_unknown=(_arg0); end

    # Returns the value of attribute lex_error.
    #
    # source://parser//lib/parser/lexer-strings.rb#3234
    def lex_error; end

    # Sets the attribute lex_error
    #
    # @param value the value to set the attribute lex_error to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3234
    def lex_error=(_arg0); end

    # Returns the value of attribute lex_start.
    #
    # source://parser//lib/parser/lexer-strings.rb#3230
    def lex_start; end

    # Sets the attribute lex_start
    #
    # @param value the value to set the attribute lex_start to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3230
    def lex_start=(_arg0); end

    private

    # Returns the value of attribute _lex_actions.
    #
    # source://parser//lib/parser/lexer-strings.rb#11
    def _lex_actions; end

    # Sets the attribute _lex_actions
    #
    # @param value the value to set the attribute _lex_actions to.
    #
    # source://parser//lib/parser/lexer-strings.rb#11
    def _lex_actions=(_arg0); end

    # Returns the value of attribute _lex_eof_trans.
    #
    # source://parser//lib/parser/lexer-strings.rb#3184
    def _lex_eof_trans; end

    # Sets the attribute _lex_eof_trans
    #
    # @param value the value to set the attribute _lex_eof_trans to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3184
    def _lex_eof_trans=(_arg0); end

    # Returns the value of attribute _lex_from_state_actions.
    #
    # source://parser//lib/parser/lexer-strings.rb#3138
    def _lex_from_state_actions; end

    # Sets the attribute _lex_from_state_actions
    #
    # @param value the value to set the attribute _lex_from_state_actions to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3138
    def _lex_from_state_actions=(_arg0); end

    # Returns the value of attribute _lex_index_offsets.
    #
    # source://parser//lib/parser/lexer-strings.rb#244
    def _lex_index_offsets; end

    # Sets the attribute _lex_index_offsets
    #
    # @param value the value to set the attribute _lex_index_offsets to.
    #
    # source://parser//lib/parser/lexer-strings.rb#244
    def _lex_index_offsets=(_arg0); end

    # Returns the value of attribute _lex_indicies.
    #
    # source://parser//lib/parser/lexer-strings.rb#290
    def _lex_indicies; end

    # Sets the attribute _lex_indicies
    #
    # @param value the value to set the attribute _lex_indicies to.
    #
    # source://parser//lib/parser/lexer-strings.rb#290
    def _lex_indicies=(_arg0); end

    # Returns the value of attribute _lex_key_spans.
    #
    # source://parser//lib/parser/lexer-strings.rb#198
    def _lex_key_spans; end

    # Sets the attribute _lex_key_spans
    #
    # @param value the value to set the attribute _lex_key_spans to.
    #
    # source://parser//lib/parser/lexer-strings.rb#198
    def _lex_key_spans=(_arg0); end

    # Returns the value of attribute _lex_to_state_actions.
    #
    # source://parser//lib/parser/lexer-strings.rb#3092
    def _lex_to_state_actions; end

    # Sets the attribute _lex_to_state_actions
    #
    # @param value the value to set the attribute _lex_to_state_actions to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3092
    def _lex_to_state_actions=(_arg0); end

    # Returns the value of attribute _lex_trans_actions.
    #
    # source://parser//lib/parser/lexer-strings.rb#3029
    def _lex_trans_actions; end

    # Sets the attribute _lex_trans_actions
    #
    # @param value the value to set the attribute _lex_trans_actions to.
    #
    # source://parser//lib/parser/lexer-strings.rb#3029
    def _lex_trans_actions=(_arg0); end

    # Returns the value of attribute _lex_trans_keys.
    #
    # source://parser//lib/parser/lexer-strings.rb#76
    def _lex_trans_keys; end

    # Sets the attribute _lex_trans_keys
    #
    # @param value the value to set the attribute _lex_trans_keys to.
    #
    # source://parser//lib/parser/lexer-strings.rb#76
    def _lex_trans_keys=(_arg0); end

    # Returns the value of attribute _lex_trans_targs.
    #
    # source://parser//lib/parser/lexer-strings.rb#2966
    def _lex_trans_targs; end

    # Sets the attribute _lex_trans_targs
    #
    # @param value the value to set the attribute _lex_trans_targs to.
    #
    # source://parser//lib/parser/lexer-strings.rb#2966
    def _lex_trans_targs=(_arg0); end
  end
end

# %
#
# source://parser//lib/parser/lexer-strings.rb#3287
Parser::LexerStrings::ESCAPES = T.let(T.unsafe(nil), Hash)

# source://parser//lib/parser/lexer-strings.rb#5423
Parser::LexerStrings::ESCAPE_WHITESPACE = T.let(T.unsafe(nil), Hash)

# source://parser//lib/parser/lexer-strings.rb#3332
Parser::LexerStrings::LEX_STATES = T.let(T.unsafe(nil), Hash)

# source://parser//lib/parser/lexer-strings.rb#3293
Parser::LexerStrings::REGEXP_META_CHARACTERS = T.let(T.unsafe(nil), Regexp)

# Diagnostic messages (errors, warnings and notices) that can be generated.
#
# @api public
# @see Diagnostic
#
# source://parser//lib/parser/messages.rb#11
Parser::MESSAGES = T.let(T.unsafe(nil), Hash)

# Holds p->max_numparam from parse.y
#
# @api private
#
# source://parser//lib/parser/max_numparam_stack.rb#8
class Parser::MaxNumparamStack
  # @api private
  # @return [MaxNumparamStack] a new instance of MaxNumparamStack
  #
  # source://parser//lib/parser/max_numparam_stack.rb#13
  def initialize; end

  # @api private
  # @return [Boolean]
  #
  # source://parser//lib/parser/max_numparam_stack.rb#17
  def empty?; end

  # @api private
  # @return [Boolean]
  #
  # source://parser//lib/parser/max_numparam_stack.rb#29
  def has_numparams?; end

  # @api private
  #
  # source://parser//lib/parser/max_numparam_stack.rb#21
  def has_ordinary_params!; end

  # @api private
  # @return [Boolean]
  #
  # source://parser//lib/parser/max_numparam_stack.rb#25
  def has_ordinary_params?; end

  # @api private
  #
  # source://parser//lib/parser/max_numparam_stack.rb#45
  def pop; end

  # @api private
  #
  # source://parser//lib/parser/max_numparam_stack.rb#41
  def push(static:); end

  # @api private
  #
  # source://parser//lib/parser/max_numparam_stack.rb#33
  def register(numparam); end

  # @api private
  #
  # source://parser//lib/parser/max_numparam_stack.rb#9
  def stack; end

  # @api private
  #
  # source://parser//lib/parser/max_numparam_stack.rb#37
  def top; end

  private

  # @api private
  #
  # source://parser//lib/parser/max_numparam_stack.rb#51
  def set(value); end
end

# @api private
#
# source://parser//lib/parser/max_numparam_stack.rb#11
Parser::MaxNumparamStack::ORDINARY_PARAMS = T.let(T.unsafe(nil), Integer)

# @api private
#
# source://parser//lib/parser/messages.rb#112
module Parser::Messages
  class << self
    # Formats the message, returns a raw template if there's nothing to interpolate
    #
    # Code like `format("", {})` gives a warning, and so this method tries interpolating
    # only if `arguments` hash is not empty.
    #
    # @api private
    #
    # source://parser//lib/parser/messages.rb#119
    def compile(reason, arguments); end
  end
end

# Parser metadata
#
# source://parser//lib/parser/meta.rb#5
module Parser::Meta; end

# All node types that parser can produce. Not all parser versions
# will be able to produce every possible node.
# Includes node types that are only emitted by the prism parser translator.
#
# source://parser//lib/parser/meta.rb#17
Parser::Meta::NODE_TYPES = T.let(T.unsafe(nil), Set)

# These are node types required by `Prism::Translation::Parser`,
# which has advanced syntax support ahead of the Parser gem.
#
# source://parser//lib/parser/meta.rb#9
Parser::Meta::PRISM_TRANSLATION_PARSER_NODE_TYPES = T.let(T.unsafe(nil), Array)

# {Parser::Rewriter} is deprecated. Use {Parser::TreeRewriter} instead.
# It has a backwards compatible API and uses {Parser::Source::TreeRewriter}
# instead of {Parser::Source::Rewriter}.
# Please check the documentation for {Parser::Source::Rewriter} for details.
#
# @api public
# @deprecated Use {Parser::TreeRewriter}
#
# source://parser//lib/parser/rewriter.rb#14
class Parser::Rewriter < ::Parser::AST::Processor
  extend ::Parser::Deprecation

  # @api public
  # @return [Rewriter] a new instance of Rewriter
  #
  # source://parser//lib/parser/rewriter.rb#98
  def initialize(*_arg0); end

  # Returns `true` if the specified node is an assignment node, returns false
  # otherwise.
  #
  # @api public
  # @param node [Parser::AST::Node]
  # @return [Boolean]
  #
  # source://parser//lib/parser/rewriter.rb#38
  def assignment?(node); end

  # Inserts new code after the given source range.
  #
  # @api public
  # @param range [Parser::Source::Range]
  # @param content [String]
  #
  # source://parser//lib/parser/rewriter.rb#77
  def insert_after(range, content); end

  # Inserts new code before the given source range.
  #
  # @api public
  # @param range [Parser::Source::Range]
  # @param content [String]
  #
  # source://parser//lib/parser/rewriter.rb#67
  def insert_before(range, content); end

  # Removes the source range.
  #
  # @api public
  # @param range [Parser::Source::Range]
  #
  # source://parser//lib/parser/rewriter.rb#47
  def remove(range); end

  # Replaces the code of the source range `range` with `content`.
  #
  # @api public
  # @param range [Parser::Source::Range]
  # @param content [String]
  #
  # source://parser//lib/parser/rewriter.rb#87
  def replace(range, content); end

  # Rewrites the AST/source buffer and returns a String containing the new
  # version.
  #
  # @api public
  # @param source_buffer [Parser::Source::Buffer]
  # @param ast [Parser::AST::Node]
  # @return [String]
  #
  # source://parser//lib/parser/rewriter.rb#23
  def rewrite(source_buffer, ast); end

  # Wraps the given source range with the given values.
  #
  # @api public
  # @param range [Parser::Source::Range]
  # @param content [String]
  #
  # source://parser//lib/parser/rewriter.rb#57
  def wrap(range, before, after); end
end

# @api public
#
# source://parser//lib/parser/rewriter.rb#91
Parser::Rewriter::DEPRECATION_WARNING = T.let(T.unsafe(nil), String)

# source://parser//lib/parser/ruby34.rb#14
class Parser::Ruby34 < ::Parser::Base
  # reduce 0 omitted
  #
  # source://parser//lib/parser/ruby34.rb#8371
  def _reduce_1(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8425
  def _reduce_10(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9025
  def _reduce_100(val, _values, result); end

  # reduce 101 omitted
  #
  # source://parser//lib/parser/ruby34.rb#9034
  def _reduce_102(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9040
  def _reduce_103(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9046
  def _reduce_104(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9052
  def _reduce_105(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9058
  def _reduce_106(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9064
  def _reduce_107(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9070
  def _reduce_108(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9076
  def _reduce_109(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8431
  def _reduce_11(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9082
  def _reduce_110(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9092
  def _reduce_111(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9098
  def _reduce_112(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9108
  def _reduce_113(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9115
  def _reduce_114(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9122
  def _reduce_115(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9128
  def _reduce_116(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9134
  def _reduce_117(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9140
  def _reduce_118(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9146
  def _reduce_119(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8448
  def _reduce_12(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9152
  def _reduce_120(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9158
  def _reduce_121(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9164
  def _reduce_122(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9171
  def _reduce_123(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9178
  def _reduce_124(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9184
  def _reduce_125(val, _values, result); end

  # reduce 126 omitted
  #
  # source://parser//lib/parser/ruby34.rb#9192
  def _reduce_127(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9198
  def _reduce_128(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9204
  def _reduce_129(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8454
  def _reduce_13(val, _values, result); end

  # reduce 134 omitted
  #
  # source://parser//lib/parser/ruby34.rb#9220
  def _reduce_135(val, _values, result); end

  # reduce 136 omitted
  #
  # source://parser//lib/parser/ruby34.rb#9228
  def _reduce_137(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9234
  def _reduce_138(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9240
  def _reduce_139(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8460
  def _reduce_14(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8466
  def _reduce_15(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8472
  def _reduce_16(val, _values, result); end

  # reduce 17 omitted
  #
  # source://parser//lib/parser/ruby34.rb#8480
  def _reduce_18(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8486
  def _reduce_19(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8378
  def _reduce_2(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8492
  def _reduce_20(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8498
  def _reduce_21(val, _values, result); end

  # reduce 210 omitted
  #
  # source://parser//lib/parser/ruby34.rb#9388
  def _reduce_211(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9394
  def _reduce_212(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9400
  def _reduce_213(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9409
  def _reduce_214(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9418
  def _reduce_215(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9427
  def _reduce_216(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9436
  def _reduce_217(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9444
  def _reduce_218(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9452
  def _reduce_219(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8506
  def _reduce_22(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9458
  def _reduce_220(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9464
  def _reduce_221(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9470
  def _reduce_222(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9476
  def _reduce_223(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9482
  def _reduce_224(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9488
  def _reduce_225(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9494
  def _reduce_226(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9500
  def _reduce_227(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9506
  def _reduce_228(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9512
  def _reduce_229(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8514
  def _reduce_23(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9518
  def _reduce_230(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9524
  def _reduce_231(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9530
  def _reduce_232(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9538
  def _reduce_233(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9544
  def _reduce_234(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9550
  def _reduce_235(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9556
  def _reduce_236(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9562
  def _reduce_237(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9568
  def _reduce_238(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8520
  def _reduce_24(val, _values, result); end

  # reduce 239 omitted
  #
  # source://parser//lib/parser/ruby34.rb#9576
  def _reduce_240(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9582
  def _reduce_241(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9588
  def _reduce_242(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9594
  def _reduce_243(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9600
  def _reduce_244(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9606
  def _reduce_245(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9612
  def _reduce_246(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9618
  def _reduce_247(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9624
  def _reduce_248(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9630
  def _reduce_249(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8526
  def _reduce_25(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9636
  def _reduce_250(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9642
  def _reduce_251(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9649
  def _reduce_252(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9656
  def _reduce_253(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9670
  def _reduce_254(val, _values, result); end

  # reduce 256 omitted
  #
  # source://parser//lib/parser/ruby34.rb#9688
  def _reduce_257(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9698
  def _reduce_258(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8533
  def _reduce_26(val, _values, result); end

  # reduce 262 omitted
  #
  # source://parser//lib/parser/ruby34.rb#9712
  def _reduce_263(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9718
  def _reduce_264(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9724
  def _reduce_265(val, _values, result); end

  # reduce 268 omitted
  #
  # source://parser//lib/parser/ruby34.rb#9736
  def _reduce_269(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8540
  def _reduce_27(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9742
  def _reduce_270(val, _values, result); end

  # reduce 271 omitted
  #
  # source://parser//lib/parser/ruby34.rb#9750
  def _reduce_272(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9760
  def _reduce_273(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9766
  def _reduce_274(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9776
  def _reduce_275(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9786
  def _reduce_276(val, _values, result); end

  # reduce 277 omitted
  #
  # source://parser//lib/parser/ruby34.rb#9794
  def _reduce_278(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8546
  def _reduce_28(val, _values, result); end

  # reduce 280 omitted
  #
  # source://parser//lib/parser/ruby34.rb#9804
  def _reduce_281(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9810
  def _reduce_282(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9816
  def _reduce_283(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9822
  def _reduce_284(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9828
  def _reduce_285(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9835
  def _reduce_286(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9843
  def _reduce_287(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9849
  def _reduce_288(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9876
  def _reduce_289(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8552
  def _reduce_29(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9897
  def _reduce_290(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9903
  def _reduce_291(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9918
  def _reduce_292(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9924
  def _reduce_293(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9930
  def _reduce_294(val, _values, result); end

  # reduce 295 omitted
  #
  # source://parser//lib/parser/ruby34.rb#9938
  def _reduce_296(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9944
  def _reduce_297(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9950
  def _reduce_298(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9956
  def _reduce_299(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8387
  def _reduce_3(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8562
  def _reduce_30(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9971
  def _reduce_300(val, _values, result); end

  # reduce 301 omitted
  #
  # source://parser//lib/parser/ruby34.rb#9979
  def _reduce_302(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9985
  def _reduce_303(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9991
  def _reduce_304(val, _values, result); end

  # reduce 314 omitted
  #
  # source://parser//lib/parser/ruby34.rb#10017
  def _reduce_315(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10023
  def _reduce_316(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10029
  def _reduce_317(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10037
  def _reduce_318(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10043
  def _reduce_319(val, _values, result); end

  # reduce 31 omitted
  #
  # source://parser//lib/parser/ruby34.rb#8570
  def _reduce_32(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10049
  def _reduce_320(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10055
  def _reduce_321(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10061
  def _reduce_322(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10067
  def _reduce_323(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10073
  def _reduce_324(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10079
  def _reduce_325(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10085
  def _reduce_326(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10091
  def _reduce_327(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10097
  def _reduce_328(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10103
  def _reduce_329(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8576
  def _reduce_33(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10111
  def _reduce_330(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10117
  def _reduce_331(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10123
  def _reduce_332(val, _values, result); end

  # reduce 333 omitted
  #
  # source://parser//lib/parser/ruby34.rb#10135
  def _reduce_334(val, _values, result); end

  # reduce 335 omitted
  #
  # source://parser//lib/parser/ruby34.rb#10145
  def _reduce_336(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10154
  def _reduce_337(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10163
  def _reduce_338(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10169
  def _reduce_339(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8583
  def _reduce_34(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10175
  def _reduce_340(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10185
  def _reduce_341(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10195
  def _reduce_342(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10205
  def _reduce_343(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10211
  def _reduce_344(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10219
  def _reduce_345(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10236
  def _reduce_346(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10245
  def _reduce_347(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10258
  def _reduce_348(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10266
  def _reduce_349(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8594
  def _reduce_35(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10281
  def _reduce_350(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10293
  def _reduce_351(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10305
  def _reduce_352(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10311
  def _reduce_353(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10317
  def _reduce_354(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10323
  def _reduce_355(val, _values, result); end

  # reduce 356 omitted
  #
  # source://parser//lib/parser/ruby34.rb#10331
  def _reduce_357(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10337
  def _reduce_358(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10343
  def _reduce_359(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10350
  def _reduce_360(val, _values, result); end

  # reduce 362 omitted
  #
  # source://parser//lib/parser/ruby34.rb#10362
  def _reduce_363(val, _values, result); end

  # reduce 366 omitted
  #
  # source://parser//lib/parser/ruby34.rb#10374
  def _reduce_367(val, _values, result); end

  # reduce 368 omitted
  #
  # source://parser//lib/parser/ruby34.rb#10387
  def _reduce_369(val, _values, result); end

  # reduce 36 omitted
  #
  # source://parser//lib/parser/ruby34.rb#8602
  def _reduce_37(val, _values, result); end

  # reduce 371 omitted
  #
  # source://parser//lib/parser/ruby34.rb#10397
  def _reduce_372(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10403
  def _reduce_373(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10409
  def _reduce_374(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10415
  def _reduce_375(val, _values, result); end

  # reduce 376 omitted
  #
  # source://parser//lib/parser/ruby34.rb#10423
  def _reduce_377(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10430
  def _reduce_378(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10438
  def _reduce_379(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8608
  def _reduce_38(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10444
  def _reduce_380(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10450
  def _reduce_381(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10456
  def _reduce_382(val, _values, result); end

  # reduce 384 omitted
  #
  # source://parser//lib/parser/ruby34.rb#10466
  def _reduce_385(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10472
  def _reduce_386(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10478
  def _reduce_387(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10484
  def _reduce_388(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10490
  def _reduce_389(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8614
  def _reduce_39(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10496
  def _reduce_390(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10502
  def _reduce_391(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10508
  def _reduce_392(val, _values, result); end

  # reduce 393 omitted
  #
  # source://parser//lib/parser/ruby34.rb#10516
  def _reduce_394(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10525
  def _reduce_395(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10535
  def _reduce_396(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10543
  def _reduce_397(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10552
  def _reduce_398(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8393
  def _reduce_4(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8623
  def _reduce_40(val, _values, result); end

  # reduce 399 omitted
  #
  # source://parser//lib/parser/ruby34.rb#10562
  def _reduce_400(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10571
  def _reduce_401(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10581
  def _reduce_402(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10589
  def _reduce_403(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10598
  def _reduce_404(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10605
  def _reduce_405(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10613
  def _reduce_406(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10620
  def _reduce_407(val, _values, result); end

  # reduce 408 omitted
  #
  # source://parser//lib/parser/ruby34.rb#10630
  def _reduce_409(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8632
  def _reduce_41(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10636
  def _reduce_410(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10642
  def _reduce_411(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10651
  def _reduce_412(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10660
  def _reduce_413(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10666
  def _reduce_414(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10672
  def _reduce_415(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10678
  def _reduce_416(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10684
  def _reduce_417(val, _values, result); end

  # reduce 418 omitted
  #
  # source://parser//lib/parser/ruby34.rb#10693
  def _reduce_419(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8641
  def _reduce_42(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10702
  def _reduce_420(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10708
  def _reduce_421(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10724
  def _reduce_422(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10732
  def _reduce_423(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10742
  def _reduce_424(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10749
  def _reduce_425(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10756
  def _reduce_426(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10763
  def _reduce_427(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10770
  def _reduce_428(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10777
  def _reduce_429(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8649
  def _reduce_43(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10784
  def _reduce_430(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10792
  def _reduce_431(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10800
  def _reduce_432(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10812
  def _reduce_433(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10823
  def _reduce_434(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10831
  def _reduce_435(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10839
  def _reduce_436(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10847
  def _reduce_437(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10853
  def _reduce_438(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10861
  def _reduce_439(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8658
  def _reduce_44(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10869
  def _reduce_440(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10877
  def _reduce_441(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10883
  def _reduce_442(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10889
  def _reduce_443(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10896
  def _reduce_444(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10903
  def _reduce_445(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10910
  def _reduce_446(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10917
  def _reduce_447(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10924
  def _reduce_448(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10934
  def _reduce_449(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8672
  def _reduce_45(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10941
  def _reduce_450(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10947
  def _reduce_451(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10958
  def _reduce_452(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10965
  def _reduce_453(val, _values, result); end

  # reduce 454 omitted
  #
  # source://parser//lib/parser/ruby34.rb#10973
  def _reduce_455(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10979
  def _reduce_456(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10985
  def _reduce_457(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#10995
  def _reduce_458(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11003
  def _reduce_459(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8686
  def _reduce_46(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11010
  def _reduce_460(val, _values, result); end

  # reduce 461 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11018
  def _reduce_462(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11024
  def _reduce_463(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11030
  def _reduce_464(val, _values, result); end

  # reduce 465 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11038
  def _reduce_466(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11048
  def _reduce_467(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11054
  def _reduce_468(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11060
  def _reduce_469(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11066
  def _reduce_470(val, _values, result); end

  # reduce 471 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11074
  def _reduce_472(val, _values, result); end

  # reduce 473 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11082
  def _reduce_474(val, _values, result); end

  # reduce 475 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11090
  def _reduce_476(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11097
  def _reduce_477(val, _values, result); end

  # reduce 47 omitted
  #
  # source://parser//lib/parser/ruby34.rb#8694
  def _reduce_48(val, _values, result); end

  # reduce 479 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11108
  def _reduce_480(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11116
  def _reduce_481(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11124
  def _reduce_482(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11132
  def _reduce_483(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11139
  def _reduce_484(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11147
  def _reduce_485(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11155
  def _reduce_486(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11163
  def _reduce_487(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11170
  def _reduce_488(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11176
  def _reduce_489(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8704
  def _reduce_49(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11182
  def _reduce_490(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11188
  def _reduce_491(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11196
  def _reduce_492(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11204
  def _reduce_493(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11210
  def _reduce_494(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11216
  def _reduce_495(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11223
  def _reduce_496(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11229
  def _reduce_497(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11235
  def _reduce_498(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11241
  def _reduce_499(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8399
  def _reduce_5(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11247
  def _reduce_500(val, _values, result); end

  # reduce 501 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11255
  def _reduce_502(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11265
  def _reduce_503(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11275
  def _reduce_504(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11281
  def _reduce_505(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11287
  def _reduce_506(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11293
  def _reduce_507(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11299
  def _reduce_508(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11305
  def _reduce_509(val, _values, result); end

  # reduce 50 omitted
  #
  # source://parser//lib/parser/ruby34.rb#8712
  def _reduce_51(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11311
  def _reduce_510(val, _values, result); end

  # reduce 511 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11319
  def _reduce_512(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11325
  def _reduce_513(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11331
  def _reduce_514(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11337
  def _reduce_515(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11343
  def _reduce_516(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11349
  def _reduce_517(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11355
  def _reduce_518(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11361
  def _reduce_519(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11367
  def _reduce_520(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11373
  def _reduce_521(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11379
  def _reduce_522(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11385
  def _reduce_523(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11391
  def _reduce_524(val, _values, result); end

  # reduce 525 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11399
  def _reduce_526(val, _values, result); end

  # reduce 527 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11407
  def _reduce_528(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11413
  def _reduce_529(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11419
  def _reduce_530(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11425
  def _reduce_531(val, _values, result); end

  # reduce 534 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11437
  def _reduce_535(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11443
  def _reduce_536(val, _values, result); end

  # reduce 53 omitted
  #
  # source://parser//lib/parser/ruby34.rb#8726
  def _reduce_54(val, _values, result); end

  # reduce 544 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11465
  def _reduce_545(val, _values, result); end

  # reduce 546 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11473
  def _reduce_547(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11479
  def _reduce_548(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11492
  def _reduce_549(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8732
  def _reduce_55(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11499
  def _reduce_550(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11506
  def _reduce_551(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11512
  def _reduce_552(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11518
  def _reduce_553(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11524
  def _reduce_554(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11539
  def _reduce_555(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11545
  def _reduce_556(val, _values, result); end

  # reduce 558 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11555
  def _reduce_559(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8738
  def _reduce_56(val, _values, result); end

  # reduce 560 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11563
  def _reduce_561(val, _values, result); end

  # reduce 564 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11575
  def _reduce_565(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11581
  def _reduce_566(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11587
  def _reduce_567(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11593
  def _reduce_568(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11600
  def _reduce_569(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8744
  def _reduce_57(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11607
  def _reduce_570(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11613
  def _reduce_571(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11620
  def _reduce_572(val, _values, result); end

  # reduce 574 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11631
  def _reduce_575(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11637
  def _reduce_576(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11643
  def _reduce_577(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11649
  def _reduce_578(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11655
  def _reduce_579(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8750
  def _reduce_58(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11661
  def _reduce_580(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11667
  def _reduce_581(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11673
  def _reduce_582(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11679
  def _reduce_583(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11685
  def _reduce_584(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11691
  def _reduce_585(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11697
  def _reduce_586(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11703
  def _reduce_587(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11709
  def _reduce_588(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11715
  def _reduce_589(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8759
  def _reduce_59(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11721
  def _reduce_590(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11727
  def _reduce_591(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11733
  def _reduce_592(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11739
  def _reduce_593(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11745
  def _reduce_594(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11751
  def _reduce_595(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11757
  def _reduce_596(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11763
  def _reduce_597(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11770
  def _reduce_598(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8405
  def _reduce_6(val, _values, result); end

  # reduce 599 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11781
  def _reduce_600(val, _values, result); end

  # reduce 603 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11793
  def _reduce_604(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11800
  def _reduce_605(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11807
  def _reduce_606(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11813
  def _reduce_607(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11824
  def _reduce_608(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11831
  def _reduce_609(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11838
  def _reduce_610(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11845
  def _reduce_611(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11852
  def _reduce_612(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11858
  def _reduce_613(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11864
  def _reduce_614(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11870
  def _reduce_615(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11876
  def _reduce_616(val, _values, result); end

  # reduce 617 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11884
  def _reduce_618(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11890
  def _reduce_619(val, _values, result); end

  # reduce 61 omitted
  #
  # source://parser//lib/parser/ruby34.rb#8772
  def _reduce_62(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11896
  def _reduce_620(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11902
  def _reduce_621(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11908
  def _reduce_622(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11914
  def _reduce_623(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11920
  def _reduce_624(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11926
  def _reduce_625(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11932
  def _reduce_626(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11938
  def _reduce_627(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11944
  def _reduce_628(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11950
  def _reduce_629(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8778
  def _reduce_63(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11956
  def _reduce_630(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11962
  def _reduce_631(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11968
  def _reduce_632(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11974
  def _reduce_633(val, _values, result); end

  # reduce 634 omitted
  #
  # source://parser//lib/parser/ruby34.rb#11982
  def _reduce_635(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#11989
  def _reduce_636(val, _values, result); end

  # reduce 637 omitted
  #
  # source://parser//lib/parser/ruby34.rb#12000
  def _reduce_638(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12008
  def _reduce_639(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8785
  def _reduce_64(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12016
  def _reduce_640(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12022
  def _reduce_641(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12028
  def _reduce_642(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12034
  def _reduce_643(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12040
  def _reduce_644(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12047
  def _reduce_645(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12053
  def _reduce_646(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12059
  def _reduce_647(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12068
  def _reduce_648(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12078
  def _reduce_649(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8796
  def _reduce_65(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12086
  def _reduce_650(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12095
  def _reduce_651(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12103
  def _reduce_652(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12112
  def _reduce_653(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12119
  def _reduce_654(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12127
  def _reduce_655(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12136
  def _reduce_656(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12143
  def _reduce_657(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12151
  def _reduce_658(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12158
  def _reduce_659(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8802
  def _reduce_66(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12166
  def _reduce_660(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12172
  def _reduce_661(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12178
  def _reduce_662(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12184
  def _reduce_663(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12190
  def _reduce_664(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12196
  def _reduce_665(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12202
  def _reduce_666(val, _values, result); end

  # reduce 667 omitted
  #
  # source://parser//lib/parser/ruby34.rb#12210
  def _reduce_668(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12220
  def _reduce_669(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8809
  def _reduce_67(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12227
  def _reduce_670(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12234
  def _reduce_671(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12240
  def _reduce_672(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12246
  def _reduce_673(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12252
  def _reduce_674(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12267
  def _reduce_675(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12275
  def _reduce_676(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12283
  def _reduce_677(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12290
  def _reduce_678(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12297
  def _reduce_679(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12303
  def _reduce_680(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12309
  def _reduce_681(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12315
  def _reduce_682(val, _values, result); end

  # reduce 684 omitted
  #
  # source://parser//lib/parser/ruby34.rb#12325
  def _reduce_685(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12331
  def _reduce_686(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12339
  def _reduce_687(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12347
  def _reduce_688(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12355
  def _reduce_689(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12363
  def _reduce_690(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12369
  def _reduce_691(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12375
  def _reduce_692(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12381
  def _reduce_693(val, _values, result); end

  # reduce 695 omitted
  #
  # source://parser//lib/parser/ruby34.rb#12391
  def _reduce_696(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12399
  def _reduce_697(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8411
  def _reduce_7(val, _values, result); end

  # reduce 699 omitted
  #
  # source://parser//lib/parser/ruby34.rb#12411
  def _reduce_700(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12419
  def _reduce_701(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12427
  def _reduce_702(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12433
  def _reduce_703(val, _values, result); end

  # reduce 704 omitted
  #
  # source://parser//lib/parser/ruby34.rb#12441
  def _reduce_705(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12447
  def _reduce_706(val, _values, result); end

  # reduce 707 omitted
  #
  # source://parser//lib/parser/ruby34.rb#12455
  def _reduce_708(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12461
  def _reduce_709(val, _values, result); end

  # reduce 70 omitted
  #
  # source://parser//lib/parser/ruby34.rb#8821
  def _reduce_71(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12467
  def _reduce_710(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12473
  def _reduce_711(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12479
  def _reduce_712(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12485
  def _reduce_713(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12491
  def _reduce_714(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12497
  def _reduce_715(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8828
  def _reduce_72(val, _values, result); end

  # reduce 725 omitted
  #
  # source://parser//lib/parser/ruby34.rb#12532
  def _reduce_726(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12538
  def _reduce_727(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8835
  def _reduce_73(val, _values, result); end

  # reduce 731 omitted
  #
  # source://parser//lib/parser/ruby34.rb#12552
  def _reduce_732(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12558
  def _reduce_733(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12564
  def _reduce_734(val, _values, result); end

  # reduce 736 omitted
  #
  # source://parser//lib/parser/ruby34.rb#12574
  def _reduce_737(val, _values, result); end

  # reduce 740 omitted
  #
  # source://parser//lib/parser/ruby34.rb#12586
  def _reduce_741(val, _values, result); end

  # reduce 74 omitted
  #
  # source://parser//lib/parser/ruby34.rb#8844
  def _reduce_75(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8851
  def _reduce_76(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8862
  def _reduce_77(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8869
  def _reduce_78(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8880
  def _reduce_79(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8887
  def _reduce_80(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8898
  def _reduce_81(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8908
  def _reduce_82(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8915
  def _reduce_83(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8922
  def _reduce_84(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8929
  def _reduce_85(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8936
  def _reduce_86(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8943
  def _reduce_87(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8949
  def _reduce_88(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8955
  def _reduce_89(val, _values, result); end

  # reduce 8 omitted
  #
  # source://parser//lib/parser/ruby34.rb#8419
  def _reduce_9(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8961
  def _reduce_90(val, _values, result); end

  # reduce 91 omitted
  #
  # source://parser//lib/parser/ruby34.rb#8969
  def _reduce_92(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8976
  def _reduce_93(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8983
  def _reduce_94(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8991
  def _reduce_95(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#8998
  def _reduce_96(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9006
  def _reduce_97(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9012
  def _reduce_98(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#9019
  def _reduce_99(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#12592
  def _reduce_none(val, _values, result); end

  # source://parser//lib/parser/ruby34.rb#21
  def default_encoding; end

  # source://parser//lib/parser/ruby34.rb#25
  def endless_method_name(name_t); end

  # source://parser//lib/parser/ruby34.rb#38
  def local_pop; end

  # source://parser//lib/parser/ruby34.rb#31
  def local_push; end

  # source://parser//lib/parser/ruby34.rb#45
  def try_declare_numparam(node); end

  # source://parser//lib/parser/ruby34.rb#17
  def version; end
end

# source://parser//lib/parser/ruby34.rb#7955
Parser::Ruby34::Racc_arg = T.let(T.unsafe(nil), Array)

# source://parser//lib/parser/ruby34.rb#8365
Parser::Ruby34::Racc_debug_parser = T.let(T.unsafe(nil), FalseClass)

# source://parser//lib/parser/ruby34.rb#7972
Parser::Ruby34::Racc_token_to_s_table = T.let(T.unsafe(nil), Array)

# @api public
#
# source://parser//lib/parser.rb#30
module Parser::Source; end

# A buffer with source code. {Buffer} contains the source code itself,
# associated location information (name and first line), and takes care
# of encoding.
#
# A source buffer is immutable once populated.
#
# @api public
#
# source://parser//lib/parser/source/buffer.rb#25
class Parser::Source::Buffer
  # @api public
  # @return [Buffer] a new instance of Buffer
  #
  # source://parser//lib/parser/source/buffer.rb#110
  def initialize(name, first_line = T.unsafe(nil), source: T.unsafe(nil)); end

  # Convert a character index into the source to a column number.
  #
  # @api private
  # @param position [Integer]
  # @return [Integer] column
  #
  # source://parser//lib/parser/source/buffer.rb#247
  def column_for_position(position); end

  # Convert a character index into the source to a `[line, column]` tuple.
  #
  # @api public
  # @param position [Integer]
  # @return [[Integer, Integer]] `[line, column]`
  #
  # source://parser//lib/parser/source/buffer.rb#222
  def decompose_position(position); end

  # First line of the buffer, 1 by default.
  #
  # @api public
  # @return [Integer] first line
  #
  # source://parser//lib/parser/source/buffer.rb#26
  def first_line; end

  # @api public
  #
  # source://parser//lib/parser/source/buffer.rb#317
  def freeze; end

  # @api public
  #
  # source://parser//lib/parser/source/buffer.rb#323
  def inspect; end

  # Number of last line in the buffer
  #
  # @api public
  # @return [Integer]
  #
  # source://parser//lib/parser/source/buffer.rb#312
  def last_line; end

  # Convert a character index into the source to a line number.
  #
  # @api private
  # @param position [Integer]
  # @return [Integer] line
  #
  # source://parser//lib/parser/source/buffer.rb#236
  def line_for_position(position); end

  # Extract line `lineno` as a new `Range`, taking `first_line` into account.
  #
  # @api public
  # @param lineno [Integer]
  # @raise [IndexError] if `lineno` is out of bounds
  # @return [Range]
  #
  # source://parser//lib/parser/source/buffer.rb#289
  def line_range(lineno); end

  # Buffer name. If the buffer was created from a file, the name corresponds
  # to relative path to the file.
  #
  # @api public
  # @return [String] buffer name
  #
  # source://parser//lib/parser/source/buffer.rb#26
  def name; end

  # Populate this buffer from a string without encoding autodetection.
  #
  # @api public
  # @param input [String]
  # @raise [ArgumentError] if already populated
  # @return [String]
  #
  # source://parser//lib/parser/source/buffer.rb#185
  def raw_source=(input); end

  # Populate this buffer from correspondingly named file.
  #
  # @api public
  # @example
  #   Parser::Source::Buffer.new('foo/bar.rb').read
  # @raise [ArgumentError] if already populated
  # @return [Buffer] self
  #
  # source://parser//lib/parser/source/buffer.rb#136
  def read; end

  # @api public
  #
  # source://parser//lib/parser/source/buffer.rb#199
  def slice(start, length = T.unsafe(nil)); end

  # Source code contained in this buffer.
  #
  # @api public
  # @raise [RuntimeError] if buffer is not populated yet
  # @return [String] source code
  #
  # source://parser//lib/parser/source/buffer.rb#150
  def source; end

  # Populate this buffer from a string with encoding autodetection.
  # `input` is mutated if not frozen.
  #
  # @api public
  # @param input [String]
  # @raise [ArgumentError] if already populated
  # @raise [EncodingError] if `input` includes invalid byte sequence for the encoding
  # @return [String]
  #
  # source://parser//lib/parser/source/buffer.rb#167
  def source=(input); end

  # Extract line `lineno` from source, taking `first_line` into account.
  #
  # @api public
  # @param lineno [Integer]
  # @raise [IndexError] if `lineno` is out of bounds
  # @return [String]
  #
  # source://parser//lib/parser/source/buffer.rb#278
  def source_line(lineno); end

  # Return an `Array` of source code lines.
  #
  # @api public
  # @return [Array<String>]
  #
  # source://parser//lib/parser/source/buffer.rb#257
  def source_lines; end

  # @api public
  # @return [Range] A range covering the whole source
  #
  # source://parser//lib/parser/source/buffer.rb#303
  def source_range; end

  private

  # @api public
  #
  # source://parser//lib/parser/source/buffer.rb#353
  def bsearch(line_begins, position); end

  # @api public
  #
  # source://parser//lib/parser/source/buffer.rb#330
  def line_begins; end

  # @api public
  #
  # source://parser//lib/parser/source/buffer.rb#344
  def line_index_for_position(position); end

  class << self
    # Try to recognize encoding of `string` as Ruby would, i.e. by looking for
    # magic encoding comment or UTF-8 BOM. `string` can be in any encoding.
    #
    # @api public
    # @param string [String]
    # @raise [Parser::UnknownEncodingInMagicComment] if the encoding is not recognized
    # @return [String, nil] encoding name, if recognized
    #
    # source://parser//lib/parser/source/buffer.rb#52
    def recognize_encoding(string); end

    # Recognize encoding of `input` and process it so it could be lexed.
    #
    #  * If `input` does not contain BOM or magic encoding comment, it is
    #    kept in the original encoding.
    #  * If the detected encoding is binary, `input` is kept in binary.
    #  * Otherwise, `input` is re-encoded into UTF-8 and returned as a
    #    new string.
    #
    # This method mutates the encoding of `input`, but not its content.
    #
    # @api public
    # @param input [String]
    # @raise [EncodingError]
    # @return [String]
    #
    # source://parser//lib/parser/source/buffer.rb#95
    def reencode_string(input); end
  end
end

# @api private
#
# source://parser//lib/parser/source/buffer.rb#31
Parser::Source::Buffer::ENCODING_RE = T.let(T.unsafe(nil), Regexp)

# A comment in the source code.
#
# @api public
#
# source://parser//lib/parser/source/comment.rb#17
class Parser::Source::Comment
  # @api public
  # @param range [Parser::Source::Range]
  # @return [Comment] a new instance of Comment
  #
  # source://parser//lib/parser/source/comment.rb#67
  def initialize(range); end

  # Compares comments. Two comments are equal if they
  # correspond to the same source range.
  #
  # @api public
  # @param other [Object]
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/comment.rb#120
  def ==(other); end

  # @api public
  # @return [Boolean] true if this is a block comment.
  # @see #type
  #
  # source://parser//lib/parser/source/comment.rb#109
  def document?; end

  # @api public
  # @return [Boolean] true if this is an inline comment.
  # @see #type
  #
  # source://parser//lib/parser/source/comment.rb#101
  def inline?; end

  # @api public
  # @return [String] a human-readable representation of this comment
  #
  # source://parser//lib/parser/source/comment.rb#128
  def inspect; end

  # @api public
  # @return [Parser::Source::Range]
  #
  # source://parser//lib/parser/source/comment.rb#20
  def loc; end

  # @api public
  # @return [Parser::Source::Range]
  #
  # source://parser//lib/parser/source/comment.rb#20
  def location; end

  # @api public
  # @return [String]
  #
  # source://parser//lib/parser/source/comment.rb#18
  def text; end

  # Type of this comment.
  #
  #   * Inline comments correspond to `:inline`:
  #
  #         # whatever
  #
  #   * Block comments correspond to `:document`:
  #
  #         =begin
  #         hi i am a document
  #         =end
  #
  # @api public
  # @return [Symbol]
  #
  # source://parser//lib/parser/source/comment.rb#89
  def type; end

  class << self
    # Associate `comments` with `ast` nodes by their corresponding node.
    #
    # @api public
    # @deprecated Use {associate_locations}.
    # @param ast [Parser::AST::Node]
    # @param comments [Array<Comment>]
    # @return [Hash<Parser::AST::Node, Array<Comment>>]
    # @see Parser::Source::Comment::Associator#associate
    #
    # source://parser//lib/parser/source/comment.rb#32
    def associate(ast, comments); end

    # Associate `comments` with `ast` nodes using identity.
    #
    # @api public
    # @param ast [Parser::AST::Node]
    # @param comments [Array<Comment>]
    # @return [Hash<Parser::Source::Node, Array<Comment>>]
    # @see Parser::Source::Comment::Associator#associate_by_identity
    #
    # source://parser//lib/parser/source/comment.rb#59
    def associate_by_identity(ast, comments); end

    # Associate `comments` with `ast` nodes by their location in the
    # source.
    #
    # @api public
    # @param ast [Parser::AST::Node]
    # @param comments [Array<Comment>]
    # @return [Hash<Parser::Source::Map, Array<Comment>>]
    # @see Parser::Source::Comment::Associator#associate_locations
    #
    # source://parser//lib/parser/source/comment.rb#46
    def associate_locations(ast, comments); end
  end
end

# source://parser//lib/parser/source/comment/associator.rb#45
class Parser::Source::Comment::Associator
  # source://parser//lib/parser/source/comment/associator.rb#51
  def initialize(ast, comments); end

  # source://parser//lib/parser/source/comment/associator.rb#92
  def associate; end

  # source://parser//lib/parser/source/comment/associator.rb#115
  def associate_by_identity; end

  # source://parser//lib/parser/source/comment/associator.rb#104
  def associate_locations; end

  # source://parser//lib/parser/source/comment/associator.rb#46
  def skip_directives; end

  # source://parser//lib/parser/source/comment/associator.rb#46
  def skip_directives=(_arg0); end

  private

  # source://parser//lib/parser/source/comment/associator.rb#182
  def advance_comment; end

  # source://parser//lib/parser/source/comment/associator.rb#214
  def advance_through_directives; end

  # source://parser//lib/parser/source/comment/associator.rb#206
  def associate_and_advance_comment(node); end

  # source://parser//lib/parser/source/comment/associator.rb#123
  def children_in_source_order(node); end

  # source://parser//lib/parser/source/comment/associator.rb#187
  def current_comment_before?(node); end

  # source://parser//lib/parser/source/comment/associator.rb#194
  def current_comment_before_end?(node); end

  # source://parser//lib/parser/source/comment/associator.rb#201
  def current_comment_decorates?(node); end

  # source://parser//lib/parser/source/comment/associator.rb#135
  def do_associate; end

  # source://parser//lib/parser/source/comment/associator.rb#166
  def process_leading_comments(node); end

  # source://parser//lib/parser/source/comment/associator.rb#173
  def process_trailing_comments(node); end

  # source://parser//lib/parser/source/comment/associator.rb#148
  def visit(node); end
end

# source://parser//lib/parser/source/comment/associator.rb#212
Parser::Source::Comment::Associator::MAGIC_COMMENT_RE = T.let(T.unsafe(nil), Regexp)

# source://parser//lib/parser/source/comment/associator.rb#122
Parser::Source::Comment::Associator::POSTFIX_TYPES = T.let(T.unsafe(nil), Set)

# {Map} relates AST nodes to the source code they were parsed from.
# More specifically, a {Map} or its subclass contains a set of ranges:
#
#  * `expression`: smallest range which includes all source corresponding
#    to the node and all `expression` ranges of its children.
#  * other ranges (`begin`, `end`, `operator`, ...): node-specific ranges
#    pointing to various interesting tokens corresponding to the node.
#
# Note that the {Map::Heredoc} map is the only one whose `expression` does
# not include other ranges. It only covers the heredoc marker (`<<HERE`),
# not the here document itself.
#
# All ranges except `expression` are defined by {Map} subclasses.
#
# Ranges (except `expression`) can be `nil` if the corresponding token is
# not present in source. For example, a hash may not have opening/closing
# braces, and so would its source map.
#
#     p Parser::CurrentRuby.parse('[1 => 2]').children[0].loc
#     # => <Parser::Source::Map::Collection:0x007f5492b547d8
#     #  @end=nil, @begin=nil,
#     #  @expression=#<Source::Range (string) 1...7>>
#
# The {file:doc/AST_FORMAT.md} document describes how ranges associated to source
# code tokens. For example, the entry
#
#     (array (int 1) (int 2))
#
#     "[1, 2]"
#      ^ begin
#           ^ end
#      ~~~~~~ expression
#
# means that if `node` is an {Parser::AST::Node} `(array (int 1) (int 2))`,
# then `node.loc` responds to `begin`, `end` and `expression`, and
# `node.loc.begin` returns a range pointing at the opening bracket, and so on.
#
# If you want to write code polymorphic by the source map (i.e. accepting
# several subclasses of {Map}), use `respond_to?` instead of `is_a?` to
# check whether the map features the range you need. Concrete {Map}
# subclasses may not be preserved between versions, but their interfaces
# will be kept compatible.
#
# You can visualize the source maps with `ruby-parse -E` command-line tool.
#
# @api public
# @example
#   require 'parser/current'
#
#   p Parser::CurrentRuby.parse('[1, 2]').loc
#   # => #<Parser::Source::Map::Collection:0x007f14b80eccd8
#   #  @end=#<Source::Range (string) 5...6>,
#   #  @begin=#<Source::Range (string) 0...1>,
#   #  @expression=#<Source::Range (string) 0...6>>
#
# source://parser//lib/parser/source/map.rb#70
class Parser::Source::Map
  # @api public
  # @param expression [Range]
  # @return [Map] a new instance of Map
  #
  # source://parser//lib/parser/source/map.rb#76
  def initialize(expression); end

  # Compares source maps.
  #
  # @api public
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/map.rb#140
  def ==(other); end

  # A shortcut for `self.expression.column`.
  #
  # @api public
  # @return [Integer]
  #
  # source://parser//lib/parser/source/map.rb#109
  def column; end

  # @api public
  # @return [Range]
  #
  # source://parser//lib/parser/source/map.rb#72
  def expression; end

  # A shortcut for `self.expression.line`.
  #
  # @api public
  # @return [Integer]
  #
  # source://parser//lib/parser/source/map.rb#99
  def first_line; end

  # A shortcut for `self.expression.last_column`.
  #
  # @api public
  # @return [Integer]
  #
  # source://parser//lib/parser/source/map.rb#125
  def last_column; end

  # A shortcut for `self.expression.last_line`.
  #
  # @api public
  # @return [Integer]
  #
  # source://parser//lib/parser/source/map.rb#117
  def last_line; end

  # A shortcut for `self.expression.line`.
  #
  # @api public
  # @return [Integer]
  #
  # source://parser//lib/parser/source/map.rb#99
  def line; end

  # The node that is described by this map. Nodes and maps have 1:1 correspondence.
  #
  # @api public
  # @return [Parser::AST::Node]
  #
  # source://parser//lib/parser/source/map.rb#71
  def node; end

  # @api private
  #
  # source://parser//lib/parser/source/map.rb#89
  def node=(node); end

  # Converts this source map to a hash with keys corresponding to
  # ranges. For example, if called on an instance of {Collection},
  # which adds the `begin` and `end` ranges, the resulting hash
  # will contain keys `:expression`, `:begin` and `:end`.
  #
  # @api public
  # @example
  #   require 'parser/current'
  #
  #   p Parser::CurrentRuby.parse('[1, 2]').loc.to_hash
  #   # => {
  #   #   :begin => #<Source::Range (string) 0...1>,
  #   #   :end => #<Source::Range (string) 5...6>,
  #   #   :expression => #<Source::Range (string) 0...6>
  #   # }
  # @return [Hash<Symbol, Parser::Source::Range>]
  #
  # source://parser//lib/parser/source/map.rb#166
  def to_hash; end

  # @api private
  #
  # source://parser//lib/parser/source/map.rb#132
  def with_expression(expression_l); end

  protected

  # @api public
  #
  # source://parser//lib/parser/source/map.rb#180
  def update_expression(expression_l); end

  # @api public
  #
  # source://parser//lib/parser/source/map.rb#176
  def with(&block); end

  private

  # @api private
  #
  # source://parser//lib/parser/source/map.rb#82
  def initialize_copy(other); end
end

# source://parser//lib/parser/source/map/collection.rb#6
class Parser::Source::Map::Collection < ::Parser::Source::Map
  # source://parser//lib/parser/source/map/collection.rb#10
  def initialize(begin_l, end_l, expression_l); end

  # source://parser//lib/parser/source/map/collection.rb#7
  def begin; end

  # source://parser//lib/parser/source/map/collection.rb#8
  def end; end
end

# source://parser//lib/parser/source/map/condition.rb#6
class Parser::Source::Map::Condition < ::Parser::Source::Map
  # source://parser//lib/parser/source/map/condition.rb#12
  def initialize(keyword_l, begin_l, else_l, end_l, expression_l); end

  # source://parser//lib/parser/source/map/condition.rb#8
  def begin; end

  # source://parser//lib/parser/source/map/condition.rb#9
  def else; end

  # source://parser//lib/parser/source/map/condition.rb#10
  def end; end

  # source://parser//lib/parser/source/map/condition.rb#7
  def keyword; end
end

# source://parser//lib/parser/source/map/constant.rb#6
class Parser::Source::Map::Constant < ::Parser::Source::Map
  # source://parser//lib/parser/source/map/constant.rb#11
  def initialize(double_colon, name, expression); end

  # source://parser//lib/parser/source/map/constant.rb#7
  def double_colon; end

  # source://parser//lib/parser/source/map/constant.rb#8
  def name; end

  # source://parser//lib/parser/source/map/constant.rb#9
  def operator; end

  # source://parser//lib/parser/source/map/constant.rb#20
  def with_operator(operator_l); end

  protected

  # source://parser//lib/parser/source/map/constant.rb#26
  def update_operator(operator_l); end
end

# source://parser//lib/parser/source/map/definition.rb#6
class Parser::Source::Map::Definition < ::Parser::Source::Map
  # source://parser//lib/parser/source/map/definition.rb#12
  def initialize(keyword_l, operator_l, name_l, end_l); end

  # source://parser//lib/parser/source/map/definition.rb#10
  def end; end

  # source://parser//lib/parser/source/map/definition.rb#7
  def keyword; end

  # source://parser//lib/parser/source/map/definition.rb#9
  def name; end

  # source://parser//lib/parser/source/map/definition.rb#8
  def operator; end
end

# source://parser//lib/parser/source/map/for.rb#6
class Parser::Source::Map::For < ::Parser::Source::Map
  # source://parser//lib/parser/source/map/for.rb#10
  def initialize(keyword_l, in_l, begin_l, end_l, expression_l); end

  # source://parser//lib/parser/source/map/for.rb#8
  def begin; end

  # source://parser//lib/parser/source/map/for.rb#8
  def end; end

  # source://parser//lib/parser/source/map/for.rb#7
  def in; end

  # source://parser//lib/parser/source/map/for.rb#7
  def keyword; end
end

# source://parser//lib/parser/source/map/heredoc.rb#6
class Parser::Source::Map::Heredoc < ::Parser::Source::Map
  # source://parser//lib/parser/source/map/heredoc.rb#10
  def initialize(begin_l, body_l, end_l); end

  # source://parser//lib/parser/source/map/heredoc.rb#7
  def heredoc_body; end

  # source://parser//lib/parser/source/map/heredoc.rb#8
  def heredoc_end; end
end

# source://parser//lib/parser/source/map/index.rb#6
class Parser::Source::Map::Index < ::Parser::Source::Map
  # source://parser//lib/parser/source/map/index.rb#11
  def initialize(begin_l, end_l, expression_l); end

  # source://parser//lib/parser/source/map/index.rb#7
  def begin; end

  # source://parser//lib/parser/source/map/index.rb#8
  def end; end

  # source://parser//lib/parser/source/map/index.rb#9
  def operator; end

  # source://parser//lib/parser/source/map/index.rb#21
  def with_operator(operator_l); end

  protected

  # source://parser//lib/parser/source/map/index.rb#27
  def update_operator(operator_l); end
end

# source://parser//lib/parser/source/map/keyword.rb#6
class Parser::Source::Map::Keyword < ::Parser::Source::Map
  # source://parser//lib/parser/source/map/keyword.rb#11
  def initialize(keyword_l, begin_l, end_l, expression_l); end

  # source://parser//lib/parser/source/map/keyword.rb#8
  def begin; end

  # source://parser//lib/parser/source/map/keyword.rb#9
  def end; end

  # source://parser//lib/parser/source/map/keyword.rb#7
  def keyword; end
end

# source://parser//lib/parser/source/map/method_definition.rb#6
class Parser::Source::Map::MethodDefinition < ::Parser::Source::Map
  # source://parser//lib/parser/source/map/method_definition.rb#13
  def initialize(keyword_l, operator_l, name_l, end_l, assignment_l, body_l); end

  # source://parser//lib/parser/source/map/method_definition.rb#11
  def assignment; end

  # source://parser//lib/parser/source/map/method_definition.rb#10
  def end; end

  # source://parser//lib/parser/source/map/method_definition.rb#7
  def keyword; end

  # source://parser//lib/parser/source/map/method_definition.rb#9
  def name; end

  # source://parser//lib/parser/source/map/method_definition.rb#8
  def operator; end
end

# source://parser//lib/parser/source/map/objc_kwarg.rb#6
class Parser::Source::Map::ObjcKwarg < ::Parser::Source::Map
  # source://parser//lib/parser/source/map/objc_kwarg.rb#11
  def initialize(keyword_l, operator_l, argument_l, expression_l); end

  # source://parser//lib/parser/source/map/objc_kwarg.rb#9
  def argument; end

  # source://parser//lib/parser/source/map/objc_kwarg.rb#7
  def keyword; end

  # source://parser//lib/parser/source/map/objc_kwarg.rb#8
  def operator; end
end

# source://parser//lib/parser/source/map/operator.rb#6
class Parser::Source::Map::Operator < ::Parser::Source::Map
  # source://parser//lib/parser/source/map/operator.rb#9
  def initialize(operator, expression); end

  # source://parser//lib/parser/source/map/operator.rb#7
  def operator; end
end

# source://parser//lib/parser/source/map/rescue_body.rb#6
class Parser::Source::Map::RescueBody < ::Parser::Source::Map
  # source://parser//lib/parser/source/map/rescue_body.rb#11
  def initialize(keyword_l, assoc_l, begin_l, expression_l); end

  # source://parser//lib/parser/source/map/rescue_body.rb#8
  def assoc; end

  # source://parser//lib/parser/source/map/rescue_body.rb#9
  def begin; end

  # source://parser//lib/parser/source/map/rescue_body.rb#7
  def keyword; end
end

# source://parser//lib/parser/source/map/send.rb#6
class Parser::Source::Map::Send < ::Parser::Source::Map
  # source://parser//lib/parser/source/map/send.rb#13
  def initialize(dot_l, selector_l, begin_l, end_l, expression_l); end

  # source://parser//lib/parser/source/map/send.rb#10
  def begin; end

  # source://parser//lib/parser/source/map/send.rb#7
  def dot; end

  # source://parser//lib/parser/source/map/send.rb#11
  def end; end

  # source://parser//lib/parser/source/map/send.rb#9
  def operator; end

  # source://parser//lib/parser/source/map/send.rb#8
  def selector; end

  # source://parser//lib/parser/source/map/send.rb#24
  def with_operator(operator_l); end

  protected

  # source://parser//lib/parser/source/map/send.rb#30
  def update_operator(operator_l); end
end

# source://parser//lib/parser/source/map/ternary.rb#6
class Parser::Source::Map::Ternary < ::Parser::Source::Map
  # source://parser//lib/parser/source/map/ternary.rb#10
  def initialize(question_l, colon_l, expression_l); end

  # source://parser//lib/parser/source/map/ternary.rb#8
  def colon; end

  # source://parser//lib/parser/source/map/ternary.rb#7
  def question; end
end

# source://parser//lib/parser/source/map/variable.rb#6
class Parser::Source::Map::Variable < ::Parser::Source::Map
  # source://parser//lib/parser/source/map/variable.rb#10
  def initialize(name_l, expression_l = T.unsafe(nil)); end

  # source://parser//lib/parser/source/map/variable.rb#7
  def name; end

  # source://parser//lib/parser/source/map/variable.rb#8
  def operator; end

  # source://parser//lib/parser/source/map/variable.rb#19
  def with_operator(operator_l); end

  protected

  # source://parser//lib/parser/source/map/variable.rb#25
  def update_operator(operator_l); end
end

# A range of characters in a particular source buffer.
#
# The range is always exclusive, i.e. a range with `begin_pos` of 3 and
# `end_pos` of 5 will contain the following characters:
#
#     example
#        ^^
#
# @api public
#
# source://parser//lib/parser/source/range.rb#26
class Parser::Source::Range
  include ::Comparable

  # @api public
  # @param source_buffer [Buffer]
  # @param begin_pos [Integer]
  # @param end_pos [Integer]
  # @return [Range] a new instance of Range
  #
  # source://parser//lib/parser/source/range.rb#37
  def initialize(source_buffer, begin_pos, end_pos); end

  # Compare ranges, first by begin_pos, then by end_pos.
  #
  # @api public
  #
  # source://parser//lib/parser/source/range.rb#301
  def <=>(other); end

  # by the given amount(s)
  #
  # @api public
  # @param Endpoint(s) [Hash] to change, any combination of :begin_pos or :end_pos
  # @return [Range] the same range as this range but with the given end point(s) adjusted
  #
  # source://parser//lib/parser/source/range.rb#193
  def adjust(begin_pos: T.unsafe(nil), end_pos: T.unsafe(nil)); end

  # @api public
  # @return [Range] a zero-length range located just before the beginning
  #   of this range.
  #
  # source://parser//lib/parser/source/range.rb#55
  def begin; end

  # @api public
  # @return [Integer] index of the first character in the range
  #
  # source://parser//lib/parser/source/range.rb#30
  def begin_pos; end

  # @api public
  # @return [Integer] zero-based column number of the beginning of this range.
  #
  # source://parser//lib/parser/source/range.rb#92
  def column; end

  # @api public
  # @raise RangeError
  # @return [::Range] a range of columns spanned by this range.
  #
  # source://parser//lib/parser/source/range.rb#114
  def column_range; end

  # Return `other.contains?(self)`
  #
  # Two ranges must be one and only one of ==, disjoint?, contains?, contained? or crossing?
  #
  # @api public
  # @param other [Range]
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/range.rb#274
  def contained?(other); end

  # Returns true iff this range contains (strictly) `other`.
  #
  # Two ranges must be one and only one of ==, disjoint?, contains?, contained? or crossing?
  #
  # @api public
  # @param other [Range]
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/range.rb#262
  def contains?(other); end

  # Returns true iff both ranges intersect and also have different elements from one another.
  #
  # Two ranges must be one and only one of ==, disjoint?, contains?, contained? or crossing?
  #
  # @api public
  # @param other [Range]
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/range.rb#286
  def crossing?(other); end

  # Return `true` iff this range and `other` are disjoint.
  #
  # Two ranges must be one and only one of ==, disjoint?, contains?, contained? or crossing?
  #
  # @api public
  # @param other [Range]
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/range.rb#236
  def disjoint?(other); end

  # Checks if a range is empty; if it contains no characters
  #
  # @api public
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/range.rb#294
  def empty?; end

  # @api public
  # @return [Range] a zero-length range located just after the end
  #   of this range.
  #
  # source://parser//lib/parser/source/range.rb#63
  def end; end

  # @api public
  # @return [Integer] index of the character after the last character in the range
  #
  # source://parser//lib/parser/source/range.rb#30
  def end_pos; end

  # @api public
  def eql?(_arg0); end

  # Line number of the beginning of this range. By default, the first line
  # of a buffer is 1; as such, line numbers are most commonly one-based.
  #
  # @api public
  # @return [Integer] line number of the beginning of this range.
  # @see Buffer
  #
  # source://parser//lib/parser/source/range.rb#83
  def first_line; end

  # Support for Ranges be used in as Hash indices and in Sets.
  #
  # @api public
  #
  # source://parser//lib/parser/source/range.rb#313
  def hash; end

  # @api public
  # @return [String] a human-readable representation of this range.
  #
  # source://parser//lib/parser/source/range.rb#320
  def inspect; end

  # @api public
  # @param other [Range]
  # @return [Range] overlapping region of this range and `other`, or `nil`
  #   if they do not overlap
  #
  # source://parser//lib/parser/source/range.rb#220
  def intersect(other); end

  # `is?` provides a concise way to compare the source corresponding to this range.
  # For example, `r.source == '(' || r.source == 'begin'` is equivalent to
  # `r.is?('(', 'begin')`.
  #
  # @api public
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/range.rb#141
  def is?(*what); end

  # @api public
  # @param other [Range]
  # @return [Range] smallest possible range spanning both this range and `other`.
  #
  # source://parser//lib/parser/source/range.rb#209
  def join(other); end

  # @api public
  # @return [Integer] zero-based column number of the end of this range.
  #
  # source://parser//lib/parser/source/range.rb#106
  def last_column; end

  # @api public
  # @return [Integer] line number of the end of this range.
  #
  # source://parser//lib/parser/source/range.rb#99
  def last_line; end

  # @api public
  # @return [Integer] amount of characters included in this range.
  #
  # source://parser//lib/parser/source/range.rb#70
  def length; end

  # Line number of the beginning of this range. By default, the first line
  # of a buffer is 1; as such, line numbers are most commonly one-based.
  #
  # @api public
  # @return [Integer] line number of the beginning of this range.
  # @see Buffer
  #
  # source://parser//lib/parser/source/range.rb#83
  def line; end

  # Return `true` iff this range is not disjoint from `other`.
  #
  # @api public
  # @param other [Range]
  # @return [Boolean] `true` if this range and `other` overlap
  #
  # source://parser//lib/parser/source/range.rb#250
  def overlaps?(other); end

  # @api public
  # @param new_size [Integer]
  # @return [Range] a range beginning at the same point as this range and length `new_size`.
  #
  # source://parser//lib/parser/source/range.rb#201
  def resize(new_size); end

  # @api public
  # @return [Integer] amount of characters included in this range.
  #
  # source://parser//lib/parser/source/range.rb#70
  def size; end

  # @api public
  # @return [String] all source code covered by this range.
  #
  # source://parser//lib/parser/source/range.rb#132
  def source; end

  # @api public
  # @return [Parser::Source::Buffer]
  #
  # source://parser//lib/parser/source/range.rb#29
  def source_buffer; end

  # @api public
  # @return [String] a line of source code containing the beginning of this range.
  #
  # source://parser//lib/parser/source/range.rb#125
  def source_line; end

  # @api public
  # @return [Array<Integer>] a set of character indexes contained in this range.
  #
  # source://parser//lib/parser/source/range.rb#148
  def to_a; end

  # @api public
  # @return [Range] a Ruby range with the same `begin_pos` and `end_pos`
  #
  # source://parser//lib/parser/source/range.rb#155
  def to_range; end

  # Composes a GNU/Clang-style string representation of the beginning of this
  # range.
  #
  # For example, for the following range in file `foo.rb`,
  #
  #     def foo
  #         ^^^
  #
  # `to_s` will return `foo.rb:1:5`.
  # Note that the column index is one-based.
  #
  # @api public
  # @return [String]
  #
  # source://parser//lib/parser/source/range.rb#173
  def to_s; end

  # to the given value(s).
  #
  # @api public
  # @param Endpoint(s) [Hash] to change, any combination of :begin_pos or :end_pos
  # @return [Range] the same range as this range but with the given end point(s) changed
  #
  # source://parser//lib/parser/source/range.rb#184
  def with(begin_pos: T.unsafe(nil), end_pos: T.unsafe(nil)); end
end

# {Rewriter} is deprecated. Use {TreeRewriter} instead.
#
# TreeRewriter has simplified semantics, and customizable policies
# with regards to clobbering. Please read the documentation.
#
# Keep in mind:
# - Rewriter was discarding the `end_pos` of the given range for `insert_before`,
#   and the `begin_pos` for `insert_after`. These are meaningful in TreeRewriter.
# - TreeRewriter's wrap/insert_before/insert_after are multiple by default, while
#   Rewriter would raise clobbering errors if the non '_multi' version was called.
# - The TreeRewriter policy closest to Rewriter's behavior is:
#       different_replacements: :raise,
#       swallowed_insertions: :raise,
#       crossing_deletions: :accept
#
# @api public
# @deprecated Use {TreeRewriter}
#
# source://parser//lib/parser/source/rewriter.rb#31
class Parser::Source::Rewriter
  extend ::Parser::Deprecation

  # @api public
  # @deprecated Use {TreeRewriter}
  # @param source_buffer [Source::Buffer]
  # @return [Rewriter] a new instance of Rewriter
  #
  # source://parser//lib/parser/source/rewriter.rb#39
  def initialize(source_buffer); end

  # @api public
  # @return [Diagnostic::Engine]
  #
  # source://parser//lib/parser/source/rewriter.rb#33
  def diagnostics; end

  # Inserts new code after the given source range.
  #
  # @api public
  # @deprecated Use {TreeRewriter#insert_after}
  # @param range [Range]
  # @param content [String]
  # @raise [ClobberingError] when clobbering is detected
  # @return [Rewriter] self
  #
  # source://parser//lib/parser/source/rewriter.rb#131
  def insert_after(range, content); end

  # Inserts new code after the given source range by allowing other
  # insertions at the same position.
  # Note that an insertion with latter invocation comes _after_ earlier
  # insertion at the same position in the rewritten source.
  #
  # @api public
  # @deprecated Use {TreeRewriter#insert_after}
  # @example Inserting ')]'
  #   rewriter.
  #   insert_after_multi(range, ')').
  #   insert_after_multi(range, ']').
  #   process
  # @param range [Range]
  # @param content [String]
  # @raise [ClobberingError] when clobbering is detected
  # @return [Rewriter] self
  #
  # source://parser//lib/parser/source/rewriter.rb#153
  def insert_after_multi(range, content); end

  # Inserts new code before the given source range.
  #
  # @api public
  # @deprecated Use {TreeRewriter#insert_before}
  # @param range [Range]
  # @param content [String]
  # @raise [ClobberingError] when clobbering is detected
  # @return [Rewriter] self
  #
  # source://parser//lib/parser/source/rewriter.rb#80
  def insert_before(range, content); end

  # Inserts new code before the given source range by allowing other
  # insertions at the same position.
  # Note that an insertion with latter invocation comes _before_ earlier
  # insertion at the same position in the rewritten source.
  #
  # @api public
  # @deprecated Use {TreeRewriter#insert_before}
  # @example Inserting '[('
  #   rewriter.
  #   insert_before_multi(range, '(').
  #   insert_before_multi(range, '[').
  #   process
  # @param range [Range]
  # @param content [String]
  # @raise [ClobberingError] when clobbering is detected
  # @return [Rewriter] self
  #
  # source://parser//lib/parser/source/rewriter.rb#117
  def insert_before_multi(range, content); end

  # Applies all scheduled changes to the `source_buffer` and returns
  # modified source as a new string.
  #
  # @api public
  # @deprecated Use {TreeRewriter#process}
  # @return [String]
  #
  # source://parser//lib/parser/source/rewriter.rb#178
  def process; end

  # Removes the source range.
  #
  # @api public
  # @deprecated Use {TreeRewriter#remove}
  # @param range [Range]
  # @raise [ClobberingError] when clobbering is detected
  # @return [Rewriter] self
  #
  # source://parser//lib/parser/source/rewriter.rb#67
  def remove(range); end

  # Replaces the code of the source range `range` with `content`.
  #
  # @api public
  # @deprecated Use {TreeRewriter#replace}
  # @param range [Range]
  # @param content [String]
  # @raise [ClobberingError] when clobbering is detected
  # @return [Rewriter] self
  #
  # source://parser//lib/parser/source/rewriter.rb#167
  def replace(range, content); end

  # @api public
  # @return [Source::Buffer]
  #
  # source://parser//lib/parser/source/rewriter.rb#32
  def source_buffer; end

  # Provides a protected block where a sequence of multiple rewrite actions
  # are handled atomically. If any of the actions failed by clobbering,
  # all the actions are rolled back.
  #
  # @api public
  # @deprecated Use {TreeRewriter#transaction}
  # @example
  #   begin
  #   rewriter.transaction do
  #   rewriter.insert_before(range_of_something, '(')
  #   rewriter.insert_after(range_of_something, ')')
  #   end
  #   rescue Parser::ClobberingError
  #   end
  # @raise [RuntimeError] when no block is passed
  # @raise [RuntimeError] when already in a transaction
  #
  # source://parser//lib/parser/source/rewriter.rb#216
  def transaction; end

  # Inserts new code before and after the given source range.
  #
  # @api public
  # @deprecated Use {TreeRewriter#wrap}
  # @param range [Range]
  # @param before [String]
  # @param after [String]
  # @raise [ClobberingError] when clobbering is detected
  # @return [Rewriter] self
  #
  # source://parser//lib/parser/source/rewriter.rb#94
  def wrap(range, before, after); end

  private

  # @api public
  #
  # source://parser//lib/parser/source/rewriter.rb#476
  def active_clobber; end

  # @api public
  #
  # source://parser//lib/parser/source/rewriter.rb#484
  def active_clobber=(value); end

  # @api public
  #
  # source://parser//lib/parser/source/rewriter.rb#480
  def active_insertions; end

  # @api public
  #
  # source://parser//lib/parser/source/rewriter.rb#492
  def active_insertions=(value); end

  # @api public
  #
  # source://parser//lib/parser/source/rewriter.rb#472
  def active_queue; end

  # @api public
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/rewriter.rb#500
  def adjacent?(range1, range2); end

  # @api public
  #
  # source://parser//lib/parser/source/rewriter.rb#351
  def adjacent_insertion_mask(range); end

  # @api public
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/rewriter.rb#366
  def adjacent_insertions?(range); end

  # @api public
  #
  # source://parser//lib/parser/source/rewriter.rb#347
  def adjacent_position_mask(range); end

  # @api public
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/rewriter.rb#377
  def adjacent_updates?(range); end

  # Schedule a code update. If it overlaps with another update, check
  # whether they conflict, and raise a clobbering error if they do.
  # (As a special case, zero-length ranges at the same position are
  # considered to "overlap".) Otherwise, merge them.
  #
  # Updates which are adjacent to each other, but do not overlap, are also
  # merged.
  #
  # RULES:
  #
  # - Insertion ("replacing" a zero-length range):
  #   - Two insertions at the same point conflict. This is true even
  #     if the earlier insertion has already been merged with an adjacent
  #     update, and even if they are both inserting the same text.
  #   - An insertion never conflicts with a replace or remove operation
  #     on its right or left side, which does not overlap it (in other
  #     words, which does not update BOTH its right and left sides).
  #   - An insertion always conflicts with a remove operation which spans
  #     both its sides.
  #   - An insertion conflicts with a replace operation which spans both its
  #     sides, unless the replacement text is longer than the replaced text
  #     by the size of the insertion (or more), and the portion of
  #     replacement text immediately after the insertion position is
  #     identical to the inserted text.
  #
  # - Removal operations never conflict with each other.
  #
  # - Replacement operations:
  #   - Take the portion of each replacement text which falls within:
  #     - The other operation's replaced region
  #     - The other operation's replacement text, if it extends past the
  #       end of its own replaced region (in other words, if the replacement
  #       text is longer than the text it replaces)
  #   - If and only if the taken texts are identical for both operations,
  #     they do not conflict.
  #
  # @api public
  #
  # source://parser//lib/parser/source/rewriter.rb#280
  def append(action); end

  # @api public
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/rewriter.rb#389
  def can_merge?(action, existing); end

  # @api public
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/rewriter.rb#355
  def clobbered_insertion?(insertion); end

  # @api public
  #
  # source://parser//lib/parser/source/rewriter.rb#343
  def clobbered_position_mask(range); end

  # @api public
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/rewriter.rb#468
  def in_transaction?; end

  # @api public
  #
  # source://parser//lib/parser/source/rewriter.rb#410
  def merge_actions(action, existing); end

  # @api public
  #
  # source://parser//lib/parser/source/rewriter.rb#419
  def merge_actions!(action, existing); end

  # @api public
  #
  # source://parser//lib/parser/source/rewriter.rb#425
  def merge_replacements(actions); end

  # @api public
  # @raise [ClobberingError]
  #
  # source://parser//lib/parser/source/rewriter.rb#450
  def raise_clobber_error(action, existing); end

  # @api public
  #
  # source://parser//lib/parser/source/rewriter.rb#335
  def record_insertion(range); end

  # @api public
  #
  # source://parser//lib/parser/source/rewriter.rb#339
  def record_replace(range); end

  # @api public
  #
  # source://parser//lib/parser/source/rewriter.rb#445
  def replace_actions(old, updated); end

  # @api public
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/rewriter.rb#383
  def replace_compatible_with_insertion?(replace, insertion); end
end

# source://parser//lib/parser/source/rewriter/action.rb#9
class Parser::Source::Rewriter::Action
  include ::Comparable

  # source://parser//lib/parser/source/rewriter/action.rb#15
  def initialize(range, replacement = T.unsafe(nil), allow_multiple_insertions = T.unsafe(nil), order = T.unsafe(nil)); end

  # source://parser//lib/parser/source/rewriter/action.rb#24
  def <=>(other); end

  # source://parser//lib/parser/source/rewriter/action.rb#12
  def allow_multiple_insertions; end

  # source://parser//lib/parser/source/rewriter/action.rb#12
  def allow_multiple_insertions?; end

  # source://parser//lib/parser/source/rewriter/action.rb#12
  def order; end

  # source://parser//lib/parser/source/rewriter/action.rb#12
  def range; end

  # source://parser//lib/parser/source/rewriter/action.rb#12
  def replacement; end

  # source://parser//lib/parser/source/rewriter/action.rb#30
  def to_s; end
end

# @api public
#
# source://parser//lib/parser/source/rewriter.rb#504
Parser::Source::Rewriter::DEPRECATION_WARNING = T.let(T.unsafe(nil), String)

# {TreeRewriter} performs the heavy lifting in the source rewriting process.
# It schedules code updates to be performed in the correct order.
#
# For simple cases, the resulting source will be obvious.
#
# Examples for more complex cases follow. Assume these examples are acting on
# the source `'puts(:hello, :world)`. The methods #wrap, #remove, etc.
# receive a Range as first argument; for clarity, examples below use english
# sentences and a string of raw code instead.
#
# ## Overlapping ranges:
#
# Any two rewriting actions on overlapping ranges will fail and raise
# a `ClobberingError`, unless they are both deletions (covered next).
#
# * wrap ':hello, ' with '(' and ')'
# * wrap ', :world' with '(' and ')'
#  => CloberringError
#
# ## Overlapping deletions:
#
# * remove ':hello, '
# * remove ', :world'
#
# The overlapping ranges are merged and `':hello, :world'` will be removed.
# This policy can be changed. `:crossing_deletions` defaults to `:accept`
# but can be set to `:warn` or `:raise`.
#
# ## Multiple actions at the same end points:
#
# Results will always be independent on the order they were given.
# Exception: rewriting actions done on exactly the same range (covered next).
#
# Example:
# * replace ', ' by ' => '
# * wrap ':hello, :world' with '{' and '}'
# * replace ':world' with ':everybody'
# * wrap ':world' with '[', ']'
#
# The resulting string will be `'puts({:hello => [:everybody]})'`
# and this result is independent on the order the instructions were given in.
#
# Note that if the two "replace" were given as a single replacement of ', :world'
# for ' => :everybody', the result would be a `ClobberingError` because of the wrap
# in square brackets.
#
# ## Multiple wraps on same range:
# * wrap ':hello' with '(' and ')'
# * wrap ':hello' with '[' and ']'
#
# The wraps are combined in order given and results would be `'puts([(:hello)], :world)'`.
#
# ## Multiple replacements on same range:
# * replace ':hello' by ':hi', then
# * replace ':hello' by ':hey'
#
# The replacements are made in the order given, so the latter replacement
# supersedes the former and ':hello' will be replaced by ':hey'.
#
# This policy can be changed. `:different_replacements` defaults to `:accept`
# but can be set to `:warn` or `:raise`.
#
# ## Swallowed insertions:
# wrap 'world' by '__', '__'
# replace ':hello, :world' with ':hi'
#
# A containing replacement will swallow the contained rewriting actions
# and `':hello, :world'` will be replaced by `':hi'`.
#
# This policy can be changed for swallowed insertions. `:swallowed_insertions`
# defaults to `:accept` but can be set to `:warn` or `:raise`
#
# ## Implementation
# The updates are organized in a tree, according to the ranges they act on
# (where children are strictly contained by their parent), hence the name.
#
# @api public
#
# source://parser//lib/parser/source/tree_rewriter.rb#91
class Parser::Source::TreeRewriter
  extend ::Parser::Deprecation

  # @api public
  # @param source_buffer [Source::Buffer]
  # @return [TreeRewriter] a new instance of TreeRewriter
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#98
  def initialize(source_buffer, crossing_deletions: T.unsafe(nil), different_replacements: T.unsafe(nil), swallowed_insertions: T.unsafe(nil)); end

  # Returns a representation of the rewriter as nested insertions (:wrap) and replacements.
  #
  #     rewriter.as_actions # =>[ [:wrap, 1...10, '(', ')'],
  #                               [:wrap, 2...6, '', '!'],  # aka "insert_after"
  #                               [:replace, 2...4, 'foo'],
  #                               [:replace, 5...6, ''],  # aka "removal"
  #                             ],
  #
  # Contrary to `as_replacements`, this representation is sufficient to recreate exactly
  # the rewriter.
  #
  # @api public
  # @return [Array<(Symbol, Range, String{, String})>]
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#299
  def as_nested_actions; end

  # Returns a representation of the rewriter as an ordered list of replacements.
  #
  #     rewriter.as_replacements # => [ [1...1, '('],
  #                                     [2...4, 'foo'],
  #                                     [5...6, ''],
  #                                     [6...6, '!'],
  #                                     [10...10, ')'],
  #                                   ]
  #
  # This representation is sufficient to recreate the result of `process` but it is
  # not sufficient to recreate completely the rewriter for further merging/actions.
  # See `as_nested_actions`
  #
  # @api public
  # @return [Array<Range, String>] an ordered list of pairs of range & replacement
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#281
  def as_replacements; end

  # @api public
  # @return [Diagnostic::Engine]
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#93
  def diagnostics; end

  # Returns true iff no (non trivial) update has been recorded
  #
  # @api public
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#125
  def empty?; end

  # For special cases where one needs to merge a rewriter attached to a different source_buffer
  # or that needs to be offset. Policies of the receiver are used.
  #
  # @api public
  # @param rewriter [TreeRewriter] from different source_buffer
  # @param offset [Integer]
  # @raise [IndexError] if action ranges (once offset) don't fit the current buffer
  # @return [Rewriter] self
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#168
  def import!(foreign_rewriter, offset: T.unsafe(nil)); end

  # @api public
  # @return [Boolean]
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#329
  def in_transaction?; end

  # Shortcut for `wrap(range, nil, content)`
  #
  # @api public
  # @param range [Range]
  # @param content [String]
  # @raise [ClobberingError] when clobbering is detected
  # @return [Rewriter] self
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#242
  def insert_after(range, content); end

  # @api private
  # @deprecated Use insert_after or wrap
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#351
  def insert_after_multi(range, text); end

  # Shortcut for `wrap(range, content, nil)`
  #
  # @api public
  # @param range [Range]
  # @param content [String]
  # @raise [ClobberingError] when clobbering is detected
  # @return [Rewriter] self
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#230
  def insert_before(range, content); end

  # @api private
  # @deprecated Use insert_after or wrap
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#342
  def insert_before_multi(range, text); end

  # @api public
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#334
  def inspect; end

  # Returns a new rewriter that consists of the updates of the received
  # and the given argument. Policies of the receiver are used.
  #
  # @api public
  # @param with [Rewriter]
  # @raise [ClobberingError] when clobbering is detected
  # @return [Rewriter] merge of receiver and argument
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#155
  def merge(with); end

  # Merges the updates of argument with the receiver.
  # Policies of the receiver are used.
  # This action is atomic in that it won't change the receiver
  # unless it succeeds.
  #
  # @api public
  # @param with [Rewriter]
  # @raise [ClobberingError] when clobbering is detected
  # @return [Rewriter] self
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#139
  def merge!(with); end

  # Applies all scheduled changes to the `source_buffer` and returns
  # modified source as a new string.
  #
  # @api public
  # @return [String]
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#252
  def process; end

  # Shortcut for `replace(range, '')`
  #
  # @api public
  # @param range [Range]
  # @raise [ClobberingError] when clobbering is detected
  # @return [Rewriter] self
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#217
  def remove(range); end

  # Replaces the code of the source range `range` with `content`.
  #
  # @api public
  # @param range [Range]
  # @param content [String]
  # @raise [ClobberingError] when clobbering is detected
  # @return [Rewriter] self
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#193
  def replace(range, content); end

  # @api public
  # @return [Source::Buffer]
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#92
  def source_buffer; end

  # Provides a protected block where a sequence of multiple rewrite actions
  # are handled atomically. If any of the actions failed by clobbering,
  # all the actions are rolled back. Transactions can be nested.
  #
  # @api public
  # @raise [RuntimeError] when no block is passed
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#310
  def transaction; end

  # Inserts the given strings before and after the given range.
  #
  # @api public
  # @param range [Range]
  # @param insert_before [String, nil]
  # @param insert_after [String, nil]
  # @raise [ClobberingError] when clobbering is detected
  # @return [Rewriter] self
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#206
  def wrap(range, insert_before, insert_after); end

  protected

  # @api public
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#365
  def action_root; end

  private

  # @api public
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#369
  def action_summary; end

  # @api public
  # @raise [ArgumentError]
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#392
  def check_policy_validity; end

  # @api public
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#404
  def check_range_validity(range); end

  # @api public
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#397
  def combine(range, attributes); end

  # @api public
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#411
  def enforce_policy(event); end

  # @api public
  # @raise [Parser::ClobberingError]
  #
  # source://parser//lib/parser/source/tree_rewriter.rb#418
  def trigger_policy(event, range: T.unsafe(nil), conflict: T.unsafe(nil), **arguments); end
end

# @api public
#
# source://parser//lib/parser/source/tree_rewriter.rb#391
Parser::Source::TreeRewriter::ACTIONS = T.let(T.unsafe(nil), Array)

# source://parser//lib/parser/source/tree_rewriter/action.rb#14
class Parser::Source::TreeRewriter::Action
  # source://parser//lib/parser/source/tree_rewriter/action.rb#17
  def initialize(range, enforcer, insert_before: T.unsafe(nil), replacement: T.unsafe(nil), insert_after: T.unsafe(nil), children: T.unsafe(nil)); end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#29
  def combine(action); end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#68
  def contract; end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#34
  def empty?; end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#15
  def insert_after; end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#15
  def insert_before; end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#58
  def insertion?; end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#81
  def moved(source_buffer, offset); end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#50
  def nested_actions; end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#41
  def ordered_replacements; end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#15
  def range; end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#15
  def replacement; end

  protected

  # source://parser//lib/parser/source/tree_rewriter/action.rb#159
  def analyse_hierarchy(action); end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#146
  def bsearch_child_index(from = T.unsafe(nil)); end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#225
  def call_enforcer_for_merge(action); end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#205
  def check_fusible(action, *fusible); end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#95
  def children; end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#130
  def combine_children(more_children); end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#103
  def do_combine(action); end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#136
  def fuse_deletions(action, fusible, other_sibblings); end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#216
  def merge(action); end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#111
  def place_in_hierarchy(action); end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#233
  def swallow(children); end

  # source://parser//lib/parser/source/tree_rewriter/action.rb#97
  def with(range: T.unsafe(nil), enforcer: T.unsafe(nil), children: T.unsafe(nil), insert_before: T.unsafe(nil), replacement: T.unsafe(nil), insert_after: T.unsafe(nil)); end
end

# @api public
#
# source://parser//lib/parser/source/tree_rewriter.rb#356
Parser::Source::TreeRewriter::DEPRECATION_WARNING = T.let(T.unsafe(nil), String)

# @api public
#
# source://parser//lib/parser/source/tree_rewriter.rb#417
Parser::Source::TreeRewriter::POLICY_TO_LEVEL = T.let(T.unsafe(nil), Hash)

# source://parser//lib/parser/static_environment.rb#5
class Parser::StaticEnvironment
  # @return [StaticEnvironment] a new instance of StaticEnvironment
  #
  # source://parser//lib/parser/static_environment.rb#17
  def initialize; end

  # source://parser//lib/parser/static_environment.rb#55
  def declare(name); end

  # Anonymous blockarg
  #
  # source://parser//lib/parser/static_environment.rb#77
  def declare_anonymous_blockarg; end

  # Anonymous kwresarg
  #
  # source://parser//lib/parser/static_environment.rb#113
  def declare_anonymous_kwrestarg; end

  # Anonymous restarg
  #
  # source://parser//lib/parser/static_environment.rb#95
  def declare_anonymous_restarg; end

  # Forward args
  #
  # source://parser//lib/parser/static_environment.rb#67
  def declare_forward_args; end

  # @return [Boolean]
  #
  # source://parser//lib/parser/static_environment.rb#61
  def declared?(name); end

  # @return [Boolean]
  #
  # source://parser//lib/parser/static_environment.rb#81
  def declared_anonymous_blockarg?; end

  # @return [Boolean]
  #
  # source://parser//lib/parser/static_environment.rb#85
  def declared_anonymous_blockarg_in_current_scpe?; end

  # @return [Boolean]
  #
  # source://parser//lib/parser/static_environment.rb#117
  def declared_anonymous_kwrestarg?; end

  # @return [Boolean]
  #
  # source://parser//lib/parser/static_environment.rb#121
  def declared_anonymous_kwrestarg_in_current_scope?; end

  # @return [Boolean]
  #
  # source://parser//lib/parser/static_environment.rb#99
  def declared_anonymous_restarg?; end

  # @return [Boolean]
  #
  # source://parser//lib/parser/static_environment.rb#103
  def declared_anonymous_restarg_in_current_scope?; end

  # @return [Boolean]
  #
  # source://parser//lib/parser/static_environment.rb#71
  def declared_forward_args?; end

  # @return [Boolean]
  #
  # source://parser//lib/parser/static_environment.rb#129
  def empty?; end

  # source://parser//lib/parser/static_environment.rb#33
  def extend_dynamic; end

  # source://parser//lib/parser/static_environment.rb#26
  def extend_static; end

  # @return [Boolean]
  #
  # source://parser//lib/parser/static_environment.rb#89
  def parent_has_anonymous_blockarg?; end

  # @return [Boolean]
  #
  # source://parser//lib/parser/static_environment.rb#125
  def parent_has_anonymous_kwrestarg?; end

  # @return [Boolean]
  #
  # source://parser//lib/parser/static_environment.rb#107
  def parent_has_anonymous_restarg?; end

  # source://parser//lib/parser/static_environment.rb#21
  def reset; end

  # source://parser//lib/parser/static_environment.rb#49
  def unextend; end
end

# source://parser//lib/parser/static_environment.rb#15
Parser::StaticEnvironment::ANONYMOUS_BLOCKARG_INHERITED = T.let(T.unsafe(nil), Symbol)

# source://parser//lib/parser/static_environment.rb#14
Parser::StaticEnvironment::ANONYMOUS_BLOCKARG_IN_CURRENT_SCOPE = T.let(T.unsafe(nil), Symbol)

# source://parser//lib/parser/static_environment.rb#12
Parser::StaticEnvironment::ANONYMOUS_KWRESTARG_INHERITED = T.let(T.unsafe(nil), Symbol)

# source://parser//lib/parser/static_environment.rb#11
Parser::StaticEnvironment::ANONYMOUS_KWRESTARG_IN_CURRENT_SCOPE = T.let(T.unsafe(nil), Symbol)

# source://parser//lib/parser/static_environment.rb#9
Parser::StaticEnvironment::ANONYMOUS_RESTARG_INHERITED = T.let(T.unsafe(nil), Symbol)

# source://parser//lib/parser/static_environment.rb#8
Parser::StaticEnvironment::ANONYMOUS_RESTARG_IN_CURRENT_SCOPE = T.let(T.unsafe(nil), Symbol)

# source://parser//lib/parser/static_environment.rb#6
Parser::StaticEnvironment::FORWARD_ARGS = T.let(T.unsafe(nil), Symbol)

# {Parser::SyntaxError} is raised whenever parser detects a syntax error,
# similar to the standard SyntaxError class.
#
# @api public
#
# source://parser//lib/parser/syntax_error.rb#13
class Parser::SyntaxError < ::StandardError
  # @api public
  # @return [SyntaxError] a new instance of SyntaxError
  #
  # source://parser//lib/parser/syntax_error.rb#16
  def initialize(diagnostic); end

  # @api public
  # @return [Parser::Diagnostic]
  #
  # source://parser//lib/parser/syntax_error.rb#14
  def diagnostic; end
end

# {Parser::TreeRewriter} offers a basic API that makes it easy to rewrite
# existing ASTs. It's built on top of {Parser::AST::Processor} and
# {Parser::Source::TreeRewriter}
#
# For example, assume you want to remove `do` tokens from a while statement.
# You can do this as following:
#
#     require 'parser/current'
#
#     class RemoveDo < Parser::TreeRewriter
#       def on_while(node)
#         # Check if the statement starts with "do"
#         if node.location.begin.is?('do')
#           remove(node.location.begin)
#         end
#       end
#     end
#
#     code = <<-EOF
#     while true do
#       puts 'hello'
#     end
#     EOF
#
#     ast           = Parser::CurrentRuby.parse code
#     buffer        = Parser::Source::Buffer.new('(example)', source: code)
#     rewriter      = RemoveDo.new
#
#     # Rewrite the AST, returns a String with the new form.
#     puts rewriter.rewrite(buffer, ast)
#
# This would result in the following Ruby code:
#
#     while true
#       puts 'hello'
#     end
#
# Keep in mind that {Parser::TreeRewriter} does not take care of indentation when
# inserting/replacing code so you'll have to do this yourself.
#
# See also [a blog entry](http://whitequark.org/blog/2013/04/26/lets-play-with-ruby-code/)
# describing rewriters in greater detail.
#
# @api public
#
# source://parser//lib/parser/tree_rewriter.rb#51
class Parser::TreeRewriter < ::Parser::AST::Processor
  # Returns `true` if the specified node is an assignment node, returns false
  # otherwise.
  #
  # @api public
  # @param node [Parser::AST::Node]
  # @return [Boolean]
  #
  # source://parser//lib/parser/tree_rewriter.rb#79
  def assignment?(node); end

  # Inserts new code after the given source range.
  #
  # @api public
  # @param range [Parser::Source::Range]
  # @param content [String]
  #
  # source://parser//lib/parser/tree_rewriter.rb#118
  def insert_after(range, content); end

  # Inserts new code before the given source range.
  #
  # @api public
  # @param range [Parser::Source::Range]
  # @param content [String]
  #
  # source://parser//lib/parser/tree_rewriter.rb#108
  def insert_before(range, content); end

  # Removes the source range.
  #
  # @api public
  # @param range [Parser::Source::Range]
  #
  # source://parser//lib/parser/tree_rewriter.rb#88
  def remove(range); end

  # Replaces the code of the source range `range` with `content`.
  #
  # @api public
  # @param range [Parser::Source::Range]
  # @param content [String]
  #
  # source://parser//lib/parser/tree_rewriter.rb#128
  def replace(range, content); end

  # Rewrites the AST/source buffer and returns a String containing the new
  # version.
  #
  # @api public
  # @param source_buffer [Parser::Source::Buffer]
  # @param ast [Parser::AST::Node]
  # @param crossing_deletions:, [Symbol] different_replacements:, swallowed_insertions:
  #   policy arguments for TreeRewriter (optional)
  # @return [String]
  #
  # source://parser//lib/parser/tree_rewriter.rb#62
  def rewrite(source_buffer, ast, **policy); end

  # Wraps the given source range with the given values.
  #
  # @api public
  # @param range [Parser::Source::Range]
  # @param content [String]
  #
  # source://parser//lib/parser/tree_rewriter.rb#98
  def wrap(range, before, after); end
end

# {Parser::UnknownEncodingInMagicComment} is raised when a magic encoding
# comment is encountered that the currently running Ruby version doesn't
# recognize. It inherits from {ArgumentError} since that is the exception
# Ruby itself raises when trying to execute a file with an unknown encoding.
# As such, it is also not a {Parser::SyntaxError}.
#
# @api public
#
# source://parser//lib/parser/unknown_encoding_in_magic_comment_error.rb#13
class Parser::UnknownEncodingInMagicComment < ::ArgumentError; end

# source://parser//lib/parser/version.rb#4
Parser::VERSION = T.let(T.unsafe(nil), String)

# source://parser//lib/parser/variables_stack.rb#5
class Parser::VariablesStack
  # @return [VariablesStack] a new instance of VariablesStack
  #
  # source://parser//lib/parser/variables_stack.rb#6
  def initialize; end

  # source://parser//lib/parser/variables_stack.rb#27
  def declare(name); end

  # @return [Boolean]
  #
  # source://parser//lib/parser/variables_stack.rb#31
  def declared?(name); end

  # @return [Boolean]
  #
  # source://parser//lib/parser/variables_stack.rb#11
  def empty?; end

  # source://parser//lib/parser/variables_stack.rb#19
  def pop; end

  # source://parser//lib/parser/variables_stack.rb#15
  def push; end

  # source://parser//lib/parser/variables_stack.rb#23
  def reset; end
end
