# typed: true

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

module Regexp::Expression; end

class Regexp::Expression::Alternation < ::Regexp::Expression::SequenceOperation
  def alternatives; end
  def human_name; end
  def match_length; end
end

Regexp::Expression::Alternation::OPERAND = Regexp::Expression::Alternative

class Regexp::Expression::Alternative < ::Regexp::Expression::Sequence
  def human_name; end
end

module Regexp::Expression::Anchor; end
Regexp::Expression::Anchor::BOL = Regexp::Expression::Anchor::BeginningOfLine
Regexp::Expression::Anchor::BOS = Regexp::Expression::Anchor::BeginningOfString

class Regexp::Expression::Anchor::Base < ::Regexp::Expression::Base
  def match_length; end
end

class Regexp::Expression::Anchor::BeginningOfLine < ::Regexp::Expression::Anchor::Base
  def human_name; end
end

class Regexp::Expression::Anchor::BeginningOfString < ::Regexp::Expression::Anchor::Base
  def human_name; end
end

Regexp::Expression::Anchor::EOL = Regexp::Expression::Anchor::EndOfLine
Regexp::Expression::Anchor::EOS = Regexp::Expression::Anchor::EndOfString
Regexp::Expression::Anchor::EOSobEOL = Regexp::Expression::Anchor::EndOfStringOrBeforeEndOfLine

class Regexp::Expression::Anchor::EndOfLine < ::Regexp::Expression::Anchor::Base
  def human_name; end
end

class Regexp::Expression::Anchor::EndOfString < ::Regexp::Expression::Anchor::Base
  def human_name; end
end

class Regexp::Expression::Anchor::EndOfStringOrBeforeEndOfLine < ::Regexp::Expression::Anchor::Base
  def human_name; end
end

class Regexp::Expression::Anchor::MatchStart < ::Regexp::Expression::Anchor::Base
  def human_name; end
end

class Regexp::Expression::Anchor::NonWordBoundary < ::Regexp::Expression::Anchor::Base
  def human_name; end
end

class Regexp::Expression::Anchor::WordBoundary < ::Regexp::Expression::Anchor::Base
  def human_name; end
end

module Regexp::Expression::Assertion; end

class Regexp::Expression::Assertion::Base < ::Regexp::Expression::Group::Base
  def match_length; end
end

class Regexp::Expression::Assertion::Lookahead < ::Regexp::Expression::Assertion::Base
  def human_name; end
end

class Regexp::Expression::Assertion::Lookbehind < ::Regexp::Expression::Assertion::Base
  def human_name; end
end

class Regexp::Expression::Assertion::NegativeLookahead < ::Regexp::Expression::Assertion::Base
  def human_name; end
end

class Regexp::Expression::Assertion::NegativeLookbehind < ::Regexp::Expression::Assertion::Base
  def human_name; end
end

module Regexp::Expression::Backreference; end

class Regexp::Expression::Backreference::Base < ::Regexp::Expression::Base
  def match_length; end
  def referenced_expression; end
  def referenced_expression=(_arg0); end
  def referential?; end

  private

  def initialize_copy(orig); end
end

class Regexp::Expression::Backreference::Name < ::Regexp::Expression::Backreference::Base
  def initialize(token, options = T.unsafe(nil)); end

  def human_name; end
  def name; end
  def reference; end
end

class Regexp::Expression::Backreference::NameCall < ::Regexp::Expression::Backreference::Name
  def human_name; end
end

class Regexp::Expression::Backreference::NameRecursionLevel < ::Regexp::Expression::Backreference::Name
  def initialize(token, options = T.unsafe(nil)); end

  def recursion_level; end
end

class Regexp::Expression::Backreference::Number < ::Regexp::Expression::Backreference::Base
  def initialize(token, options = T.unsafe(nil)); end

  def human_name; end
  def number; end
  def reference; end
end

class Regexp::Expression::Backreference::NumberCall < ::Regexp::Expression::Backreference::Number
  def human_name; end
end

class Regexp::Expression::Backreference::NumberCallRelative < ::Regexp::Expression::Backreference::NumberRelative
  def human_name; end
end

class Regexp::Expression::Backreference::NumberRecursionLevel < ::Regexp::Expression::Backreference::NumberRelative
  def initialize(token, options = T.unsafe(nil)); end

  def recursion_level; end
end

class Regexp::Expression::Backreference::NumberRelative < ::Regexp::Expression::Backreference::Number
  def effective_number; end
  def effective_number=(_arg0); end
  def human_name; end
  def reference; end
end

class Regexp::Expression::Base
  include ::Regexp::Expression::Shared
  include ::RuboCop::Ext::RegexpParser::Expression::Base
  extend ::Regexp::Expression::Shared::ClassMethods

  def initialize(token, options = T.unsafe(nil)); end

  def =~(string, offset = T.unsafe(nil)); end
  def a?; end
  def ascii_classes?; end
  def attributes; end
  def case_insensitive?; end
  def conditional_level; end
  def conditional_level=(_arg0); end
  def d?; end
  def default_classes?; end
  def extended?; end
  def free_spacing?; end
  def greedy?; end
  def i?; end
  def ignore_case?; end
  def lazy?; end
  def level; end
  def level=(_arg0); end
  def m?; end
  def match(string, offset = T.unsafe(nil)); end
  def match?(string); end
  def matches?(string); end
  def multiline?; end
  def nesting_level; end
  def options; end
  def options=(_arg0); end
  def possessive?; end
  def quantifier; end
  def quantify(*args); end
  def quantity; end
  def reluctant?; end
  def repetitions; end
  def set_level; end
  def set_level=(_arg0); end
  def strfre(format = T.unsafe(nil), indent_offset = T.unsafe(nil), index = T.unsafe(nil)); end
  def strfregexp(format = T.unsafe(nil), indent_offset = T.unsafe(nil), index = T.unsafe(nil)); end
  def te; end
  def te=(_arg0); end
  def text; end
  def text=(_arg0); end
  def to_h; end
  def to_re(format = T.unsafe(nil)); end
  def token; end
  def token=(_arg0); end
  def ts; end
  def ts=(_arg0); end
  def type; end
  def type=(_arg0); end
  def u?; end
  def unicode_classes?; end
  def unquantified_clone; end
  def x?; end

  private

  def initialize_copy(orig); end
end

class Regexp::Expression::CharacterSet < ::Regexp::Expression::Subexpression
  include ::RuboCop::Ext::RegexpParser::Expression::CharacterSet

  def initialize(token, options = T.unsafe(nil)); end

  def close; end
  def closed; end
  def closed=(_arg0); end
  def closed?; end
  def match_length; end
  def negate; end
  def negated?; end
  def negative; end
  def negative=(_arg0); end
  def negative?; end
  def parts; end
end

class Regexp::Expression::CharacterSet::IntersectedSequence < ::Regexp::Expression::Sequence
  def human_name; end
  def match_length; end
end

class Regexp::Expression::CharacterSet::Intersection < ::Regexp::Expression::SequenceOperation
  def human_name; end
  def match_length; end
end

Regexp::Expression::CharacterSet::Intersection::OPERAND = Regexp::Expression::CharacterSet::IntersectedSequence

class Regexp::Expression::CharacterSet::Range < ::Regexp::Expression::Subexpression
  def <<(exp); end
  def complete?; end
  def human_name; end
  def match_length; end
  def parts; end
  def starts_at; end
  def ts; end
end

module Regexp::Expression::CharacterType; end

class Regexp::Expression::CharacterType::Any < ::Regexp::Expression::CharacterType::Base
  def human_name; end
end

class Regexp::Expression::CharacterType::Base < ::Regexp::Expression::Base
  def match_length; end
end

class Regexp::Expression::CharacterType::Digit < ::Regexp::Expression::CharacterType::Base; end
class Regexp::Expression::CharacterType::ExtendedGrapheme < ::Regexp::Expression::CharacterType::Base; end
class Regexp::Expression::CharacterType::Hex < ::Regexp::Expression::CharacterType::Base; end
class Regexp::Expression::CharacterType::Linebreak < ::Regexp::Expression::CharacterType::Base; end
class Regexp::Expression::CharacterType::NonDigit < ::Regexp::Expression::CharacterType::Base; end
class Regexp::Expression::CharacterType::NonHex < ::Regexp::Expression::CharacterType::Base; end
class Regexp::Expression::CharacterType::NonSpace < ::Regexp::Expression::CharacterType::Base; end
class Regexp::Expression::CharacterType::NonWord < ::Regexp::Expression::CharacterType::Base; end
class Regexp::Expression::CharacterType::Space < ::Regexp::Expression::CharacterType::Base; end
class Regexp::Expression::CharacterType::Word < ::Regexp::Expression::CharacterType::Base; end

class Regexp::Expression::Comment < ::Regexp::Expression::FreeSpace
  def human_name; end
end

module Regexp::Expression::Conditional; end

class Regexp::Expression::Conditional::Branch < ::Regexp::Expression::Sequence
  def human_name; end
end

class Regexp::Expression::Conditional::Condition < ::Regexp::Expression::Base
  def human_name; end
  def match_length; end
  def reference; end
  def referenced_expression; end
  def referenced_expression=(_arg0); end
  def referential?; end

  private

  def initialize_copy(orig); end
end

class Regexp::Expression::Conditional::Expression < ::Regexp::Expression::Subexpression
  def <<(exp); end
  def add_sequence(active_opts = T.unsafe(nil)); end
  def branch(active_opts = T.unsafe(nil)); end
  def branches; end
  def condition; end
  def condition=(exp); end
  def human_name; end
  def match_length; end
  def parts; end
  def reference; end
  def referenced_expression; end
  def referenced_expression=(_arg0); end
  def referential?; end

  private

  def initialize_copy(orig); end
end

class Regexp::Expression::Conditional::TooManyBranches < ::Regexp::Parser::Error
  def initialize; end
end

module Regexp::Expression::EscapeSequence; end

class Regexp::Expression::EscapeSequence::AbstractMetaControlSequence < ::Regexp::Expression::EscapeSequence::Base
  def char; end

  private

  def control_sequence_to_s(control_sequence); end
  def meta_char_to_codepoint(meta_char); end
end

class Regexp::Expression::EscapeSequence::AsciiEscape < ::Regexp::Expression::EscapeSequence::Base; end
class Regexp::Expression::EscapeSequence::Backspace < ::Regexp::Expression::EscapeSequence::Base; end

class Regexp::Expression::EscapeSequence::Base < ::Regexp::Expression::Base
  def char; end
  def codepoint; end
  def match_length; end
end

class Regexp::Expression::EscapeSequence::Bell < ::Regexp::Expression::EscapeSequence::Base; end
class Regexp::Expression::EscapeSequence::Codepoint < ::Regexp::Expression::EscapeSequence::Base; end

class Regexp::Expression::EscapeSequence::CodepointList < ::Regexp::Expression::EscapeSequence::Base
  def char; end
  def chars; end
  def codepoint; end
  def codepoints; end
  def match_length; end
end

class Regexp::Expression::EscapeSequence::Control < ::Regexp::Expression::EscapeSequence::AbstractMetaControlSequence
  def codepoint; end
end

class Regexp::Expression::EscapeSequence::FormFeed < ::Regexp::Expression::EscapeSequence::Base; end
class Regexp::Expression::EscapeSequence::Hex < ::Regexp::Expression::EscapeSequence::Base; end

class Regexp::Expression::EscapeSequence::Literal < ::Regexp::Expression::EscapeSequence::Base
  def char; end
end

class Regexp::Expression::EscapeSequence::Meta < ::Regexp::Expression::EscapeSequence::AbstractMetaControlSequence
  def codepoint; end
end

class Regexp::Expression::EscapeSequence::MetaControl < ::Regexp::Expression::EscapeSequence::AbstractMetaControlSequence
  def codepoint; end
end

class Regexp::Expression::EscapeSequence::Newline < ::Regexp::Expression::EscapeSequence::Base; end

class Regexp::Expression::EscapeSequence::Octal < ::Regexp::Expression::EscapeSequence::Base
  def char; end
end

class Regexp::Expression::EscapeSequence::Return < ::Regexp::Expression::EscapeSequence::Base; end
class Regexp::Expression::EscapeSequence::Tab < ::Regexp::Expression::EscapeSequence::Base; end
class Regexp::Expression::EscapeSequence::VerticalTab < ::Regexp::Expression::EscapeSequence::Base; end

class Regexp::Expression::FreeSpace < ::Regexp::Expression::Base
  def match_length; end
  def quantify(*_args); end
end

module Regexp::Expression::Group; end

class Regexp::Expression::Group::Absence < ::Regexp::Expression::Group::Base
  def match_length; end
end

class Regexp::Expression::Group::Atomic < ::Regexp::Expression::Group::Base; end

class Regexp::Expression::Group::Base < ::Regexp::Expression::Subexpression
  def capturing?; end
  def comment?; end
  def parts; end
end

class Regexp::Expression::Group::Capture < ::Regexp::Expression::Group::Base
  def capturing?; end
  def human_name; end
  def identifier; end
  def number; end
  def number=(_arg0); end
  def number_at_level; end
  def number_at_level=(_arg0); end
end

class Regexp::Expression::Group::Comment < ::Regexp::Expression::Group::Base
  def comment?; end
  def parts; end
end

class Regexp::Expression::Group::Named < ::Regexp::Expression::Group::Capture
  def initialize(token, options = T.unsafe(nil)); end

  def human_name; end
  def identifier; end
  def name; end

  private

  def initialize_copy(orig); end
end

class Regexp::Expression::Group::Options < ::Regexp::Expression::Group::Base
  def option_changes; end
  def option_changes=(_arg0); end
  def quantify(*args); end

  private

  def initialize_copy(orig); end
end

class Regexp::Expression::Group::Passive < ::Regexp::Expression::Group::Base
  def initialize(*_arg0); end

  def implicit=(_arg0); end
  def implicit?; end
  def parts; end
end

module Regexp::Expression::Keep; end

class Regexp::Expression::Keep::Mark < ::Regexp::Expression::Base
  def human_name; end
  def match_length; end
end

class Regexp::Expression::Literal < ::Regexp::Expression::Base
  def human_name; end
  def match_length; end
end

Regexp::Expression::MatchLength = Regexp::MatchLength

class Regexp::Expression::PosixClass < ::Regexp::Expression::Base
  def match_length; end
  def name; end
  def negative?; end
end

class Regexp::Expression::Quantifier
  include ::Regexp::Expression::Shared
  extend ::Regexp::Expression::Shared::ClassMethods

  def initialize(*args); end

  def conditional_level; end
  def conditional_level=(_arg0); end
  def greedy?; end
  def lazy?; end
  def level; end
  def level=(_arg0); end
  def max; end
  def min; end
  def mode; end
  def nesting_level; end
  def options; end
  def options=(_arg0); end
  def possessive?; end
  def quantifier; end
  def reluctant?; end
  def set_level; end
  def set_level=(_arg0); end
  def te; end
  def te=(_arg0); end
  def text; end
  def text=(_arg0); end
  def to_h; end
  def token; end
  def token=(_arg0); end
  def ts; end
  def ts=(_arg0); end
  def type; end
  def type=(_arg0); end

  private

  def deprecated_old_init(token, text, min, max, mode = T.unsafe(nil)); end
  def minmax; end
end

Regexp::Expression::Quantifier::MODES = T.let(T.unsafe(nil), Array)

class Regexp::Expression::Root < ::Regexp::Expression::Subexpression
  def human_name; end

  class << self
    def build(options = T.unsafe(nil)); end
  end
end

class Regexp::Expression::Sequence < ::Regexp::Expression::Subexpression
  def quantify(*args); end
  def starts_at; end
  def ts; end

  class << self
    def add_to(exp, params = T.unsafe(nil), active_opts = T.unsafe(nil)); end
  end
end

class Regexp::Expression::SequenceOperation < ::Regexp::Expression::Subexpression
  def <<(exp); end
  def add_sequence(active_opts = T.unsafe(nil)); end
  def operands; end
  def operator; end
  def parts; end
  def sequences; end
  def starts_at; end
  def ts; end
end

module Regexp::Expression::Shared
  mixes_in_class_methods ::Regexp::Expression::Shared::ClassMethods

  def ==(other); end
  def ===(other); end
  def base_length; end
  def coded_offset; end
  def eql?(other); end
  def full_length; end
  def human_name; end
  def is?(test_token, test_type = T.unsafe(nil)); end
  def nesting_level=(lvl); end
  def offset; end
  def one_of?(scope, top = T.unsafe(nil)); end
  def optional?; end
  def parts; end
  def quantified?; end
  def quantifier=(qtf); end
  def quantifier_affix(expression_format); end
  def referential?; end
  def starts_at; end
  def terminal?; end
  def to_s(format = T.unsafe(nil)); end
  def to_str(format = T.unsafe(nil)); end
  def token_class; end
  def type?(test_type); end

  private

  def init_from_token_and_options(token, options = T.unsafe(nil)); end
  def initialize_copy(orig); end

  class << self
    def included(mod); end
  end
end

module Regexp::Expression::Shared::ClassMethods
  def construct(params = T.unsafe(nil)); end
  def construct_defaults; end
  def token_class; end
end

class Regexp::Expression::Subexpression < ::Regexp::Expression::Base
  include ::Enumerable

  def initialize(token, options = T.unsafe(nil)); end

  def <<(exp); end
  def [](*args, &block); end
  def at(*args, &block); end
  def dig(*indices); end
  def each(*args, &block); end
  def each_expression(include_self = T.unsafe(nil), &block); end
  def empty?(*args, &block); end
  def expressions; end
  def expressions=(_arg0); end
  def fetch(*args, &block); end
  def flat_map(include_self = T.unsafe(nil)); end
  def index(*args, &block); end
  def inner_match_length; end
  def join(*args, &block); end
  def last(*args, &block); end
  def length(*args, &block); end
  def match_length; end
  def parts; end
  def strfre_tree(format = T.unsafe(nil), include_self = T.unsafe(nil), separator = T.unsafe(nil)); end
  def strfregexp_tree(format = T.unsafe(nil), include_self = T.unsafe(nil), separator = T.unsafe(nil)); end
  def te; end
  def terminal?; end
  def to_h; end
  def traverse(include_self = T.unsafe(nil), &block); end
  def values_at(*args, &block); end
  def walk(include_self = T.unsafe(nil), &block); end

  private

  def initialize_copy(orig); end
  def intersperse(expressions, separator); end
end

module Regexp::Expression::UnicodeProperty; end
class Regexp::Expression::UnicodeProperty::Age < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Alnum < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Alpha < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Any < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Ascii < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Assigned < ::Regexp::Expression::UnicodeProperty::Base; end

class Regexp::Expression::UnicodeProperty::Base < ::Regexp::Expression::Base
  def match_length; end
  def name; end
  def negative?; end
  def shortcut; end
end

class Regexp::Expression::UnicodeProperty::Blank < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Block < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Cntrl < ::Regexp::Expression::UnicodeProperty::Base; end
module Regexp::Expression::UnicodeProperty::Codepoint; end
class Regexp::Expression::UnicodeProperty::Codepoint::Any < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end
class Regexp::Expression::UnicodeProperty::Codepoint::Base < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Codepoint::Control < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end
class Regexp::Expression::UnicodeProperty::Codepoint::Format < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end
class Regexp::Expression::UnicodeProperty::Codepoint::PrivateUse < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end
class Regexp::Expression::UnicodeProperty::Codepoint::Surrogate < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end
class Regexp::Expression::UnicodeProperty::Codepoint::Unassigned < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end
class Regexp::Expression::UnicodeProperty::Derived < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Digit < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Emoji < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Graph < ::Regexp::Expression::UnicodeProperty::Base; end
module Regexp::Expression::UnicodeProperty::Letter; end
class Regexp::Expression::UnicodeProperty::Letter::Any < ::Regexp::Expression::UnicodeProperty::Letter::Base; end
class Regexp::Expression::UnicodeProperty::Letter::Base < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Letter::Cased < ::Regexp::Expression::UnicodeProperty::Letter::Base; end
class Regexp::Expression::UnicodeProperty::Letter::Lowercase < ::Regexp::Expression::UnicodeProperty::Letter::Base; end
class Regexp::Expression::UnicodeProperty::Letter::Modifier < ::Regexp::Expression::UnicodeProperty::Letter::Base; end
class Regexp::Expression::UnicodeProperty::Letter::Other < ::Regexp::Expression::UnicodeProperty::Letter::Base; end
class Regexp::Expression::UnicodeProperty::Letter::Titlecase < ::Regexp::Expression::UnicodeProperty::Letter::Base; end
class Regexp::Expression::UnicodeProperty::Letter::Uppercase < ::Regexp::Expression::UnicodeProperty::Letter::Base; end
class Regexp::Expression::UnicodeProperty::Lower < ::Regexp::Expression::UnicodeProperty::Base; end
module Regexp::Expression::UnicodeProperty::Mark; end
class Regexp::Expression::UnicodeProperty::Mark::Any < ::Regexp::Expression::UnicodeProperty::Mark::Base; end
class Regexp::Expression::UnicodeProperty::Mark::Base < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Mark::Combining < ::Regexp::Expression::UnicodeProperty::Mark::Base; end
class Regexp::Expression::UnicodeProperty::Mark::Enclosing < ::Regexp::Expression::UnicodeProperty::Mark::Base; end
class Regexp::Expression::UnicodeProperty::Mark::Nonspacing < ::Regexp::Expression::UnicodeProperty::Mark::Base; end
class Regexp::Expression::UnicodeProperty::Mark::Spacing < ::Regexp::Expression::UnicodeProperty::Mark::Base; end
class Regexp::Expression::UnicodeProperty::Newline < ::Regexp::Expression::UnicodeProperty::Base; end
module Regexp::Expression::UnicodeProperty::Number; end
class Regexp::Expression::UnicodeProperty::Number::Any < ::Regexp::Expression::UnicodeProperty::Number::Base; end
class Regexp::Expression::UnicodeProperty::Number::Base < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Number::Decimal < ::Regexp::Expression::UnicodeProperty::Number::Base; end
class Regexp::Expression::UnicodeProperty::Number::Letter < ::Regexp::Expression::UnicodeProperty::Number::Base; end
class Regexp::Expression::UnicodeProperty::Number::Other < ::Regexp::Expression::UnicodeProperty::Number::Base; end
class Regexp::Expression::UnicodeProperty::Print < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Punct < ::Regexp::Expression::UnicodeProperty::Base; end
module Regexp::Expression::UnicodeProperty::Punctuation; end
class Regexp::Expression::UnicodeProperty::Punctuation::Any < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end
class Regexp::Expression::UnicodeProperty::Punctuation::Base < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Punctuation::Close < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end
class Regexp::Expression::UnicodeProperty::Punctuation::Connector < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end
class Regexp::Expression::UnicodeProperty::Punctuation::Dash < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end
class Regexp::Expression::UnicodeProperty::Punctuation::Final < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end
class Regexp::Expression::UnicodeProperty::Punctuation::Initial < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end
class Regexp::Expression::UnicodeProperty::Punctuation::Open < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end
class Regexp::Expression::UnicodeProperty::Punctuation::Other < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end
class Regexp::Expression::UnicodeProperty::Script < ::Regexp::Expression::UnicodeProperty::Base; end
module Regexp::Expression::UnicodeProperty::Separator; end
class Regexp::Expression::UnicodeProperty::Separator::Any < ::Regexp::Expression::UnicodeProperty::Separator::Base; end
class Regexp::Expression::UnicodeProperty::Separator::Base < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Separator::Line < ::Regexp::Expression::UnicodeProperty::Separator::Base; end
class Regexp::Expression::UnicodeProperty::Separator::Paragraph < ::Regexp::Expression::UnicodeProperty::Separator::Base; end
class Regexp::Expression::UnicodeProperty::Separator::Space < ::Regexp::Expression::UnicodeProperty::Separator::Base; end
class Regexp::Expression::UnicodeProperty::Space < ::Regexp::Expression::UnicodeProperty::Base; end
module Regexp::Expression::UnicodeProperty::Symbol; end
class Regexp::Expression::UnicodeProperty::Symbol::Any < ::Regexp::Expression::UnicodeProperty::Symbol::Base; end
class Regexp::Expression::UnicodeProperty::Symbol::Base < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Symbol::Currency < ::Regexp::Expression::UnicodeProperty::Symbol::Base; end
class Regexp::Expression::UnicodeProperty::Symbol::Math < ::Regexp::Expression::UnicodeProperty::Symbol::Base; end
class Regexp::Expression::UnicodeProperty::Symbol::Modifier < ::Regexp::Expression::UnicodeProperty::Symbol::Base; end
class Regexp::Expression::UnicodeProperty::Symbol::Other < ::Regexp::Expression::UnicodeProperty::Symbol::Base; end
class Regexp::Expression::UnicodeProperty::Upper < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Word < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::XPosixPunct < ::Regexp::Expression::UnicodeProperty::Base; end
class Regexp::Expression::UnicodeProperty::Xdigit < ::Regexp::Expression::UnicodeProperty::Base; end

class Regexp::Expression::WhiteSpace < ::Regexp::Expression::FreeSpace
  def human_name; end
  def merge(exp); end
end

class Regexp::Lexer
  def emit(token); end
  def lex(input, syntax = T.unsafe(nil), options: T.unsafe(nil), collect_tokens: T.unsafe(nil), &block); end

  private

  def ascend(type, token); end
  def block; end
  def block=(_arg0); end
  def break_codepoint_list(token); end
  def break_literal(token); end
  def collect_tokens; end
  def collect_tokens=(_arg0); end
  def conditional_nesting; end
  def conditional_nesting=(_arg0); end
  def descend(type, token); end
  def merge_condition(current, last); end
  def nesting; end
  def nesting=(_arg0); end
  def preprev_token; end
  def preprev_token=(_arg0); end
  def prev_token; end
  def prev_token=(_arg0); end
  def set_nesting; end
  def set_nesting=(_arg0); end
  def shift; end
  def shift=(_arg0); end
  def tokens; end
  def tokens=(_arg0); end

  class << self
    def lex(input, syntax = T.unsafe(nil), options: T.unsafe(nil), collect_tokens: T.unsafe(nil), &block); end
    def scan(input, syntax = T.unsafe(nil), options: T.unsafe(nil), collect_tokens: T.unsafe(nil), &block); end
  end
end

Regexp::Lexer::CLOSING_TOKENS = T.let(T.unsafe(nil), Array)
Regexp::Lexer::CONDITION_TOKENS = T.let(T.unsafe(nil), Array)
Regexp::Lexer::OPENING_TOKENS = T.let(T.unsafe(nil), Array)

class Regexp::MatchLength
  include ::Enumerable

  def initialize(exp, opts = T.unsafe(nil)); end

  def each(opts = T.unsafe(nil)); end
  def endless_each; end
  def fixed?; end
  def include?(length); end
  def inspect; end
  def max; end
  def min; end
  def minmax; end
  def to_re; end

  private

  def base_max; end
  def base_max=(_arg0); end
  def base_min; end
  def base_min=(_arg0); end
  def exp_class; end
  def exp_class=(_arg0); end
  def max_rep; end
  def max_rep=(_arg0); end
  def min_rep; end
  def min_rep=(_arg0); end
  def reify; end
  def reify=(_arg0); end
  def test_regexp; end

  class << self
    def of(obj); end
  end
end

class Regexp::Parser
  include ::Regexp::Expression
  include ::Regexp::Expression::UnicodeProperty

  def parse(input, syntax = T.unsafe(nil), options: T.unsafe(nil), &block); end

  private

  def active_opts; end
  def anchor(token); end
  def assign_effective_number(exp); end
  def assign_referenced_expressions; end
  def backref(token); end
  def captured_group_count_at_level; end
  def captured_group_counts; end
  def captured_group_counts=(_arg0); end
  def close_completed_character_set_range; end
  def close_group; end
  def close_set; end
  def conditional(token); end
  def conditional_nesting; end
  def conditional_nesting=(_arg0); end
  def count_captured_group; end
  def decrease_nesting; end
  def escape(token); end
  def extract_options(input, options); end
  def free_space(token); end
  def group(token); end
  def increase_group_level(exp); end
  def intersection(token); end
  def keep(token); end
  def literal(token); end
  def meta(token); end
  def negate_set; end
  def nest(exp); end
  def nest_conditional(exp); end
  def nesting; end
  def nesting=(_arg0); end
  def node; end
  def node=(_arg0); end
  def open_group(token); end
  def open_set(token); end
  def options_group(token); end
  def options_stack; end
  def options_stack=(_arg0); end
  def parse_token(token); end
  def posixclass(token); end
  def property(token); end
  def quantifier(token); end
  def range(token); end
  def root; end
  def root=(_arg0); end
  def sequence_operation(klass, token); end
  def set(token); end
  def switching_options; end
  def switching_options=(_arg0); end
  def total_captured_group_count; end
  def type(token); end

  class << self
    def parse(input, syntax = T.unsafe(nil), options: T.unsafe(nil), &block); end
  end
end

Regexp::Parser::ENC_FLAGS = T.let(T.unsafe(nil), Array)
class Regexp::Parser::Error < ::StandardError; end
Regexp::Parser::MOD_FLAGS = T.let(T.unsafe(nil), Array)
class Regexp::Parser::ParserError < ::Regexp::Parser::Error; end
Regexp::Parser::UPTokens = Regexp::Syntax::Token::UnicodeProperty

class Regexp::Parser::UnknownTokenError < ::Regexp::Parser::ParserError
  def initialize(type, token); end
end

class Regexp::Parser::UnknownTokenTypeError < ::Regexp::Parser::ParserError
  def initialize(type, token); end
end

Regexp::Parser::VERSION = T.let(T.unsafe(nil), String)

class Regexp::Scanner
  def emit(type, token, text); end
  def literal_run; end
  def literal_run=(_arg0); end
  def scan(input_object, options: T.unsafe(nil), collect_tokens: T.unsafe(nil), &block); end

  private

  def append_literal(data, ts, te); end
  def block; end
  def block=(_arg0); end
  def char_pos; end
  def char_pos=(_arg0); end
  def collect_tokens; end
  def collect_tokens=(_arg0); end
  def conditional_stack; end
  def conditional_stack=(_arg0); end
  def copy(data, ts, te); end
  def emit_literal; end
  def emit_meta_control_sequence(data, ts, te, token); end
  def emit_options(text); end
  def free_spacing; end
  def free_spacing=(_arg0); end
  def free_spacing?(input_object, options); end
  def group_depth; end
  def group_depth=(_arg0); end
  def in_group?; end
  def in_set?; end
  def prev_token; end
  def prev_token=(_arg0); end
  def set_depth; end
  def set_depth=(_arg0); end
  def spacing_stack; end
  def spacing_stack=(_arg0); end
  def tokens; end
  def tokens=(_arg0); end
  def validation_error(type, what, reason = T.unsafe(nil)); end

  class << self
    def long_prop_map; end
    def parse_prop_map(name); end
    def posix_classes; end
    def scan(input_object, options: T.unsafe(nil), collect_tokens: T.unsafe(nil), &block); end
    def short_prop_map; end
  end
end

class Regexp::Scanner::InvalidBackrefError < ::Regexp::Scanner::ValidationError
  def initialize(what, reason); end
end

class Regexp::Scanner::InvalidGroupError < ::Regexp::Scanner::ValidationError
  def initialize(what, reason); end
end

class Regexp::Scanner::InvalidGroupOption < ::Regexp::Scanner::ValidationError
  def initialize(option, text); end
end

class Regexp::Scanner::InvalidSequenceError < ::Regexp::Scanner::ValidationError
  def initialize(what = T.unsafe(nil), where = T.unsafe(nil)); end
end

class Regexp::Scanner::PrematureEndError < ::Regexp::Scanner::ScannerError
  def initialize(where = T.unsafe(nil)); end
end

class Regexp::Scanner::ScannerError < ::Regexp::Parser::Error; end

class Regexp::Scanner::UnknownPosixClassError < ::Regexp::Scanner::ValidationError
  def initialize(text); end
end

class Regexp::Scanner::UnknownUnicodePropertyError < ::Regexp::Scanner::ValidationError
  def initialize(name); end
end

class Regexp::Scanner::ValidationError < ::Regexp::Parser::Error
  def initialize(reason); end
end

module Regexp::Syntax
  private

  def comparable(name); end
  def const_missing(const_name); end
  def fallback_version_class(version); end
  def for(name); end
  def new(name); end
  def specified_versions; end
  def supported?(name); end
  def version_class(version); end

  class << self
    def comparable(name); end
    def const_missing(const_name); end
    def fallback_version_class(version); end
    def for(name); end
    def new(name); end
    def specified_versions; end
    def supported?(name); end
    def version_class(version); end
  end
end

class Regexp::Syntax::Any < ::Regexp::Syntax::Base
  class << self
    def implements?(_type, _token); end
  end
end

class Regexp::Syntax::Base
  include ::Regexp::Syntax::Token

  def initialize; end

  def method_missing(name, *args); end

  private

  def respond_to_missing?(name, include_private = T.unsafe(nil)); end

  class << self
    def added_features; end
    def check!(type, token); end
    def check?(type, token); end
    def excludes(type, tokens); end
    def features; end
    def features=(_arg0); end
    def implementations(type); end
    def implements(type, tokens); end
    def implements!(type, token); end
    def implements?(type, token); end
    def inherited(subclass); end
    def normalize(type, token); end
    def normalize_backref(type, token); end
    def normalize_group(type, token); end
    def removed_features; end
  end
end

Regexp::Syntax::CURRENT = Regexp::Syntax::V2_6_3

class Regexp::Syntax::InvalidVersionNameError < ::Regexp::Syntax::SyntaxError
  def initialize(name); end
end

class Regexp::Syntax::NotImplementedError < ::Regexp::Syntax::SyntaxError
  def initialize(syntax, type, token); end
end

class Regexp::Syntax::SyntaxError < ::Regexp::Parser::Error; end
module Regexp::Syntax::Token; end
Regexp::Syntax::Token::All = T.let(T.unsafe(nil), Array)
module Regexp::Syntax::Token::Anchor; end
Regexp::Syntax::Token::Anchor::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Anchor::Basic = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Anchor::Extended = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Anchor::MatchStart = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Anchor::String = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Anchor::Type = T.let(T.unsafe(nil), Symbol)
module Regexp::Syntax::Token::Assertion; end
Regexp::Syntax::Token::Assertion::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Assertion::Lookahead = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Assertion::Lookbehind = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Assertion::Type = T.let(T.unsafe(nil), Symbol)
module Regexp::Syntax::Token::Backreference; end
Regexp::Syntax::Token::Backreference::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Backreference::Name = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Backreference::Number = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Backreference::NumberRef = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Backreference::Plain = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Backreference::RecursionLevel = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Backreference::Type = T.let(T.unsafe(nil), Symbol)
Regexp::Syntax::Token::Backreference::V1_8_6 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Backreference::V1_9_1 = T.let(T.unsafe(nil), Array)
module Regexp::Syntax::Token::CharacterSet; end
Regexp::Syntax::Token::CharacterSet::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::CharacterSet::Basic = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::CharacterSet::Extended = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::CharacterSet::Type = T.let(T.unsafe(nil), Symbol)
module Regexp::Syntax::Token::CharacterType; end
Regexp::Syntax::Token::CharacterType::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::CharacterType::Basic = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::CharacterType::Clustered = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::CharacterType::Extended = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::CharacterType::Hex = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::CharacterType::Type = T.let(T.unsafe(nil), Symbol)
module Regexp::Syntax::Token::Conditional; end
Regexp::Syntax::Token::Conditional::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Conditional::Condition = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Conditional::Delimiters = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Conditional::Separator = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Conditional::Type = T.let(T.unsafe(nil), Symbol)
module Regexp::Syntax::Token::Escape; end
Regexp::Syntax::Token::Escape::ASCII = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Escape::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Escape::Basic = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Escape::Control = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Escape::Hex = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Escape::Meta = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Escape::Octal = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Escape::Type = T.let(T.unsafe(nil), Symbol)
Regexp::Syntax::Token::Escape::Unicode = T.let(T.unsafe(nil), Array)
module Regexp::Syntax::Token::FreeSpace; end
Regexp::Syntax::Token::FreeSpace::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::FreeSpace::Type = T.let(T.unsafe(nil), Symbol)
module Regexp::Syntax::Token::Group; end
Regexp::Syntax::Token::Group::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Group::Atomic = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Group::Basic = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Group::Comment = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Group::Extended = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Group::Named = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Group::Passive = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Group::Type = T.let(T.unsafe(nil), Symbol)
Regexp::Syntax::Token::Group::V1_8_6 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Group::V2_4_1 = T.let(T.unsafe(nil), Array)
module Regexp::Syntax::Token::Keep; end
Regexp::Syntax::Token::Keep::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Keep::Mark = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Keep::Type = T.let(T.unsafe(nil), Symbol)
module Regexp::Syntax::Token::Literal; end
Regexp::Syntax::Token::Literal::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Literal::Type = T.let(T.unsafe(nil), Symbol)
Regexp::Syntax::Token::Map = T.let(T.unsafe(nil), Hash)
module Regexp::Syntax::Token::Meta; end
Regexp::Syntax::Token::Meta::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Meta::Basic = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Meta::Extended = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Meta::Type = T.let(T.unsafe(nil), Symbol)
module Regexp::Syntax::Token::PosixClass; end
Regexp::Syntax::Token::PosixClass::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::PosixClass::Extensions = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::PosixClass::NonType = T.let(T.unsafe(nil), Symbol)
Regexp::Syntax::Token::PosixClass::Standard = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::PosixClass::Type = T.let(T.unsafe(nil), Symbol)
module Regexp::Syntax::Token::Quantifier; end
Regexp::Syntax::Token::Quantifier::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Quantifier::Greedy = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Quantifier::Interval = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Quantifier::IntervalAll = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Quantifier::IntervalPossessive = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Quantifier::IntervalReluctant = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Quantifier::Possessive = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Quantifier::Reluctant = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Quantifier::Type = T.let(T.unsafe(nil), Symbol)
Regexp::Syntax::Token::Quantifier::V1_8_6 = T.let(T.unsafe(nil), Array)
module Regexp::Syntax::Token::SubexpressionCall; end
Regexp::Syntax::Token::SubexpressionCall::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::SubexpressionCall::Name = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::SubexpressionCall::Number = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::Types = T.let(T.unsafe(nil), Array)
module Regexp::Syntax::Token::UnicodeProperty; end
Regexp::Syntax::Token::UnicodeProperty::Age = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Age_V1_9_3 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Age_V2_0_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Age_V2_2_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Age_V2_3_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Age_V2_4_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Age_V2_5_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Age_V2_6_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Age_V2_6_2 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Age_V2_6_3 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Age_V3_1_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Age_V3_2_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::All = T.let(T.unsafe(nil), Array)
module Regexp::Syntax::Token::UnicodeProperty::Category; end
Regexp::Syntax::Token::UnicodeProperty::Category::All = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Category::Codepoint = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Category::Letter = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Category::Mark = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Category::Number = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Category::Punctuation = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Category::Separator = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Category::Symbol = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::CharType_V1_9_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::CharType_V2_5_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Derived = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Derived_V1_9_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Derived_V2_0_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Derived_V2_4_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Derived_V2_5_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Emoji = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Emoji_V2_5_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::NonType = T.let(T.unsafe(nil), Symbol)
Regexp::Syntax::Token::UnicodeProperty::POSIX = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Script = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Script_V1_9_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Script_V1_9_3 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Script_V2_0_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Script_V2_2_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Script_V2_3_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Script_V2_4_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Script_V2_5_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Script_V2_6_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Script_V2_6_2 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Script_V3_1_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Script_V3_2_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::Type = T.let(T.unsafe(nil), Symbol)
Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V1_9_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_0_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_2_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_3_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_4_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_5_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_6_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_6_2 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V3_1_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V3_2_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::V1_9_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::V1_9_3 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::V2_0_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::V2_2_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::V2_3_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::V2_4_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::V2_5_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::V2_6_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::V2_6_2 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::V2_6_3 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::V3_1_0 = T.let(T.unsafe(nil), Array)
Regexp::Syntax::Token::UnicodeProperty::V3_2_0 = T.let(T.unsafe(nil), Array)

class Regexp::Syntax::UnknownSyntaxNameError < ::Regexp::Syntax::SyntaxError
  def initialize(name); end
end

class Regexp::Syntax::V1_8_6 < ::Regexp::Syntax::Base; end
class Regexp::Syntax::V1_9_1 < ::Regexp::Syntax::V1_8_6; end
class Regexp::Syntax::V1_9_3 < ::Regexp::Syntax::V1_9_1; end
class Regexp::Syntax::V2_0_0 < ::Regexp::Syntax::V1_9_3; end
class Regexp::Syntax::V2_2_0 < ::Regexp::Syntax::V2_0_0; end
class Regexp::Syntax::V2_3_0 < ::Regexp::Syntax::V2_2_0; end
class Regexp::Syntax::V2_4_0 < ::Regexp::Syntax::V2_3_0; end
class Regexp::Syntax::V2_4_1 < ::Regexp::Syntax::V2_4_0; end
class Regexp::Syntax::V2_5_0 < ::Regexp::Syntax::V2_4_1; end
class Regexp::Syntax::V2_6_0 < ::Regexp::Syntax::V2_5_0; end
class Regexp::Syntax::V2_6_2 < ::Regexp::Syntax::V2_6_0; end
class Regexp::Syntax::V2_6_3 < ::Regexp::Syntax::V2_6_2; end
class Regexp::Syntax::V3_1_0 < ::Regexp::Syntax::V2_6_3; end
class Regexp::Syntax::V3_2_0 < ::Regexp::Syntax::V3_1_0; end
Regexp::Syntax::VERSION_CONST_REGEXP = T.let(T.unsafe(nil), Regexp)
Regexp::Syntax::VERSION_FORMAT = T.let(T.unsafe(nil), String)
Regexp::Syntax::VERSION_REGEXP = T.let(T.unsafe(nil), Regexp)
Regexp::TOKEN_KEYS = T.let(T.unsafe(nil), Array)

class Regexp::Token < ::Struct
  def conditional_level; end
  def conditional_level=(_); end
  def length; end
  def level; end
  def level=(_); end
  def next; end
  def next=(_arg0); end
  def offset; end
  def previous; end
  def previous=(_arg0); end
  def set_level; end
  def set_level=(_); end
  def te; end
  def te=(_); end
  def text; end
  def text=(_); end
  def token; end
  def token=(_); end
  def ts; end
  def ts=(_); end
  def type; end
  def type=(_); end

  class << self
    def [](*_arg0); end
    def inspect; end
    def members; end
    def new(*_arg0); end
  end
end
