diff --git a/Library/Homebrew/sorbet/rbi/gems/codecov@0.2.8.rbi b/Library/Homebrew/sorbet/rbi/gems/codecov@0.2.9.rbi
similarity index 74%
rename from Library/Homebrew/sorbet/rbi/gems/codecov@0.2.8.rbi
rename to Library/Homebrew/sorbet/rbi/gems/codecov@0.2.9.rbi
index fc4bae26df344dc4c2ffbb6ee4bb59966de1caa5..a33dc8c1df3e0e9ae5611b34d898e8b20500fea5 100644
--- a/Library/Homebrew/sorbet/rbi/gems/codecov@0.2.8.rbi
+++ b/Library/Homebrew/sorbet/rbi/gems/codecov@0.2.9.rbi
@@ -1,6 +1,6 @@
 # DO NOT EDIT MANUALLY
 # This is an autogenerated file for types exported from the `codecov` gem.
-# Please instead update this file by running `tapioca sync --exclude json`.
+# Please instead update this file by running `tapioca sync`.
 
 # typed: true
 
diff --git a/Library/Homebrew/sorbet/rbi/gems/minitest@5.14.1.rbi b/Library/Homebrew/sorbet/rbi/gems/minitest@5.14.1.rbi
deleted file mode 100644
index ed737fbdc65926322130691133af8e39c2372ff2..0000000000000000000000000000000000000000
--- a/Library/Homebrew/sorbet/rbi/gems/minitest@5.14.1.rbi
+++ /dev/null
@@ -1,7 +0,0 @@
-# DO NOT EDIT MANUALLY
-# This is an autogenerated file for types exported from the `minitest` gem.
-# Please instead update this file by running `tapioca generate --exclude json`.
-
-# typed: true
-
-
diff --git a/Library/Homebrew/sorbet/rbi/gems/minitest@5.14.2.rbi b/Library/Homebrew/sorbet/rbi/gems/minitest@5.14.2.rbi
new file mode 100644
index 0000000000000000000000000000000000000000..2a1c8838126fe9081d52356be6beaebabc7c14bc
--- /dev/null
+++ b/Library/Homebrew/sorbet/rbi/gems/minitest@5.14.2.rbi
@@ -0,0 +1,8 @@
+# DO NOT EDIT MANUALLY
+# This is an autogenerated file for types exported from the `minitest` gem.
+# Please instead update this file by running `tapioca sync`.
+
+# typed: true
+
+# THIS IS AN EMPTY RBI FILE.
+# see https://github.com/Shopify/tapioca/blob/master/README.md#manual-gem-requires
diff --git a/Library/Homebrew/sorbet/rbi/gems/rubocop@0.89.1.rbi b/Library/Homebrew/sorbet/rbi/gems/rubocop@0.90.0.rbi
similarity index 93%
rename from Library/Homebrew/sorbet/rbi/gems/rubocop@0.89.1.rbi
rename to Library/Homebrew/sorbet/rbi/gems/rubocop@0.90.0.rbi
index 1a6680058fe49ffbb720d653f2222191d4bcf5d0..0e3fc493643f50433c81c5b4a327a528a640fc3f 100644
--- a/Library/Homebrew/sorbet/rbi/gems/rubocop@0.89.1.rbi
+++ b/Library/Homebrew/sorbet/rbi/gems/rubocop@0.90.0.rbi
@@ -1,6 +1,6 @@
 # DO NOT EDIT MANUALLY
 # This is an autogenerated file for types exported from the `rubocop` gem.
-# Please instead update this file by running `tapioca sync --exclude json`.
+# Please instead update this file by running `tapioca sync`.
 
 # typed: true
 
@@ -310,6 +310,7 @@ class RuboCop::ConfigLoader
     def project_root; end
     def project_root=(_); end
     def warn_on_pending_cops(pending_cops); end
+    def warn_pending_cop(cop); end
 
     private
 
@@ -460,7 +461,7 @@ class RuboCop::Cop::AlignmentCorrector
   extend(::RuboCop::Cop::Alignment)
 
   class << self
-    def align_end(processed_source, node, align_to); end
+    def align_end(corrector, processed_source, node, align_to); end
     def correct(processed_source, node, column_delta); end
     def processed_source; end
 
@@ -618,6 +619,7 @@ class RuboCop::Cop::Base
     def badge; end
     def cop_name; end
     def department; end
+    def documentation_url; end
     def exclude_from_registry; end
     def inherited(subclass); end
     def joining_forces; end
@@ -625,6 +627,11 @@ class RuboCop::Cop::Base
     def match?(given_names); end
     def support_autocorrect?; end
     def support_multiple_source?; end
+
+    private
+
+    def builtin?; end
+    def restrict_on_send; end
   end
 end
 
@@ -646,6 +653,8 @@ class RuboCop::Cop::Base::InvestigationReport < ::Struct
   end
 end
 
+RuboCop::Cop::Base::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Set)
+
 module RuboCop::Cop::Bundler
 end
 
@@ -673,6 +682,7 @@ class RuboCop::Cop::Bundler::GemComment < ::RuboCop::Cop::Cop
 
   def checked_options_present?(node); end
   def commented?(node); end
+  def commented_any_descendant?(node); end
   def contains_checked_options?(node); end
   def gem_options(node); end
   def ignored_gem?(node); end
@@ -769,6 +779,19 @@ end
 
 RuboCop::Cop::CodeLength::MSG = T.let(T.unsafe(nil), String)
 
+module RuboCop::Cop::CommentsHelp
+  include(::RuboCop::Cop::VisibilityHelp)
+
+  def source_range_with_comment(node); end
+
+  private
+
+  def begin_pos_with_comment(node); end
+  def buffer; end
+  def end_position_for(node); end
+  def start_line_position(node); end
+end
+
 class RuboCop::Cop::Commissioner
   include(::RuboCop::AST::Traversal)
 
@@ -898,9 +921,12 @@ class RuboCop::Cop::Commissioner
 
   private
 
+  def cops_callbacks_for(callback); end
   def invoke(callback, cops, *args); end
   def reset; end
+  def restricted_map(callbacks); end
   def trigger_responding_cops(callback, node); end
+  def trigger_restricted_cops(event, node); end
   def with_cop_error_handling(cop, node = T.unsafe(nil)); end
 end
 
@@ -927,7 +953,7 @@ end
 
 class RuboCop::Cop::ConditionCorrector
   class << self
-    def correct_negative_condition(node); end
+    def correct_negative_condition(corrector, node); end
 
     private
 
@@ -1065,6 +1091,19 @@ end
 
 RuboCop::Cop::DefNode::NON_PUBLIC_MODIFIERS = T.let(T.unsafe(nil), Array)
 
+module RuboCop::Cop::Documentation
+
+  private
+
+  def department_to_basename(department); end
+  def url_for(cop_class); end
+
+  class << self
+    def department_to_basename(department); end
+    def url_for(cop_class); end
+  end
+end
+
 module RuboCop::Cop::DocumentationComment
   include(::RuboCop::Cop::Style::AnnotationComment)
   extend(::RuboCop::AST::NodePattern::Macros)
@@ -1113,8 +1152,8 @@ RuboCop::Cop::EachToForCorrector::CORRECTION_WITH_ARGUMENTS = T.let(T.unsafe(nil
 
 class RuboCop::Cop::EmptyLineCorrector
   class << self
-    def correct(node); end
-    def insert_before(node); end
+    def correct(corrector, node); end
+    def insert_before(corrector, node); end
   end
 end
 
@@ -1426,6 +1465,7 @@ module RuboCop::Cop::HashTransformMethod
   def on_bad_each_with_object(_node); end
   def on_bad_hash_brackets_map(_node); end
   def on_bad_map_to_h(_node); end
+  def on_bad_to_h(_node); end
   def prepare_correction(node); end
 end
 
@@ -1448,6 +1488,7 @@ class RuboCop::Cop::HashTransformMethod::Autocorrection < ::Struct
     def from_each_with_object(node, match); end
     def from_hash_brackets_map(node, match); end
     def from_map_to_h(node, match); end
+    def from_to_h(node, match); end
     def inspect; end
     def members; end
     def new(*_); end
@@ -1630,19 +1671,20 @@ end
 
 RuboCop::Cop::Layout::AssignmentIndentation::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::BlockAlignment < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::BlockAlignment < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def block_end_align_target?(node = T.unsafe(nil), param1); end
   def on_block(node); end
   def style_parameter_name; end
 
   private
 
-  def add_space_before(loc, delta); end
+  def add_space_before(corrector, loc, delta); end
   def alt_start_msg(start_loc, source_line_column); end
+  def autocorrect(corrector, node); end
   def block_end_align_target(node); end
   def check_block_alignment(start_node, block_node); end
   def compute_do_source_line_column(node, end_loc); end
@@ -1653,7 +1695,7 @@ class RuboCop::Cop::Layout::BlockAlignment < ::RuboCop::Cop::Cop
   def format_source_line_column(source_line_column); end
   def loc_to_source_line_column(loc); end
   def register_offense(block_node, start_loc, end_loc, do_source_line_column); end
-  def remove_space_before(end_pos, delta); end
+  def remove_space_before(corrector, end_pos, delta); end
   def start_for_block_node(block_node); end
 end
 
@@ -1696,14 +1738,15 @@ end
 
 RuboCop::Cop::Layout::CaseIndentation::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::ClassStructure < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::ClassStructure < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::VisibilityHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_class(class_node); end
 
   private
 
+  def autocorrect(corrector, node); end
   def begin_pos_with_comment(node); end
   def buffer; end
   def categories; end
@@ -1723,10 +1766,10 @@ RuboCop::Cop::Layout::ClassStructure::HUMANIZED_NODE_TYPE = T.let(T.unsafe(nil),
 
 RuboCop::Cop::Layout::ClassStructure::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::ClosingHeredocIndentation < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::ClosingHeredocIndentation < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::Heredoc)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_heredoc(node); end
 
   private
@@ -1798,10 +1841,10 @@ end
 
 RuboCop::Cop::Layout::CommentIndentation::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::ConditionPosition < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::ConditionPosition < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_if(node); end
   def on_until(node); end
   def on_while(node); end
@@ -1809,37 +1852,42 @@ class RuboCop::Cop::Layout::ConditionPosition < ::RuboCop::Cop::Cop
   private
 
   def check(node); end
-  def message(node); end
+  def message(condition); end
 end
 
 RuboCop::Cop::Layout::ConditionPosition::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::DefEndAlignment < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::DefEndAlignment < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::EndKeywordAlignment)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_def(node); end
   def on_defs(node); end
   def on_send(node); end
+
+  private
+
+  def autocorrect(corrector, node); end
 end
 
 RuboCop::Cop::Layout::DefEndAlignment::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::DotPosition < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::DotPosition < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_csend(node); end
   def on_send(node); end
 
   private
 
   def ampersand_dot?(node); end
+  def autocorrect(corrector, dot, node); end
   def correct_dot_position_style?(dot_line, selector_line); end
   def line_between?(first_line, second_line); end
-  def message(node); end
+  def message(dot); end
   def proper_dot_position?(node); end
   def selector_range(node); end
 end
@@ -1869,33 +1917,36 @@ end
 
 RuboCop::Cop::Layout::ElseAlignment::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::EmptyComment < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::EmptyComment < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
-  def investigate(processed_source); end
+  def on_new_investigation; end
 
   private
 
   def allow_border_comment?; end
   def allow_margin_comment?; end
+  def autocorrect(corrector, node); end
   def comment_text(comment); end
   def concat_consecutive_comments(comments); end
   def current_token(comment); end
   def empty_comment_only?(comment_text); end
+  def investigate(comments); end
   def previous_token(node); end
 end
 
 RuboCop::Cop::Layout::EmptyComment::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::EmptyLineAfterGuardClause < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::EmptyLineAfterGuardClause < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_if(node); end
 
   private
 
+  def autocorrect(corrector, node); end
   def contains_guard_clause?(node); end
   def correct_style?(node); end
   def heredoc?(node); end
@@ -1913,30 +1964,57 @@ RuboCop::Cop::Layout::EmptyLineAfterGuardClause::END_OF_HEREDOC_LINE = T.let(T.u
 
 RuboCop::Cop::Layout::EmptyLineAfterGuardClause::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::EmptyLineAfterMagicComment < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::EmptyLineAfterMagicComment < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(token); end
-  def investigate(source); end
+  def on_new_investigation; end
 
   private
 
   def last_magic_comment(source); end
+  def offending_range(last_magic_comment); end
 end
 
 RuboCop::Cop::Layout::EmptyLineAfterMagicComment::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::EmptyLineBetweenDefs < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::EmptyLineAfterMultilineCondition < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  include(::RuboCop::Cop::RescueNode)
+  extend(::RuboCop::Cop::AutoCorrector)
+
+  def on_case(node); end
+  def on_if(node); end
+  def on_rescue(node); end
+  def on_until(node); end
+  def on_until_post(node); end
+  def on_while(node); end
+  def on_while_post(node); end
+
+  private
 
   def autocorrect(node); end
+  def check_condition(condition); end
+  def multiline_rescue_exceptions?(exception_nodes); end
+  def multiline_when_condition?(when_node); end
+  def next_line_empty?(line); end
+  def next_sibling_empty?(node); end
+end
+
+RuboCop::Cop::Layout::EmptyLineAfterMultilineCondition::MSG = T.let(T.unsafe(nil), String)
+
+class RuboCop::Cop::Layout::EmptyLineBetweenDefs < ::RuboCop::Cop::Base
+  include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
+
+  def autocorrect(corrector, prev_def, node); end
   def check_defs(nodes); end
   def on_begin(node); end
 
   private
 
-  def autocorrect_insert_lines(newline_pos, count); end
-  def autocorrect_remove_lines(newline_pos, count); end
+  def autocorrect_insert_lines(corrector, newline_pos, count); end
+  def autocorrect_remove_lines(corrector, newline_pos, count); end
   def blank_lines_between?(first_def_node, second_def_node); end
   def blank_lines_count_between(first_def_node, second_def_node); end
   def def_end(node); end
@@ -1946,7 +2024,6 @@ class RuboCop::Cop::Layout::EmptyLineBetweenDefs < ::RuboCop::Cop::Cop
   def maximum_empty_lines; end
   def minimum_empty_lines; end
   def multiple_blank_lines_groups?(first_def_node, second_def_node); end
-  def prev_node(node); end
 
   class << self
     def autocorrect_incompatible_with; end
@@ -1955,11 +2032,11 @@ end
 
 RuboCop::Cop::Layout::EmptyLineBetweenDefs::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::EmptyLines < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::EmptyLines < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(range); end
-  def investigate(processed_source); end
+  def on_new_investigation; end
 
   private
 
@@ -1972,13 +2049,13 @@ RuboCop::Cop::Layout::EmptyLines::LINE_OFFSET = T.let(T.unsafe(nil), Integer)
 
 RuboCop::Cop::Layout::EmptyLines::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::EmptyLinesAroundAccessModifier < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::EmptyLinesAroundAccessModifier < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
   def initialize(config = T.unsafe(nil), options = T.unsafe(nil)); end
 
-  def autocorrect(node); end
   def on_block(node); end
   def on_class(node); end
   def on_module(node); end
@@ -2010,10 +2087,10 @@ RuboCop::Cop::Layout::EmptyLinesAroundAccessModifier::MSG_BEFORE_AND_AFTER = T.l
 
 RuboCop::Cop::Layout::EmptyLinesAroundAccessModifier::MSG_BEFORE_FOR_ONLY_BEFORE = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::EmptyLinesAroundArguments < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::EmptyLinesAroundArguments < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_csend(node); end
   def on_send(node); end
 
@@ -2029,11 +2106,11 @@ end
 
 RuboCop::Cop::Layout::EmptyLinesAroundArguments::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::EmptyLinesAroundAttributeAccessor < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::EmptyLinesAroundAttributeAccessor < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::AllowedMethods)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_send(node); end
 
   private
@@ -2048,12 +2125,12 @@ end
 
 RuboCop::Cop::Layout::EmptyLinesAroundAttributeAccessor::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::EmptyLinesAroundBeginBody < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::EmptyLinesAroundBeginBody < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::Layout::EmptyLinesAroundBody)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_kwbegin(node); end
 
   private
@@ -2063,12 +2140,12 @@ end
 
 RuboCop::Cop::Layout::EmptyLinesAroundBeginBody::KIND = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::EmptyLinesAroundBlockBody < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::EmptyLinesAroundBlockBody < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::Layout::EmptyLinesAroundBody)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_block(node); end
 end
 
@@ -2108,24 +2185,24 @@ RuboCop::Cop::Layout::EmptyLinesAroundBody::MSG_EXTRA = T.let(T.unsafe(nil), Str
 
 RuboCop::Cop::Layout::EmptyLinesAroundBody::MSG_MISSING = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::EmptyLinesAroundClassBody < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::EmptyLinesAroundClassBody < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::Layout::EmptyLinesAroundBody)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_class(node); end
   def on_sclass(node); end
 end
 
 RuboCop::Cop::Layout::EmptyLinesAroundClassBody::KIND = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::EmptyLinesAroundExceptionHandlingKeywords < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::EmptyLinesAroundExceptionHandlingKeywords < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::Layout::EmptyLinesAroundBody)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_def(node); end
   def on_defs(node); end
   def on_kwbegin(node); end
@@ -2142,12 +2219,12 @@ end
 
 RuboCop::Cop::Layout::EmptyLinesAroundExceptionHandlingKeywords::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::EmptyLinesAroundMethodBody < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::EmptyLinesAroundMethodBody < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::Layout::EmptyLinesAroundBody)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_def(node); end
   def on_defs(node); end
 
@@ -2158,24 +2235,24 @@ end
 
 RuboCop::Cop::Layout::EmptyLinesAroundMethodBody::KIND = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::EmptyLinesAroundModuleBody < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::EmptyLinesAroundModuleBody < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::Layout::EmptyLinesAroundBody)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_module(node); end
 end
 
 RuboCop::Cop::Layout::EmptyLinesAroundModuleBody::KIND = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::EndAlignment < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::EndAlignment < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::CheckAssignment)
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::EndKeywordAlignment)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_case(node); end
   def on_class(node); end
   def on_if(node); end
@@ -2188,6 +2265,7 @@ class RuboCop::Cop::Layout::EndAlignment < ::RuboCop::Cop::Cop
   def alignment_node(node); end
   def alignment_node_for_variable_style(node); end
   def asgn_variable_align_with(outer_node, inner_node); end
+  def autocorrect(corrector, node); end
   def check_asgn_alignment(outer_node, inner_node); end
   def check_assignment(node, rhs); end
   def check_other_alignment(node); end
@@ -2290,10 +2368,10 @@ end
 
 RuboCop::Cop::Layout::FirstArrayElementIndentation::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::FirstArrayElementLineBreak < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::FirstArrayElementLineBreak < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::FirstElementLineBreak)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_array(node); end
 
   private
@@ -2326,19 +2404,19 @@ end
 
 RuboCop::Cop::Layout::FirstHashElementIndentation::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::FirstHashElementLineBreak < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::FirstHashElementLineBreak < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::FirstElementLineBreak)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_hash(node); end
 end
 
 RuboCop::Cop::Layout::FirstHashElementLineBreak::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::FirstMethodArgumentLineBreak < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::FirstMethodArgumentLineBreak < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::FirstElementLineBreak)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_csend(node); end
   def on_send(node); end
   def on_super(node); end
@@ -2346,10 +2424,10 @@ end
 
 RuboCop::Cop::Layout::FirstMethodArgumentLineBreak::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::FirstMethodParameterLineBreak < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::FirstMethodParameterLineBreak < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::FirstElementLineBreak)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_def(node); end
   def on_defs(node); end
 end
@@ -2375,11 +2453,11 @@ end
 
 RuboCop::Cop::Layout::FirstParameterIndentation::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::HashAlignment < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::HashAlignment < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::HashAlignmentStyles)
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def column_deltas; end
   def column_deltas=(_); end
   def offences_by; end
@@ -2398,9 +2476,9 @@ class RuboCop::Cop::Layout::HashAlignment < ::RuboCop::Cop::Cop
   def alignment_for_hash_rockets; end
   def check_delta(delta, node:, alignment:); end
   def check_pairs(node); end
-  def correct_key_value(delta, key, value, separator); end
-  def correct_no_value(key_delta, key); end
-  def correct_node(node, delta); end
+  def correct_key_value(corrector, delta, key, value, separator); end
+  def correct_no_value(corrector, key_delta, key); end
+  def correct_node(corrector, node, delta); end
   def double_splat?(node); end
   def good_alignment?(column_deltas); end
   def ignore_hash_argument?(node); end
@@ -2410,16 +2488,17 @@ end
 
 RuboCop::Cop::Layout::HashAlignment::MESSAGES = T.let(T.unsafe(nil), Hash)
 
-class RuboCop::Cop::Layout::HeredocArgumentClosingParenthesis < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::HeredocArgumentClosingParenthesis < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_send(node); end
 
   private
 
   def add_correct_closing_paren(node, corrector); end
   def add_correct_external_trailing_comma(node, corrector); end
+  def autocorrect(corrector, node); end
   def external_trailing_comma?(node); end
   def external_trailing_comma_offset_from_loc_end(node); end
   def extract_heredoc(node); end
@@ -2447,10 +2526,10 @@ end
 
 RuboCop::Cop::Layout::HeredocArgumentClosingParenthesis::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::HeredocIndentation < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::HeredocIndentation < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::Heredoc)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_heredoc(node); end
 
   private
@@ -2468,7 +2547,8 @@ class RuboCop::Cop::Layout::HeredocIndentation < ::RuboCop::Cop::Cop
   def line_too_long?(node); end
   def longest_line(lines); end
   def max_line_length; end
-  def message(node); end
+  def message(heredoc_indent_type); end
+  def register_offense(node, heredoc_indent_type); end
   def type_message(indentation_width, current_indent_type); end
   def unlimited_heredoc_length?; end
   def width_message(indentation_width); end
@@ -2572,11 +2652,11 @@ end
 
 RuboCop::Cop::Layout::IndentationWidth::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::InitialIndentation < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::InitialIndentation < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(range); end
-  def investigate(_processed_source); end
+  def on_new_investigation; end
 
   private
 
@@ -2586,11 +2666,11 @@ end
 
 RuboCop::Cop::Layout::InitialIndentation::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::LeadingCommentSpace < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::LeadingCommentSpace < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(comment); end
-  def investigate(processed_source); end
+  def on_new_investigation; end
 
   private
 
@@ -2600,6 +2680,7 @@ class RuboCop::Cop::Layout::LeadingCommentSpace < ::RuboCop::Cop::Cop
   def doxygen_comment_style?(comment); end
   def gemfile?; end
   def gemfile_ruby_comment?(comment); end
+  def hash_mark(expr); end
   def rackup_config_file?; end
   def rackup_options?(comment); end
   def ruby_comment_in_gemfile?(comment); end
@@ -2608,9 +2689,10 @@ end
 
 RuboCop::Cop::Layout::LeadingCommentSpace::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::LeadingEmptyLines < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
-  def investigate(processed_source); end
+class RuboCop::Cop::Layout::LeadingEmptyLines < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
+  def on_new_investigation; end
 end
 
 RuboCop::Cop::Layout::LeadingEmptyLines::MSG = T.let(T.unsafe(nil), String)
@@ -2658,11 +2740,11 @@ end
 
 RuboCop::Cop::Layout::LineLength::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::MultilineArrayBraceLayout < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::MultilineArrayBraceLayout < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::MultilineLiteralBraceLayout)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_array(node); end
 end
 
@@ -2674,21 +2756,21 @@ RuboCop::Cop::Layout::MultilineArrayBraceLayout::NEW_LINE_MESSAGE = T.let(T.unsa
 
 RuboCop::Cop::Layout::MultilineArrayBraceLayout::SAME_LINE_MESSAGE = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::MultilineArrayLineBreaks < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::MultilineArrayLineBreaks < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::MultilineElementLineBreaks)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_array(node); end
 end
 
 RuboCop::Cop::Layout::MultilineArrayLineBreaks::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::MultilineAssignmentLayout < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::MultilineAssignmentLayout < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::CheckAssignment)
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def check_assignment(node, rhs); end
   def check_by_enforced_style(node, rhs); end
   def check_new_line_offense(node, rhs); end
@@ -2703,16 +2785,17 @@ RuboCop::Cop::Layout::MultilineAssignmentLayout::NEW_LINE_OFFENSE = T.let(T.unsa
 
 RuboCop::Cop::Layout::MultilineAssignmentLayout::SAME_LINE_OFFENSE = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::MultilineBlockLayout < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::MultilineBlockLayout < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_block(node); end
 
   private
 
   def add_offense_for_expression(node, expr, msg); end
   def args_on_beginning_line?(node); end
+  def autocorrect(corrector, node); end
   def autocorrect_arguments(corrector, node); end
   def autocorrect_body(corrector, node, block_body); end
   def block_arg_string(node, args); end
@@ -2728,11 +2811,11 @@ RuboCop::Cop::Layout::MultilineBlockLayout::MSG = T.let(T.unsafe(nil), String)
 
 RuboCop::Cop::Layout::MultilineBlockLayout::PIPE_SIZE = T.let(T.unsafe(nil), Integer)
 
-class RuboCop::Cop::Layout::MultilineHashBraceLayout < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::MultilineHashBraceLayout < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::MultilineLiteralBraceLayout)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_hash(node); end
 end
 
@@ -2744,10 +2827,10 @@ RuboCop::Cop::Layout::MultilineHashBraceLayout::NEW_LINE_MESSAGE = T.let(T.unsaf
 
 RuboCop::Cop::Layout::MultilineHashBraceLayout::SAME_LINE_MESSAGE = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::MultilineHashKeyLineBreaks < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::MultilineHashKeyLineBreaks < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::MultilineElementLineBreaks)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_hash(node); end
 
   private
@@ -2757,20 +2840,20 @@ end
 
 RuboCop::Cop::Layout::MultilineHashKeyLineBreaks::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::MultilineMethodArgumentLineBreaks < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::MultilineMethodArgumentLineBreaks < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::MultilineElementLineBreaks)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_send(node); end
 end
 
 RuboCop::Cop::Layout::MultilineMethodArgumentLineBreaks::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::MultilineMethodCallBraceLayout < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::MultilineMethodCallBraceLayout < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::MultilineLiteralBraceLayout)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_send(node); end
 
   private
@@ -2817,11 +2900,11 @@ class RuboCop::Cop::Layout::MultilineMethodCallIndentation < ::RuboCop::Cop::Cop
   def syntactic_alignment_base(lhs, rhs); end
 end
 
-class RuboCop::Cop::Layout::MultilineMethodDefinitionBraceLayout < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::MultilineMethodDefinitionBraceLayout < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::MultilineLiteralBraceLayout)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_def(node); end
   def on_defs(node); end
 end
@@ -2872,12 +2955,12 @@ RuboCop::Cop::Layout::ParameterAlignment::ALIGN_PARAMS_MSG = T.let(T.unsafe(nil)
 
 RuboCop::Cop::Layout::ParameterAlignment::FIXED_INDENT_MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::RescueEnsureAlignment < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::RescueEnsureAlignment < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
-  def investigate(processed_source); end
   def on_ensure(node); end
+  def on_new_investigation; end
   def on_resbody(node); end
 
   private
@@ -2888,6 +2971,7 @@ class RuboCop::Cop::Layout::RescueEnsureAlignment < ::RuboCop::Cop::Cop
   def alignment_source(node, starting_loc); end
   def ancestor_node(node); end
   def assignment_node(node); end
+  def autocorrect(corrector, node, alignment_node); end
   def check(node); end
   def format_message(alignment_node, alignment_loc, kw_loc); end
   def modifier?(node); end
@@ -2904,50 +2988,55 @@ RuboCop::Cop::Layout::RescueEnsureAlignment::MSG = T.let(T.unsafe(nil), String)
 
 RuboCop::Cop::Layout::RescueEnsureAlignment::RUBY_2_5_ANCESTOR_TYPES = T.let(T.unsafe(nil), Array)
 
-class RuboCop::Cop::Layout::SpaceAfterColon < ::RuboCop::Cop::Cop
-  def autocorrect(range); end
+class RuboCop::Cop::Layout::SpaceAfterColon < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_kwoptarg(node); end
   def on_pair(node); end
 
   private
 
   def followed_by_space?(colon); end
+  def register_offense(colon); end
 end
 
 RuboCop::Cop::Layout::SpaceAfterColon::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::SpaceAfterComma < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceAfterComma < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::SpaceAfterPunctuation)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(comma); end
   def kind(token); end
   def space_style_before_rcurly; end
 end
 
-class RuboCop::Cop::Layout::SpaceAfterMethodName < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceAfterMethodName < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(pos_before_left_paren); end
   def on_def(node); end
   def on_defs(node); end
 end
 
 RuboCop::Cop::Layout::SpaceAfterMethodName::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::SpaceAfterNot < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceAfterNot < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_send(node); end
+
+  private
+
   def whitespace_after_operator?(node); end
 end
 
 RuboCop::Cop::Layout::SpaceAfterNot::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::SpaceAfterSemicolon < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceAfterSemicolon < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::SpaceAfterPunctuation)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(semicolon); end
   def kind(token); end
   def space_style_before_rcurly; end
 end
@@ -2977,16 +3066,17 @@ class RuboCop::Cop::Layout::SpaceAroundBlockParameters < ::RuboCop::Cop::Base
   def style_parameter_name; end
 end
 
-class RuboCop::Cop::Layout::SpaceAroundEqualsInParameterDefault < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceAroundEqualsInParameterDefault < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::SurroundingSpace)
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(range); end
   def on_optarg(node); end
 
   private
 
+  def autocorrect(corrector, range); end
   def check_optarg(arg, equals, value); end
   def incorrect_style_detected(arg, value, space_on_both_sides, no_surrounding_space); end
   def message(_node); end
@@ -2996,8 +3086,9 @@ end
 
 RuboCop::Cop::Layout::SpaceAroundEqualsInParameterDefault::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::SpaceAroundKeyword < ::RuboCop::Cop::Cop
-  def autocorrect(range); end
+class RuboCop::Cop::Layout::SpaceAroundKeyword < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_and(node); end
   def on_block(node); end
   def on_break(node); end
@@ -3034,7 +3125,6 @@ class RuboCop::Cop::Layout::SpaceAroundKeyword < ::RuboCop::Cop::Cop
   def check_keyword(node, range); end
   def do?(node); end
   def namespace_operator?(range, pos); end
-  def offense(range, msg); end
   def preceded_by_operator?(node, _range); end
   def safe_navigation_call?(range, pos); end
   def space_after_missing?(range); end
@@ -3077,12 +3167,12 @@ RuboCop::Cop::Layout::SpaceAroundMethodCallOperator::MSG = T.let(T.unsafe(nil),
 
 RuboCop::Cop::Layout::SpaceAroundMethodCallOperator::SPACES_REGEXP = T.let(T.unsafe(nil), Regexp)
 
-class RuboCop::Cop::Layout::SpaceAroundOperators < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceAroundOperators < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::PrecedingFollowingAlignment)
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::RationalLiteral)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(range); end
   def on_and(node); end
   def on_and_asgn(node); end
   def on_assignment(node); end
@@ -3106,6 +3196,7 @@ class RuboCop::Cop::Layout::SpaceAroundOperators < ::RuboCop::Cop::Cop
   private
 
   def align_hash_cop_config; end
+  def autocorrect(corrector, range); end
   def check_operator(type, operator, right_operand); end
   def enclose_operator_with_space(corrector, range); end
   def excess_leading_space?(type, operator, with_space); end
@@ -3128,15 +3219,16 @@ RuboCop::Cop::Layout::SpaceAroundOperators::EXCESSIVE_SPACE = T.let(T.unsafe(nil
 
 RuboCop::Cop::Layout::SpaceAroundOperators::IRREGULAR_METHODS = T.let(T.unsafe(nil), Array)
 
-class RuboCop::Cop::Layout::SpaceBeforeBlockBraces < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceBeforeBlockBraces < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(range); end
   def on_block(node); end
 
   private
 
+  def autocorrect(corrector, range); end
   def block_delimiters_style; end
   def check_empty(left_brace, space_plus_brace, used_style); end
   def check_non_empty(left_brace, space_plus_brace, used_style); end
@@ -3155,26 +3247,27 @@ RuboCop::Cop::Layout::SpaceBeforeBlockBraces::DETECTED_MSG = T.let(T.unsafe(nil)
 
 RuboCop::Cop::Layout::SpaceBeforeBlockBraces::MISSING_MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::SpaceBeforeComma < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceBeforeComma < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::SpaceBeforePunctuation)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(space); end
   def kind(token); end
 end
 
-class RuboCop::Cop::Layout::SpaceBeforeComment < ::RuboCop::Cop::Cop
-  def autocorrect(range); end
-  def investigate(processed_source); end
+class RuboCop::Cop::Layout::SpaceBeforeComment < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
+  def on_new_investigation; end
 end
 
 RuboCop::Cop::Layout::SpaceBeforeComment::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::SpaceBeforeFirstArg < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceBeforeFirstArg < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::PrecedingFollowingAlignment)
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(range); end
   def on_csend(node); end
   def on_send(node); end
 
@@ -3187,19 +3280,19 @@ end
 
 RuboCop::Cop::Layout::SpaceBeforeFirstArg::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::SpaceBeforeSemicolon < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceBeforeSemicolon < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::SpaceBeforePunctuation)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(space); end
   def kind(token); end
 end
 
-class RuboCop::Cop::Layout::SpaceInLambdaLiteral < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceInLambdaLiteral < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(lambda_node); end
   def on_send(node); end
 
   private
@@ -3214,17 +3307,18 @@ RuboCop::Cop::Layout::SpaceInLambdaLiteral::MSG_REQUIRE_NO_SPACE = T.let(T.unsaf
 
 RuboCop::Cop::Layout::SpaceInLambdaLiteral::MSG_REQUIRE_SPACE = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::SpaceInsideArrayLiteralBrackets < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceInsideArrayLiteralBrackets < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::SurroundingSpace)
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_array(node); end
 
   private
 
   def array_brackets(node); end
+  def autocorrect(corrector, node); end
   def compact(corrector, bracket, side); end
   def compact_corrections(corrector, node, left, right); end
   def compact_offense(node, token, side: T.unsafe(nil)); end
@@ -3247,12 +3341,12 @@ RuboCop::Cop::Layout::SpaceInsideArrayLiteralBrackets::EMPTY_MSG = T.let(T.unsaf
 
 RuboCop::Cop::Layout::SpaceInsideArrayLiteralBrackets::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::SpaceInsideArrayPercentLiteral < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceInsideArrayPercentLiteral < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::MatchRange)
   include(::RuboCop::Cop::PercentLiteral)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_array(node); end
   def on_percent_literal(node); end
 
@@ -3265,12 +3359,12 @@ RuboCop::Cop::Layout::SpaceInsideArrayPercentLiteral::MSG = T.let(T.unsafe(nil),
 
 RuboCop::Cop::Layout::SpaceInsideArrayPercentLiteral::MULTIPLE_SPACES_BETWEEN_ITEMS_REGEX = T.let(T.unsafe(nil), Regexp)
 
-class RuboCop::Cop::Layout::SpaceInsideBlockBraces < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceInsideBlockBraces < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::SurroundingSpace)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(range); end
   def on_block(node); end
 
   private
@@ -3284,7 +3378,7 @@ class RuboCop::Cop::Layout::SpaceInsideBlockBraces < ::RuboCop::Cop::Cop
   def multiline_block?(left_brace, right_brace); end
   def no_space(begin_pos, end_pos, msg); end
   def no_space_inside_left_brace(left_brace, args_delimiter); end
-  def offense(begin_pos, end_pos, msg, &block); end
+  def offense(begin_pos, end_pos, msg); end
   def pipe?(args_delimiter); end
   def space(begin_pos, end_pos, msg); end
   def space_inside_left_brace(left_brace, args_delimiter); end
@@ -3292,17 +3386,18 @@ class RuboCop::Cop::Layout::SpaceInsideBlockBraces < ::RuboCop::Cop::Cop
   def style_for_empty_braces; end
 end
 
-class RuboCop::Cop::Layout::SpaceInsideHashLiteralBraces < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceInsideHashLiteralBraces < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::SurroundingSpace)
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(range); end
   def on_hash(node); end
 
   private
 
   def ambiguous_or_unexpected_style_detected(style, is_match); end
+  def autocorrect(corrector, range); end
   def check(token1, token2); end
   def expect_space?(token1, token2); end
   def hash_literal_with_braces(node); end
@@ -3316,13 +3411,13 @@ end
 
 RuboCop::Cop::Layout::SpaceInsideHashLiteralBraces::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::SpaceInsideParens < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceInsideParens < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::SurroundingSpace)
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(range); end
-  def investigate(processed_source); end
+  def on_new_investigation; end
 
   private
 
@@ -3337,12 +3432,12 @@ RuboCop::Cop::Layout::SpaceInsideParens::MSG = T.let(T.unsafe(nil), String)
 
 RuboCop::Cop::Layout::SpaceInsideParens::MSG_SPACE = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::SpaceInsidePercentLiteralDelimiters < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceInsidePercentLiteralDelimiters < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::MatchRange)
   include(::RuboCop::Cop::PercentLiteral)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_array(node); end
   def on_percent_literal(node); end
   def on_xstr(node); end
@@ -3359,8 +3454,9 @@ RuboCop::Cop::Layout::SpaceInsidePercentLiteralDelimiters::END_REGEX = T.let(T.u
 
 RuboCop::Cop::Layout::SpaceInsidePercentLiteralDelimiters::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::SpaceInsideRangeLiteral < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Layout::SpaceInsideRangeLiteral < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_erange(node); end
   def on_irange(node); end
 
@@ -3371,16 +3467,17 @@ end
 
 RuboCop::Cop::Layout::SpaceInsideRangeLiteral::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::SpaceInsideReferenceBrackets < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceInsideReferenceBrackets < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::SurroundingSpace)
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_send(node); end
 
   private
 
+  def autocorrect(corrector, node); end
   def bracket_method?(node); end
   def closing_bracket(tokens, opening_bracket); end
   def empty_config; end
@@ -3395,17 +3492,18 @@ RuboCop::Cop::Layout::SpaceInsideReferenceBrackets::EMPTY_MSG = T.let(T.unsafe(n
 
 RuboCop::Cop::Layout::SpaceInsideReferenceBrackets::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::SpaceInsideStringInterpolation < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::SpaceInsideStringInterpolation < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::Interpolation)
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::SurroundingSpace)
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(begin_node); end
   def on_interpolation(begin_node); end
 
   private
 
+  def autocorrect(corrector, begin_node); end
   def delimiters(begin_node); end
 end
 
@@ -3413,12 +3511,12 @@ RuboCop::Cop::Layout::SpaceInsideStringInterpolation::NO_SPACE_MSG = T.let(T.uns
 
 RuboCop::Cop::Layout::SpaceInsideStringInterpolation::SPACE_MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Layout::TrailingEmptyLines < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::TrailingEmptyLines < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(range); end
-  def investigate(processed_source); end
+  def on_new_investigation; end
 
   private
 
@@ -3427,16 +3525,17 @@ class RuboCop::Cop::Layout::TrailingEmptyLines < ::RuboCop::Cop::Cop
   def offense_detected(buffer, wanted_blank_lines, blank_lines, whitespace_at_end); end
 end
 
-class RuboCop::Cop::Layout::TrailingWhitespace < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Layout::TrailingWhitespace < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(range); end
-  def investigate(processed_source); end
+  def on_new_investigation; end
 
   private
 
   def extract_heredoc_ranges(ast); end
   def inside_heredoc?(heredoc_ranges, line_number); end
+  def offense_range(lineno, line); end
   def skip_heredoc?; end
 end
 
@@ -3759,14 +3858,20 @@ RuboCop::Cop::Lint::DuplicateMethods::METHOD_DEF_METHODS = T.let(T.unsafe(nil),
 
 RuboCop::Cop::Lint::DuplicateMethods::MSG = T.let(T.unsafe(nil), String)
 
+class RuboCop::Cop::Lint::DuplicateRequire < ::RuboCop::Cop::Base
+  def on_new_investigation; end
+  def on_send(node); end
+  def require_call?(node = T.unsafe(nil)); end
+end
+
+RuboCop::Cop::Lint::DuplicateRequire::MSG = T.let(T.unsafe(nil), String)
+
+RuboCop::Cop::Lint::DuplicateRequire::REQUIRE_METHODS = T.let(T.unsafe(nil), Array)
+
 class RuboCop::Cop::Lint::DuplicateRescueException < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RescueNode)
 
   def on_rescue(node); end
-
-  private
-
-  def rescued_exceptions(resbody); end
 end
 
 RuboCop::Cop::Lint::DuplicateRescueException::MSG = T.let(T.unsafe(nil), String)
@@ -3814,6 +3919,20 @@ end
 
 RuboCop::Cop::Lint::EmptyExpression::MSG = T.let(T.unsafe(nil), String)
 
+class RuboCop::Cop::Lint::EmptyFile < ::RuboCop::Cop::Base
+  include(::RuboCop::Cop::RangeHelp)
+
+  def on_new_investigation; end
+
+  private
+
+  def contains_only_comments?; end
+  def empty_file?; end
+  def offending?; end
+end
+
+RuboCop::Cop::Lint::EmptyFile::MSG = T.let(T.unsafe(nil), String)
+
 class RuboCop::Cop::Lint::EmptyInterpolation < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::Interpolation)
   extend(::RuboCop::Cop::AutoCorrector)
@@ -4134,12 +4253,6 @@ RuboCop::Cop::Lint::MissingSuper::STATELESS_CLASSES = T.let(T.unsafe(nil), Array
 
 class RuboCop::Cop::Lint::MixedRegexpCaptureTypes < ::RuboCop::Cop::Base
   def on_regexp(node); end
-
-  private
-
-  def contain_non_literal?(node); end
-  def named_capture?(tree); end
-  def numbered_capture?(tree); end
 end
 
 RuboCop::Cop::Lint::MixedRegexpCaptureTypes::MSG = T.let(T.unsafe(nil), String)
@@ -4274,9 +4387,7 @@ class RuboCop::Cop::Lint::OutOfRangeRegexpRef < ::RuboCop::Cop::Base
 
   private
 
-  def check_regexp(regexp); end
-  def contain_non_literal?(node); end
-  def regexp_captures(tree); end
+  def check_regexp(node); end
 end
 
 RuboCop::Cop::Lint::OutOfRangeRegexpRef::MSG = T.let(T.unsafe(nil), String)
@@ -4316,7 +4427,6 @@ class RuboCop::Cop::Lint::PercentStringArray < ::RuboCop::Cop::Base
 
   private
 
-  def autocorrect(corrector, node); end
   def contains_quotes_or_commas?(node); end
 end
 
@@ -4762,7 +4872,7 @@ end
 
 RuboCop::Cop::Lint::ToJSON::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Lint::TopLevelReturnWithArgument < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Lint::TopLevelReturnWithArgument < ::RuboCop::Cop::Base
   def on_return(return_node); end
 
   private
@@ -4772,6 +4882,19 @@ end
 
 RuboCop::Cop::Lint::TopLevelReturnWithArgument::MSG = T.let(T.unsafe(nil), String)
 
+class RuboCop::Cop::Lint::TrailingCommaInAttributeDeclaration < ::RuboCop::Cop::Base
+  include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
+
+  def on_send(node); end
+
+  private
+
+  def trailing_comma_range(node); end
+end
+
+RuboCop::Cop::Lint::TrailingCommaInAttributeDeclaration::MSG = T.let(T.unsafe(nil), String)
+
 class RuboCop::Cop::Lint::UnderscorePrefixedVariableName < ::RuboCop::Cop::Base
   def after_leaving_scope(scope, _variable_table); end
   def check_variable(variable); end
@@ -4965,6 +5088,21 @@ end
 
 RuboCop::Cop::Lint::UselessElseWithoutRescue::MSG = T.let(T.unsafe(nil), String)
 
+class RuboCop::Cop::Lint::UselessMethodDefinition < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
+  def on_def(node); end
+  def on_defs(node); end
+
+  private
+
+  def constructor?(node); end
+  def delegating?(node, def_node); end
+  def empty_constructor?(node); end
+end
+
+RuboCop::Cop::Lint::UselessMethodDefinition::MSG = T.let(T.unsafe(nil), String)
+
 class RuboCop::Cop::Lint::UselessSetterCall < ::RuboCop::Cop::Base
   def on_def(node); end
   def on_defs(node); end
@@ -5256,12 +5394,6 @@ class RuboCop::Cop::Metrics::Utils::AbcSizeCalculator
   end
 end
 
-RuboCop::Cop::Metrics::Utils::AbcSizeCalculator::ARGUMENT_TYPES = T.let(T.unsafe(nil), Array)
-
-RuboCop::Cop::Metrics::Utils::AbcSizeCalculator::BRANCH_NODES = T.let(T.unsafe(nil), Array)
-
-RuboCop::Cop::Metrics::Utils::AbcSizeCalculator::CONDITION_NODES = T.let(T.unsafe(nil), Array)
-
 class RuboCop::Cop::Metrics::Utils::CodeLengthCalculator
   include(::RuboCop::PathUtil)
   include(::RuboCop::TokensUtil)
@@ -5290,10 +5422,6 @@ class RuboCop::Cop::Metrics::Utils::CodeLengthCalculator
   def normalize_foldable_types(types); end
 end
 
-RuboCop::Cop::Metrics::Utils::CodeLengthCalculator::CLASSLIKE_TYPES = T.let(T.unsafe(nil), Array)
-
-RuboCop::Cop::Metrics::Utils::CodeLengthCalculator::FOLDABLE_TYPES = T.let(T.unsafe(nil), Array)
-
 module RuboCop::Cop::Metrics::Utils::IteratingBlock
   def block_method_name(node); end
   def iterating_block?(node); end
@@ -5407,21 +5535,26 @@ class RuboCop::Cop::MultilineLiteralBraceCorrector
   include(::RuboCop::Cop::MultilineLiteralBraceLayout)
   include(::RuboCop::Cop::RangeHelp)
 
-  def initialize(node, processed_source); end
+  def initialize(corrector, node, processed_source); end
 
-  def call(corrector); end
+  def call; end
 
   private
 
   def content_if_comment_present(corrector, node); end
   def correct_next_line_brace(corrector); end
   def correct_same_line_brace(corrector); end
+  def corrector; end
   def last_element_range_with_trailing_comma(node); end
   def last_element_trailing_comma_range(node); end
   def node; end
   def processed_source; end
   def remove_trailing_content_of_comment(corrector, range); end
   def select_content_to_be_inserted_after_last_element(corrector, node); end
+
+  class << self
+    def correct(corrector, node, processed_source); end
+  end
 end
 
 module RuboCop::Cop::MultilineLiteralBraceLayout
@@ -5727,7 +5860,7 @@ module RuboCop::Cop::NegativeConditional
 
   private
 
-  def check_negative_conditional(node); end
+  def check_negative_conditional(node, message:, &block); end
 end
 
 RuboCop::Cop::NegativeConditional::MSG = T.let(T.unsafe(nil), String)
@@ -5776,27 +5909,7 @@ end
 
 RuboCop::Cop::Offense::COMPARISON_ATTRIBUTES = T.let(T.unsafe(nil), Array)
 
-RuboCop::Cop::Offense::NO_LOCATION = T.let(T.unsafe(nil), RuboCop::Cop::Offense::PseudoSourceRange)
-
-class RuboCop::Cop::Offense::PseudoSourceRange < ::Struct
-  def begin_pos; end
-  def begin_pos=(_); end
-  def column; end
-  def column=(_); end
-  def end_pos; end
-  def end_pos=(_); end
-  def line; end
-  def line=(_); end
-  def source_line; end
-  def source_line=(_); end
-
-  class << self
-    def [](*_); end
-    def inspect; end
-    def members; end
-    def new(*_); end
-  end
-end
+RuboCop::Cop::Offense::NO_LOCATION = T.let(T.unsafe(nil), T.untyped)
 
 module RuboCop::Cop::OnNormalIfUnless
   def on_if(node); end
@@ -5840,7 +5953,7 @@ end
 
 class RuboCop::Cop::ParenthesesCorrector
   class << self
-    def correct(node); end
+    def correct(corrector, node); end
 
     private
 
@@ -5854,7 +5967,7 @@ module RuboCop::Cop::PercentArray
   private
 
   def allowed_bracket_array?(node); end
-  def check_bracketed_array(node); end
+  def check_bracketed_array(node, literal_prefix); end
   def check_percent_array(node); end
   def comments_in_array?(node); end
   def invalid_percent_array_context?(node); end
@@ -5882,7 +5995,7 @@ class RuboCop::Cop::PercentLiteralCorrector
   def initialize(config, preferred_delimiters); end
 
   def config; end
-  def correct(node, char); end
+  def correct(corrector, node, char); end
   def preferred_delimiters; end
 
   private
@@ -5899,7 +6012,7 @@ class RuboCop::Cop::PercentLiteralCorrector
   def process_lines(node, previous_line_num, base_line_num, source_in_lines); end
   def process_multiline_words(node, escape, delimiters); end
   def substitute_escaped_delimiters(content, delimiters); end
-  def wrap_contents(node, contents, char, delimiters); end
+  def wrap_contents(corrector, node, contents, char, delimiters); end
 end
 
 module RuboCop::Cop::PrecedingFollowingAlignment
@@ -5947,9 +6060,9 @@ RuboCop::Cop::PreferredDelimiters::PERCENT_LITERAL_TYPES = T.let(T.unsafe(nil),
 
 class RuboCop::Cop::PunctuationCorrector
   class << self
-    def add_space(token); end
-    def remove_space(space_before); end
-    def swap_comma(range); end
+    def add_space(corrector, token); end
+    def remove_space(corrector, space_before); end
+    def swap_comma(corrector, range); end
   end
 end
 
@@ -6035,11 +6148,12 @@ class RuboCop::Cop::Registry
 end
 
 module RuboCop::Cop::RescueNode
-  def investigate(processed_source); end
+  def on_new_investigation; end
 
   private
 
   def rescue_modifier?(node); end
+  def rescued_exceptions(resbody); end
 end
 
 module RuboCop::Cop::SafeAssignment
@@ -6128,7 +6242,7 @@ RuboCop::Cop::Severity::CODE_TABLE = T.let(T.unsafe(nil), Hash)
 RuboCop::Cop::Severity::NAMES = T.let(T.unsafe(nil), Array)
 
 module RuboCop::Cop::SpaceAfterPunctuation
-  def investigate(processed_source); end
+  def on_new_investigation; end
 
   private
 
@@ -6145,7 +6259,7 @@ RuboCop::Cop::SpaceAfterPunctuation::MSG = T.let(T.unsafe(nil), String)
 module RuboCop::Cop::SpaceBeforePunctuation
   include(::RuboCop::Cop::RangeHelp)
 
-  def investigate(processed_source); end
+  def on_new_investigation; end
 
   private
 
@@ -6556,8 +6670,11 @@ class RuboCop::Cop::Style::CaseLikeIf < ::RuboCop::Cop::Base
 
   def autocorrect(corrector, node); end
   def branch_conditions(node); end
+  def class_reference?(node); end
   def collect_conditions(node, target, conditions); end
   def condition_from_binary_op(lhs, rhs, target); end
+  def condition_from_equality_node(node, target); end
+  def condition_from_match_node(node, target); end
   def condition_from_send_node(node, target); end
   def const_reference?(node); end
   def correction_range(node); end
@@ -6640,6 +6757,26 @@ end
 
 RuboCop::Cop::Style::ClassMethods::MSG = T.let(T.unsafe(nil), String)
 
+class RuboCop::Cop::Style::ClassMethodsDefinitions < ::RuboCop::Cop::Base
+  include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  include(::RuboCop::Cop::VisibilityHelp)
+  include(::RuboCop::Cop::CommentsHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
+
+  def on_defs(node); end
+  def on_sclass(node); end
+
+  private
+
+  def contains_non_public_methods?(sclass_node); end
+  def def_nodes(sclass_node); end
+  def def_self_style?; end
+  def extract_def_from_sclass(def_node, sclass_node, corrector); end
+  def indent(node); end
+end
+
+RuboCop::Cop::Style::ClassMethodsDefinitions::MSG = T.let(T.unsafe(nil), String)
+
 class RuboCop::Cop::Style::ClassVars < ::RuboCop::Cop::Base
   def on_cvasgn(node); end
   def on_send(node); end
@@ -6683,6 +6820,19 @@ end
 
 RuboCop::Cop::Style::ColonMethodDefinition::MSG = T.let(T.unsafe(nil), String)
 
+class RuboCop::Cop::Style::CombinableLoops < ::RuboCop::Cop::Base
+  def on_block(node); end
+  def on_for(node); end
+
+  private
+
+  def collection_looping_method?(node); end
+  def left_sibling_of(node); end
+  def same_collection_looping?(node, sibling); end
+end
+
+RuboCop::Cop::Style::CombinableLoops::MSG = T.let(T.unsafe(nil), String)
+
 class RuboCop::Cop::Style::CommandLiteral < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   extend(::RuboCop::Cop::AutoCorrector)
@@ -7031,12 +7181,16 @@ RuboCop::Cop::Style::EachWithObject::METHODS = T.let(T.unsafe(nil), Array)
 
 RuboCop::Cop::Style::EachWithObject::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::EmptyBlockParameter < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::EmptyBlockParameter < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::EmptyParameter)
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_block(node); end
+
+  private
+
+  def autocorrect(corrector, node); end
 end
 
 RuboCop::Cop::Style::EmptyBlockParameter::MSG = T.let(T.unsafe(nil), String)
@@ -7082,12 +7236,16 @@ end
 
 RuboCop::Cop::Style::EmptyElse::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::EmptyLambdaParameter < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::EmptyLambdaParameter < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::EmptyParameter)
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_block(node); end
+
+  private
+
+  def autocorrect(corrector, node); end
 end
 
 RuboCop::Cop::Style::EmptyLambdaParameter::MSG = T.let(T.unsafe(nil), String)
@@ -7517,6 +7675,7 @@ class RuboCop::Cop::Style::HashTransformKeys < ::RuboCop::Cop::Base
   def on_bad_each_with_object(node = T.unsafe(nil)); end
   def on_bad_hash_brackets_map(node = T.unsafe(nil)); end
   def on_bad_map_to_h(node = T.unsafe(nil)); end
+  def on_bad_to_h(node = T.unsafe(nil)); end
 
   private
 
@@ -7531,6 +7690,7 @@ class RuboCop::Cop::Style::HashTransformValues < ::RuboCop::Cop::Base
   def on_bad_each_with_object(node = T.unsafe(nil)); end
   def on_bad_hash_brackets_map(node = T.unsafe(nil)); end
   def on_bad_map_to_h(node = T.unsafe(nil)); end
+  def on_bad_to_h(node = T.unsafe(nil)); end
 
   private
 
@@ -7736,6 +7896,20 @@ RuboCop::Cop::Style::IpAddresses::IPV6_MAX_SIZE = T.let(T.unsafe(nil), Integer)
 
 RuboCop::Cop::Style::IpAddresses::MSG = T.let(T.unsafe(nil), String)
 
+class RuboCop::Cop::Style::KeywordParametersOrder < ::RuboCop::Cop::Base
+  include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
+
+  def on_kwoptarg(node); end
+
+  private
+
+  def remove_kwargs(kwarg_nodes, corrector); end
+  def right_siblings_of(node); end
+end
+
+RuboCop::Cop::Style::KeywordParametersOrder::MSG = T.let(T.unsafe(nil), String)
+
 class RuboCop::Cop::Style::Lambda < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   extend(::RuboCop::Cop::AutoCorrector)
@@ -8185,11 +8359,11 @@ end
 
 RuboCop::Cop::Style::MutableConstant::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::NegatedIf < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::NegatedIf < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::NegativeConditional)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_if(node); end
 
   private
@@ -8198,11 +8372,11 @@ class RuboCop::Cop::Style::NegatedIf < ::RuboCop::Cop::Cop
   def message(node); end
 end
 
-class RuboCop::Cop::Style::NegatedUnless < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::NegatedUnless < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::NegativeConditional)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_if(node); end
 
   private
@@ -8211,30 +8385,30 @@ class RuboCop::Cop::Style::NegatedUnless < ::RuboCop::Cop::Cop
   def message(node); end
 end
 
-class RuboCop::Cop::Style::NegatedWhile < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::NegatedWhile < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::NegativeConditional)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_until(node); end
   def on_while(node); end
-
-  private
-
-  def message(node); end
 end
 
-class RuboCop::Cop::Style::NestedModifier < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::NestedModifier < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
+
+  def on_if(node); end
+  def on_until(node); end
+  def on_while(node); end
+
+  private
 
   def add_parentheses_to_method_arguments(send_node); end
-  def autocorrect(node); end
+  def autocorrect(corrector, node); end
   def check(node); end
   def left_hand_operand(node, operator); end
   def modifier?(node); end
   def new_expression(inner_node); end
-  def on_if(node); end
-  def on_until(node); end
-  def on_while(node); end
   def replacement_operator(keyword); end
   def requires_parens?(node); end
   def right_hand_operand(node, left_hand_keyword); end
@@ -8242,11 +8416,11 @@ end
 
 RuboCop::Cop::Style::NestedModifier::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::NestedParenthesizedCalls < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::NestedParenthesizedCalls < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::AllowedMethods)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(nested); end
   def on_csend(node); end
   def on_send(node); end
 
@@ -8254,12 +8428,14 @@ class RuboCop::Cop::Style::NestedParenthesizedCalls < ::RuboCop::Cop::Cop
 
   def allowed?(send_node); end
   def allowed_omission?(send_node); end
+  def autocorrect(corrector, nested); end
 end
 
 RuboCop::Cop::Style::NestedParenthesizedCalls::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::NestedTernaryOperator < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::NestedTernaryOperator < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_if(node); end
 
   private
@@ -8270,15 +8446,15 @@ end
 
 RuboCop::Cop::Style::NestedTernaryOperator::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::Next < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::Next < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::MinBodyLength)
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
-  def investigate(_processed_source); end
   def on_block(node); end
   def on_for(node); end
+  def on_new_investigation; end
   def on_until(node); end
   def on_while(node); end
 
@@ -8313,10 +8489,10 @@ RuboCop::Cop::Style::Next::EXIT_TYPES = T.let(T.unsafe(nil), Array)
 
 RuboCop::Cop::Style::Next::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::NilComparison < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::NilComparison < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def nil_check?(node = T.unsafe(nil)); end
   def nil_comparison?(node = T.unsafe(nil)); end
   def on_send(node); end
@@ -8332,8 +8508,9 @@ RuboCop::Cop::Style::NilComparison::EXPLICIT_MSG = T.let(T.unsafe(nil), String)
 
 RuboCop::Cop::Style::NilComparison::PREDICATE_MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::NonNilCheck < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::NonNilCheck < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def nil_check?(node = T.unsafe(nil)); end
   def not_and_nil_check?(node = T.unsafe(nil)); end
   def not_equal_to_nil?(node = T.unsafe(nil)); end
@@ -8344,25 +8521,27 @@ class RuboCop::Cop::Style::NonNilCheck < ::RuboCop::Cop::Cop
 
   private
 
-  def autocorrect_comparison(node); end
-  def autocorrect_non_nil(node, inner_node); end
-  def autocorrect_unless_nil(node, receiver); end
+  def autocorrect(corrector, node); end
+  def autocorrect_comparison(corrector, node); end
+  def autocorrect_non_nil(corrector, node, inner_node); end
+  def autocorrect_unless_nil(corrector, node, receiver); end
+  def find_offense_node(node); end
   def include_semantic_changes?; end
   def message(node); end
   def unless_and_nil_check?(send_node); end
 end
 
-class RuboCop::Cop::Style::Not < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::Not < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_send(node); end
 
   private
 
-  def correct_opposite_method(range, child); end
-  def correct_with_parens(range, node); end
-  def correct_without_parens(range); end
+  def correct_opposite_method(corrector, range, child); end
+  def correct_with_parens(corrector, range, node); end
+  def correct_without_parens(corrector, range); end
   def opposite_method?(child); end
   def requires_parens?(child); end
 end
@@ -8371,10 +8550,10 @@ RuboCop::Cop::Style::Not::MSG = T.let(T.unsafe(nil), String)
 
 RuboCop::Cop::Style::Not::OPPOSITE_METHODS = T.let(T.unsafe(nil), Hash)
 
-class RuboCop::Cop::Style::NumericLiteralPrefix < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::NumericLiteralPrefix < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::IntegerNode)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_int(node); end
 
   private
@@ -8433,11 +8612,11 @@ RuboCop::Cop::Style::NumericLiterals::DELIMITER_REGEXP = T.let(T.unsafe(nil), Re
 
 RuboCop::Cop::Style::NumericLiterals::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::NumericPredicate < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::NumericPredicate < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::IgnoredMethods)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def comparison(node = T.unsafe(nil)); end
   def inverted_comparison(node = T.unsafe(nil)); end
   def on_send(node); end
@@ -8458,26 +8637,32 @@ RuboCop::Cop::Style::NumericPredicate::MSG = T.let(T.unsafe(nil), String)
 
 RuboCop::Cop::Style::NumericPredicate::REPLACEMENTS = T.let(T.unsafe(nil), Hash)
 
-class RuboCop::Cop::Style::OneLineConditional < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::OneLineConditional < ::RuboCop::Cop::Base
+  include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::OnNormalIfUnless)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_normal_if_unless(node); end
 
   private
 
+  def always_multiline?; end
+  def branch_body_indentation; end
+  def cannot_replace_to_ternary?(node); end
+  def else_branch_to_multiline(else_branch, indentation); end
   def expr_replacement(node); end
   def keyword_with_changed_precedence?(node); end
   def message(node); end
   def method_call_with_changed_precedence?(node); end
+  def multiline_replacement(node, indentation = T.unsafe(nil)); end
   def replacement(node); end
   def requires_parentheses?(node); end
-  def to_ternary(node); end
+  def ternary_replacement(node); end
 end
 
 RuboCop::Cop::Style::OneLineConditional::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::OptionHash < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::OptionHash < ::RuboCop::Cop::Base
   def on_args(node); end
   def option_hash(node = T.unsafe(nil)); end
 
@@ -8490,7 +8675,7 @@ end
 
 RuboCop::Cop::Style::OptionHash::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::OptionalArguments < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::OptionalArguments < ::RuboCop::Cop::Base
   def on_def(node); end
 
   private
@@ -8510,8 +8695,9 @@ RuboCop::Cop::Style::OptionalBooleanParameter::BOOLEAN_TYPES = T.let(T.unsafe(ni
 
 RuboCop::Cop::Style::OptionalBooleanParameter::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::OrAssignment < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::OrAssignment < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_cvasgn(node); end
   def on_gvasgn(node); end
   def on_if(node); end
@@ -8522,16 +8708,17 @@ class RuboCop::Cop::Style::OrAssignment < ::RuboCop::Cop::Cop
 
   private
 
+  def autocorrect(corrector, node); end
   def take_variable_and_default_from_ternary(node); end
   def take_variable_and_default_from_unless(node); end
 end
 
 RuboCop::Cop::Style::OrAssignment::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::ParallelAssignment < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::ParallelAssignment < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RescueNode)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def implicit_self_getter?(node = T.unsafe(nil)); end
   def on_masgn(node); end
 
@@ -8542,6 +8729,7 @@ class RuboCop::Cop::Style::ParallelAssignment < ::RuboCop::Cop::Cop
   def allowed_masign?(lhs_elements, rhs_elements); end
   def allowed_rhs?(node); end
   def assignment_corrector(node, order); end
+  def autocorrect(corrector, node); end
   def find_valid_order(left_elements, right_elements); end
   def modifier_statement?(node); end
   def return_of_method_call?(node); end
@@ -8604,11 +8792,11 @@ class RuboCop::Cop::Style::ParallelAssignment::RescueCorrector < ::RuboCop::Cop:
   def def_correction(rescue_result); end
 end
 
-class RuboCop::Cop::Style::ParenthesesAroundCondition < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::ParenthesesAroundCondition < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::SafeAssignment)
   include(::RuboCop::Cop::Parentheses)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def control_op_condition(node = T.unsafe(nil)); end
   def on_if(node); end
   def on_until(node); end
@@ -8623,12 +8811,11 @@ class RuboCop::Cop::Style::ParenthesesAroundCondition < ::RuboCop::Cop::Cop
   def process_control_op(node); end
 end
 
-class RuboCop::Cop::Style::PercentLiteralDelimiters < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::PercentLiteralDelimiters < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::PercentLiteral)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
-  def message(node); end
   def on_array(node); end
   def on_dstr(node); end
   def on_regexp(node); end
@@ -8642,25 +8829,26 @@ class RuboCop::Cop::Style::PercentLiteralDelimiters < ::RuboCop::Cop::Cop
   def contains_preferred_delimiter?(node, type); end
   def include_same_character_as_used_for_delimiter?(node, type); end
   def matchpairs(begin_delimiter); end
+  def message(type); end
   def on_percent_literal(node); end
   def preferred_delimiters_for(type); end
   def string_source(node); end
   def uses_preferred_delimiter?(node, type); end
 end
 
-class RuboCop::Cop::Style::PercentQLiterals < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::PercentQLiterals < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::PercentLiteral)
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_str(node); end
 
   private
 
   def correct_literal_style?(node); end
   def corrected(src); end
-  def message(_node); end
+  def message(_range); end
   def on_percent_literal(node); end
 end
 
@@ -8668,23 +8856,24 @@ RuboCop::Cop::Style::PercentQLiterals::LOWER_CASE_Q_MSG = T.let(T.unsafe(nil), S
 
 RuboCop::Cop::Style::PercentQLiterals::UPPER_CASE_Q_MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::PerlBackrefs < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::PerlBackrefs < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_nth_ref(node); end
 end
 
 RuboCop::Cop::Style::PerlBackrefs::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::PreferredHashMethods < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::PreferredHashMethods < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_csend(node); end
   def on_send(node); end
 
   private
 
-  def message(node); end
+  def message(method_name); end
   def offending_selector?(method_name); end
   def proper_method_name(method_name); end
 end
@@ -8693,18 +8882,19 @@ RuboCop::Cop::Style::PreferredHashMethods::MSG = T.let(T.unsafe(nil), String)
 
 RuboCop::Cop::Style::PreferredHashMethods::OFFENDING_SELECTORS = T.let(T.unsafe(nil), Hash)
 
-class RuboCop::Cop::Style::Proc < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::Proc < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_block(node); end
   def proc_new?(node = T.unsafe(nil)); end
 end
 
 RuboCop::Cop::Style::Proc::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::RaiseArgs < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::RaiseArgs < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_send(node); end
 
   private
@@ -8714,7 +8904,6 @@ class RuboCop::Cop::Style::RaiseArgs < ::RuboCop::Cop::Cop
   def check_exploded(node); end
   def correction_compact_to_exploded(node); end
   def correction_exploded_to_compact(node); end
-  def message(node); end
   def requires_parens?(parent); end
 end
 
@@ -8722,8 +8911,9 @@ RuboCop::Cop::Style::RaiseArgs::COMPACT_MSG = T.let(T.unsafe(nil), String)
 
 RuboCop::Cop::Style::RaiseArgs::EXPLODED_MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::RandomWithOffset < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::RandomWithOffset < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def integer_op_rand?(node = T.unsafe(nil)); end
   def on_send(node); end
   def rand_modified?(node = T.unsafe(nil)); end
@@ -8733,6 +8923,7 @@ class RuboCop::Cop::Style::RandomWithOffset < ::RuboCop::Cop::Cop
 
   private
 
+  def autocorrect(corrector, node); end
   def boundaries_from_random_node(random_node); end
   def corrected_integer_op_rand(node); end
   def corrected_rand_modified(node); end
@@ -8742,8 +8933,9 @@ end
 
 RuboCop::Cop::Style::RandomWithOffset::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::RedundantAssignment < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::RedundantAssignment < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_def(node); end
   def on_defs(node); end
   def redundant_assignment?(node = T.unsafe(nil)); end
@@ -8762,8 +8954,9 @@ end
 
 RuboCop::Cop::Style::RedundantAssignment::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::RedundantBegin < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::RedundantBegin < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_block(node); end
   def on_def(node); end
   def on_defs(node); end
@@ -8775,11 +8968,11 @@ end
 
 RuboCop::Cop::Style::RedundantBegin::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::RedundantCapitalW < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::RedundantCapitalW < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::PercentLiteral)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_array(node); end
 
   private
@@ -8790,10 +8983,10 @@ end
 
 RuboCop::Cop::Style::RedundantCapitalW::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::RedundantCondition < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::RedundantCondition < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_if(node); end
 
   private
@@ -8851,11 +9044,11 @@ RuboCop::Cop::Style::RedundantException::MSG_2 = T.let(T.unsafe(nil), String)
 
 RuboCop::Cop::Style::RedundantException::RAISE_METHODS = T.let(T.unsafe(nil), Array)
 
-class RuboCop::Cop::Style::RedundantFetchBlock < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::RedundantFetchBlock < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::FrozenStringLiteral)
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_block(node); end
   def rails_cache?(node = T.unsafe(nil)); end
   def redundant_fetch_block_candidate?(node = T.unsafe(nil)); end
@@ -8874,18 +9067,19 @@ end
 
 RuboCop::Cop::Style::RedundantFetchBlock::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::RedundantFileExtensionInRequire < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::RedundantFileExtensionInRequire < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_send(node); end
   def require_call?(node = T.unsafe(nil)); end
 end
 
 RuboCop::Cop::Style::RedundantFileExtensionInRequire::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::RedundantFreeze < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::RedundantFreeze < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::FrozenStringLiteral)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_send(node); end
   def operation_produces_immutable_object?(node = T.unsafe(nil)); end
 
@@ -8897,18 +9091,18 @@ end
 
 RuboCop::Cop::Style::RedundantFreeze::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::RedundantInterpolation < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::RedundantInterpolation < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::PercentLiteral)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_dstr(node); end
 
   private
 
-  def autocorrect_other(embedded_node, node); end
-  def autocorrect_single_variable_interpolation(embedded_node, node); end
-  def autocorrect_variable_interpolation(embedded_node, node); end
+  def autocorrect_other(corrector, embedded_node, node); end
+  def autocorrect_single_variable_interpolation(corrector, embedded_node, node); end
+  def autocorrect_variable_interpolation(corrector, embedded_node, node); end
   def embedded_in_percent_array?(node); end
   def implicit_concatenation?(node); end
   def interpolation?(node); end
@@ -8923,11 +9117,11 @@ end
 
 RuboCop::Cop::Style::RedundantInterpolation::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::RedundantParentheses < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::RedundantParentheses < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::Parentheses)
+  extend(::RuboCop::Cop::AutoCorrector)
 
   def arg_in_call_with_block?(node = T.unsafe(nil)); end
-  def autocorrect(node); end
   def first_send_argument?(node = T.unsafe(nil)); end
   def first_super_argument?(node = T.unsafe(nil)); end
   def first_yield_argument?(node = T.unsafe(nil)); end
@@ -9001,17 +9195,17 @@ RuboCop::Cop::Style::RedundantPercentQ::SINGLE_QUOTE = T.let(T.unsafe(nil), Stri
 
 RuboCop::Cop::Style::RedundantPercentQ::STRING_INTERPOLATION_REGEXP = T.let(T.unsafe(nil), Regexp)
 
-class RuboCop::Cop::Style::RedundantRegexpCharacterClass < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::RedundantRegexpCharacterClass < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::MatchRange)
   include(::RuboCop::Cop::RegexpLiteralHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
-  def each_redundant_character_class(node); end
   def on_regexp(node); end
 
   private
 
+  def each_redundant_character_class(node); end
   def whitespace_in_free_space_mode?(node, loc); end
   def without_character_class(loc); end
 end
@@ -9020,11 +9214,11 @@ RuboCop::Cop::Style::RedundantRegexpCharacterClass::MSG_REDUNDANT_CHARACTER_CLAS
 
 RuboCop::Cop::Style::RedundantRegexpCharacterClass::PATTERN = T.let(T.unsafe(nil), Regexp)
 
-class RuboCop::Cop::Style::RedundantRegexpEscape < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::RedundantRegexpEscape < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::RegexpLiteralHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_regexp(node); end
 
   private
@@ -9108,6 +9302,31 @@ RuboCop::Cop::Style::RedundantSelf::KEYWORDS = T.let(T.unsafe(nil), Array)
 
 RuboCop::Cop::Style::RedundantSelf::MSG = T.let(T.unsafe(nil), String)
 
+class RuboCop::Cop::Style::RedundantSelfAssignment < ::RuboCop::Cop::Base
+  include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
+
+  def on_cvasgn(node); end
+  def on_gvasgn(node); end
+  def on_ivasgn(node); end
+  def on_lvasgn(node); end
+  def on_send(node); end
+  def redundant_nonself_assignment?(node = T.unsafe(nil), param1, param2); end
+  def redundant_self_assignment?(node = T.unsafe(nil), param1); end
+
+  private
+
+  def correction_range(node); end
+  def method_returning_self?(method_name); end
+  def redundant_assignment?(node); end
+end
+
+RuboCop::Cop::Style::RedundantSelfAssignment::ASSIGNMENT_TYPE_TO_RECEIVER_TYPE = T.let(T.unsafe(nil), Hash)
+
+RuboCop::Cop::Style::RedundantSelfAssignment::METHODS_RETURNING_SELF = T.let(T.unsafe(nil), Set)
+
+RuboCop::Cop::Style::RedundantSelfAssignment::MSG = T.let(T.unsafe(nil), String)
+
 class RuboCop::Cop::Style::RedundantSort < ::RuboCop::Cop::Cop
   include(::RuboCop::Cop::RangeHelp)
 
@@ -9146,11 +9365,11 @@ end
 
 RuboCop::Cop::Style::RedundantSortBy::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::RegexpLiteral < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::RegexpLiteral < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_regexp(node); end
 
   private
@@ -9161,8 +9380,6 @@ class RuboCop::Cop::Style::RegexpLiteral < ::RuboCop::Cop::Cop
   def allowed_percent_r_literal?(node); end
   def allowed_slash_literal?(node); end
   def calculate_replacement(node); end
-  def check_percent_r_literal(node); end
-  def check_slash_literal(node); end
   def contains_disallowed_slash?(node); end
   def contains_slash?(node); end
   def correct_delimiters(node, corrector); end
@@ -9186,6 +9403,12 @@ class RuboCop::Cop::Style::RescueModifier < ::RuboCop::Cop::Cop
 
   def autocorrect(node); end
   def on_resbody(node); end
+
+  private
+
+  def corrected_block(node, parenthesized); end
+  def indentation_and_offset(node, parenthesized); end
+  def parenthesized?(node); end
 end
 
 RuboCop::Cop::Style::RescueModifier::MSG = T.let(T.unsafe(nil), String)
@@ -9205,10 +9428,10 @@ RuboCop::Cop::Style::RescueStandardError::MSG_EXPLICIT = T.let(T.unsafe(nil), St
 
 RuboCop::Cop::Style::RescueStandardError::MSG_IMPLICIT = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::ReturnNil < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::ReturnNil < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def chained_send?(node = T.unsafe(nil)); end
   def define_method?(node = T.unsafe(nil)); end
   def on_return(node); end
@@ -9226,12 +9449,12 @@ RuboCop::Cop::Style::ReturnNil::RETURN_MSG = T.let(T.unsafe(nil), String)
 
 RuboCop::Cop::Style::ReturnNil::RETURN_NIL_MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::SafeNavigation < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::SafeNavigation < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::AllowedMethods)
   include(::RuboCop::Cop::NilMethods)
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def check_node(node); end
   def modifier_if_safe_navigation_candidate(node = T.unsafe(nil)); end
   def not_nil_check?(node = T.unsafe(nil)); end
@@ -9243,6 +9466,7 @@ class RuboCop::Cop::Style::SafeNavigation < ::RuboCop::Cop::Cop
 
   def add_safe_nav_to_all_methods_in_chain(corrector, start_method, method_chain); end
   def allowed_if_condition?(node); end
+  def autocorrect(corrector, node); end
   def begin_range(node, method_call); end
   def chain_size(method_chain, method); end
   def comments(node); end
@@ -9264,8 +9488,9 @@ RuboCop::Cop::Style::SafeNavigation::LOGIC_JUMP_KEYWORDS = T.let(T.unsafe(nil),
 
 RuboCop::Cop::Style::SafeNavigation::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::Sample < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::Sample < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_send(node); end
   def sample_candidate?(node = T.unsafe(nil)); end
 
@@ -9285,17 +9510,19 @@ end
 
 RuboCop::Cop::Style::Sample::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::SelfAssignment < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::SelfAssignment < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_cvasgn(node); end
   def on_ivasgn(node); end
   def on_lvasgn(node); end
 
   private
 
-  def apply_autocorrect(node, rhs, operator, new_rhs); end
-  def autocorrect_boolean_node(node, rhs); end
-  def autocorrect_send_node(node, rhs); end
+  def apply_autocorrect(corrector, node, rhs, operator, new_rhs); end
+  def autocorrect(corrector, node); end
+  def autocorrect_boolean_node(corrector, node, rhs); end
+  def autocorrect_send_node(corrector, node, rhs); end
   def check(node, var_type); end
   def check_boolean_node(node, rhs, var_name, var_type); end
   def check_send_node(node, rhs, var_name, var_type); end
@@ -9309,12 +9536,12 @@ RuboCop::Cop::Style::SelfAssignment::MSG = T.let(T.unsafe(nil), String)
 
 RuboCop::Cop::Style::SelfAssignment::OPS = T.let(T.unsafe(nil), Array)
 
-class RuboCop::Cop::Style::Semicolon < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::Semicolon < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(range); end
-  def investigate(processed_source); end
   def on_begin(node); end
+  def on_new_investigation; end
 
   private
 
@@ -9326,7 +9553,7 @@ end
 
 RuboCop::Cop::Style::Semicolon::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::Send < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::Send < ::RuboCop::Cop::Base
   def on_csend(node); end
   def on_send(node); end
   def sending?(node = T.unsafe(nil)); end
@@ -9334,19 +9561,20 @@ end
 
 RuboCop::Cop::Style::Send::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::SignalException < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::SignalException < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def custom_fail_methods(node0); end
-  def investigate(processed_source); end
   def kernel_call?(node = T.unsafe(nil), param1); end
+  def on_new_investigation; end
   def on_rescue(node); end
   def on_send(node); end
 
   private
 
   def allow(method_name, node); end
+  def autocorrect(corrector, node); end
   def check_scope(method_name, node); end
   def check_send(method_name, node); end
   def command_or_kernel_call?(name, node); end
@@ -9367,7 +9595,7 @@ end
 
 RuboCop::Cop::Style::SingleArgumentDig::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::SingleLineBlockParams < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::SingleLineBlockParams < ::RuboCop::Cop::Base
   def on_block(node); end
 
   private
@@ -9384,37 +9612,50 @@ end
 
 RuboCop::Cop::Style::SingleLineBlockParams::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::SingleLineMethods < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::SingleLineMethods < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::Alignment)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_def(node); end
   def on_defs(node); end
 
   private
 
   def allow_empty?; end
+  def autocorrect(corrector, node); end
   def each_part(body); end
   def move_comment(node, corrector); end
 end
 
 RuboCop::Cop::Style::SingleLineMethods::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::SlicingWithRange < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::SlicingWithRange < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
   extend(::RuboCop::Cop::TargetRubyVersion)
 
-  def autocorrect(node); end
   def on_send(node); end
   def range_till_minus_one?(node = T.unsafe(nil)); end
 end
 
 RuboCop::Cop::Style::SlicingWithRange::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::SpecialGlobalVars < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::SoleNestedConditional < ::RuboCop::Cop::Base
+  def on_if(node); end
+
+  private
+
+  def allow_modifier?; end
+  def offending_branch?(branch); end
+end
+
+RuboCop::Cop::Style::SoleNestedConditional::MSG = T.let(T.unsafe(nil), String)
+
+class RuboCop::Cop::Style::SpecialGlobalVars < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
-  def message(node); end
+  def autocorrect(corrector, node, global_var); end
+  def message(global_var); end
   def on_gvar(node); end
 
   private
@@ -9439,31 +9680,31 @@ RuboCop::Cop::Style::SpecialGlobalVars::NON_ENGLISH_VARS = T.let(T.unsafe(nil),
 
 RuboCop::Cop::Style::SpecialGlobalVars::PERL_VARS = T.let(T.unsafe(nil), Hash)
 
-class RuboCop::Cop::Style::StabbyLambdaParentheses < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::StabbyLambdaParentheses < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_send(node); end
 
   private
 
   def message(_node); end
   def missing_parentheses?(node); end
-  def missing_parentheses_corrector(node); end
+  def missing_parentheses_corrector(corrector, node); end
   def parentheses?(node); end
   def redundant_parentheses?(node); end
   def stabby_lambda_with_args?(node); end
-  def unwanted_parentheses_corrector(node); end
+  def unwanted_parentheses_corrector(corrector, node); end
 end
 
 RuboCop::Cop::Style::StabbyLambdaParentheses::MSG_NO_REQUIRE = T.let(T.unsafe(nil), String)
 
 RuboCop::Cop::Style::StabbyLambdaParentheses::MSG_REQUIRE = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::StderrPuts < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::StderrPuts < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_send(node); end
   def stderr_puts?(node = T.unsafe(nil)); end
 
@@ -9493,8 +9734,9 @@ end
 
 RuboCop::Cop::Style::StringConcatenation::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::StringHashKeys < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::StringHashKeys < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_pair(node); end
   def receive_environments_method?(node = T.unsafe(nil)); end
   def string_hash_key?(node = T.unsafe(nil)); end
@@ -9538,34 +9780,30 @@ class RuboCop::Cop::Style::StringLiteralsInInterpolation < ::RuboCop::Cop::Cop
   def offense?(node); end
 end
 
-class RuboCop::Cop::Style::StringMethods < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::StringMethods < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::MethodPreference)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_csend(node); end
   def on_send(node); end
-
-  private
-
-  def message(node); end
 end
 
 RuboCop::Cop::Style::StringMethods::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::Strip < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::Strip < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def lstrip_rstrip(node = T.unsafe(nil)); end
   def on_send(node); end
 end
 
 RuboCop::Cop::Style::Strip::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::StructInheritance < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::StructInheritance < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_class(node); end
   def struct_constructor?(node = T.unsafe(nil)); end
 
@@ -9576,18 +9814,18 @@ end
 
 RuboCop::Cop::Style::StructInheritance::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::SymbolArray < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::SymbolArray < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ArrayMinSize)
   include(::RuboCop::Cop::ArraySyntax)
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::PercentArray)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_array(node); end
 
   private
 
-  def correct_bracketed(node); end
+  def correct_bracketed(corrector, node); end
   def symbol_without_quote?(string); end
   def symbols_contain_spaces?(node); end
   def to_symbol_literal(string); end
@@ -9602,18 +9840,19 @@ RuboCop::Cop::Style::SymbolArray::ARRAY_MSG = T.let(T.unsafe(nil), String)
 
 RuboCop::Cop::Style::SymbolArray::PERCENT_MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::SymbolLiteral < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::SymbolLiteral < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_sym(node); end
 end
 
 RuboCop::Cop::Style::SymbolLiteral::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::SymbolProc < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::SymbolProc < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::IgnoredMethods)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def destructuring_block_argument?(argument_node); end
   def on_block(node); end
   def proc_node?(node = T.unsafe(nil)); end
@@ -9621,6 +9860,7 @@ class RuboCop::Cop::Style::SymbolProc < ::RuboCop::Cop::Cop
 
   private
 
+  def autocorrect(corrector, node); end
   def autocorrect_with_args(corrector, node, args, method_name); end
   def autocorrect_without_args(corrector, node); end
   def begin_pos_for_replacement(node); end
@@ -9655,23 +9895,24 @@ class RuboCop::Cop::Style::TernaryCorrector
   end
 end
 
-class RuboCop::Cop::Style::TernaryParentheses < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::TernaryParentheses < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::SafeAssignment)
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::SurroundingSpace)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def method_name(node = T.unsafe(nil)); end
   def on_if(node); end
   def only_closing_parenthesis_is_last_line?(condition); end
 
   private
 
+  def autocorrect(corrector, node); end
   def below_ternary_precedence?(child); end
   def complex_condition?(condition); end
-  def correct_parenthesized(condition); end
-  def correct_unparenthesized(condition); end
+  def correct_parenthesized(corrector, condition); end
+  def correct_unparenthesized(corrector, condition); end
   def infinite_loop?; end
   def message(node); end
   def non_complex_expression?(condition); end
@@ -9694,43 +9935,43 @@ RuboCop::Cop::Style::TernaryParentheses::NON_COMPLEX_TYPES = T.let(T.unsafe(nil)
 
 RuboCop::Cop::Style::TernaryParentheses::VARIABLE_TYPES = T.let(T.unsafe(nil), Array)
 
-class RuboCop::Cop::Style::TrailingBodyOnClass < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::TrailingBodyOnClass < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::Alignment)
   include(::RuboCop::Cop::TrailingBody)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_class(node); end
 end
 
 RuboCop::Cop::Style::TrailingBodyOnClass::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::TrailingBodyOnMethodDefinition < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::TrailingBodyOnMethodDefinition < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::Alignment)
   include(::RuboCop::Cop::TrailingBody)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_def(node); end
   def on_defs(node); end
 end
 
 RuboCop::Cop::Style::TrailingBodyOnMethodDefinition::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::TrailingBodyOnModule < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::TrailingBodyOnModule < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::Alignment)
   include(::RuboCop::Cop::TrailingBody)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_module(node); end
 end
 
 RuboCop::Cop::Style::TrailingBodyOnModule::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::TrailingCommaInArguments < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::TrailingCommaInArguments < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::TrailingComma)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(range); end
   def on_csend(node); end
   def on_send(node); end
 
@@ -9739,17 +9980,18 @@ class RuboCop::Cop::Style::TrailingCommaInArguments < ::RuboCop::Cop::Cop
   end
 end
 
-class RuboCop::Cop::Style::TrailingCommaInArrayLiteral < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::TrailingCommaInArrayLiteral < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::TrailingComma)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(range); end
   def on_array(node); end
 end
 
-class RuboCop::Cop::Style::TrailingCommaInBlockArgs < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::TrailingCommaInBlockArgs < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_block(node); end
 
   private
@@ -9763,12 +10005,12 @@ end
 
 RuboCop::Cop::Style::TrailingCommaInBlockArgs::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::TrailingCommaInHashLiteral < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::TrailingCommaInHashLiteral < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::TrailingComma)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(range); end
   def on_hash(node); end
 end
 
@@ -9785,11 +10027,11 @@ end
 
 RuboCop::Cop::Style::TrailingMethodEndStatement::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::TrailingUnderscoreVariable < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::TrailingUnderscoreVariable < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
   include(::RuboCop::Cop::SurroundingSpace)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_masgn(node); end
 
   private
@@ -9811,10 +10053,10 @@ RuboCop::Cop::Style::TrailingUnderscoreVariable::MSG = T.let(T.unsafe(nil), Stri
 
 RuboCop::Cop::Style::TrailingUnderscoreVariable::UNDERSCORE = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::TrivialAccessors < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::TrivialAccessors < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::AllowedMethods)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def looks_like_trivial_writer?(node = T.unsafe(nil)); end
   def on_def(node); end
   def on_defs(node); end
@@ -9828,8 +10070,9 @@ class RuboCop::Cop::Style::TrivialAccessors < ::RuboCop::Cop::Cop
   def allowed_method_names; end
   def allowed_reader?(node); end
   def allowed_writer?(method_name); end
-  def autocorrect_class(node); end
-  def autocorrect_instance(node); end
+  def autocorrect(corrector, node); end
+  def autocorrect_class(corrector, node); end
+  def autocorrect_instance(corrector, node); end
   def dsl_writer?(method_name); end
   def exact_name_match?; end
   def ignore_class_methods?; end
@@ -9845,10 +10088,10 @@ end
 
 RuboCop::Cop::Style::TrivialAccessors::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::UnlessElse < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::UnlessElse < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_if(node); end
   def range_between_condition_and_else(node, condition); end
   def range_between_else_and_end(node); end
@@ -9856,8 +10099,9 @@ end
 
 RuboCop::Cop::Style::UnlessElse::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::UnpackFirst < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::UnpackFirst < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_send(node); end
   def unpack_and_first_element?(node = T.unsafe(nil)); end
 
@@ -9868,65 +10112,61 @@ end
 
 RuboCop::Cop::Style::UnpackFirst::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::VariableInterpolation < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::VariableInterpolation < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::Interpolation)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_node_with_interpolations(node); end
 
   private
 
-  def message(node); end
+  def message(range); end
   def var_nodes(nodes); end
 end
 
 RuboCop::Cop::Style::VariableInterpolation::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::WhenThen < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::WhenThen < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_when(node); end
 end
 
 RuboCop::Cop::Style::WhenThen::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::WhileUntilDo < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
-  def handle(node); end
+class RuboCop::Cop::Style::WhileUntilDo < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def on_until(node); end
   def on_while(node); end
 end
 
 RuboCop::Cop::Style::WhileUntilDo::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::WhileUntilModifier < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::WhileUntilModifier < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::LineLengthHelp)
   include(::RuboCop::Cop::StatementModifier)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_until(node); end
   def on_while(node); end
-
-  private
-
-  def check(node); end
 end
 
 RuboCop::Cop::Style::WhileUntilModifier::MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::WordArray < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::WordArray < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ArrayMinSize)
   include(::RuboCop::Cop::ArraySyntax)
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::PercentArray)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def on_array(node); end
 
   private
 
-  def check_bracketed_array(node); end
   def complex_content?(strings); end
-  def correct_bracketed(node); end
+  def correct_bracketed(corrector, node); end
   def word_regex; end
 
   class << self
@@ -9939,11 +10179,11 @@ RuboCop::Cop::Style::WordArray::ARRAY_MSG = T.let(T.unsafe(nil), String)
 
 RuboCop::Cop::Style::WordArray::PERCENT_MSG = T.let(T.unsafe(nil), String)
 
-class RuboCop::Cop::Style::YodaCondition < ::RuboCop::Cop::Cop
+class RuboCop::Cop::Style::YodaCondition < ::RuboCop::Cop::Base
   include(::RuboCop::Cop::ConfigurableEnforcedStyle)
   include(::RuboCop::Cop::RangeHelp)
+  extend(::RuboCop::Cop::AutoCorrector)
 
-  def autocorrect(node); end
   def file_constant_equal_program_name?(node = T.unsafe(nil)); end
   def on_send(node); end
 
@@ -9974,8 +10214,9 @@ RuboCop::Cop::Style::YodaCondition::PROGRAM_NAMES = T.let(T.unsafe(nil), Array)
 
 RuboCop::Cop::Style::YodaCondition::REVERSE_COMPARISON = T.let(T.unsafe(nil), Hash)
 
-class RuboCop::Cop::Style::ZeroLengthPredicate < ::RuboCop::Cop::Cop
-  def autocorrect(node); end
+class RuboCop::Cop::Style::ZeroLengthPredicate < ::RuboCop::Cop::Base
+  extend(::RuboCop::Cop::AutoCorrector)
+
   def non_polymorphic_collection?(node = T.unsafe(nil)); end
   def nonzero_length_predicate(node = T.unsafe(nil)); end
   def on_send(node); end
@@ -10637,6 +10878,15 @@ module RuboCop::Ext::ProcessedSource
   def disabled_line_ranges; end
 end
 
+module RuboCop::Ext::RegexpNode
+  def each_capture(named: T.unsafe(nil)); end
+  def parsed_tree; end
+
+  class << self
+    def parsed_cache; end
+  end
+end
+
 module RuboCop::FileFinder
   def find_file_upwards(filename, start_dir, stop_dir = T.unsafe(nil)); end
   def find_last_file_upwards(filename, start_dir, stop_dir = T.unsafe(nil)); end
@@ -10910,7 +11160,7 @@ end
 RuboCop::Formatter::ProgressFormatter::DOT = T.let(T.unsafe(nil), String)
 
 class RuboCop::Formatter::QuietFormatter < ::RuboCop::Formatter::SimpleTextFormatter
-  def report_summary(file_count, offense_count, correction_count); end
+  def report_summary(file_count, offense_count, correction_count, correctable_count); end
 end
 
 class RuboCop::Formatter::SimpleTextFormatter < ::RuboCop::Formatter::BaseFormatter
@@ -10920,7 +11170,7 @@ class RuboCop::Formatter::SimpleTextFormatter < ::RuboCop::Formatter::BaseFormat
   def file_finished(file, offenses); end
   def finished(inspected_files); end
   def report_file(file, offenses); end
-  def report_summary(file_count, offense_count, correction_count); end
+  def report_summary(file_count, offense_count, correction_count, correctable_count); end
   def started(_target_files); end
 
   private
@@ -10937,12 +11187,13 @@ class RuboCop::Formatter::SimpleTextFormatter::Report
   include(::RuboCop::Formatter::Colorizable)
   include(::RuboCop::Formatter::TextUtil)
 
-  def initialize(file_count, offense_count, correction_count, rainbow); end
+  def initialize(file_count, offense_count, correction_count, correctable_count, rainbow, safe_auto_correct: T.unsafe(nil)); end
 
   def summary; end
 
   private
 
+  def correctable; end
   def corrections; end
   def files; end
   def offenses; end
@@ -11286,10 +11537,6 @@ class RuboCop::StringInterpreter
   end
 end
 
-RuboCop::StringInterpreter::STRING_ESCAPES = T.let(T.unsafe(nil), Hash)
-
-RuboCop::StringInterpreter::STRING_ESCAPE_REGEX = T.let(T.unsafe(nil), Regexp)
-
 class RuboCop::TargetFinder
   def initialize(config_store, options = T.unsafe(nil)); end
 
@@ -11428,7 +11675,9 @@ end
 
 class String
   include(::Comparable)
+  include(::Colorize::InstanceMethods)
   include(::JSON::Ext::Generator::GeneratorMethods::String)
+  extend(::Colorize::ClassMethods)
   extend(::JSON::Ext::Generator::GeneratorMethods::String::Extend)
 
   def blank?; end
diff --git a/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi b/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi
index bf89819801156ad8a1f7c9121e1b2876a852d202..58474123c87240789258581b65d3fb7cc8fae2d2 100644
--- a/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi
+++ b/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi
@@ -20115,6 +20115,10 @@ class RuboCop::AST::Node
   def val_node(node=T.unsafe(nil)); end
 end
 
+class RuboCop::AST::RegexpNode
+  include ::RuboCop::Ext::RegexpNode
+end
+
 class RuboCop::Cask::AST::CaskBlock
   def cask_body(*args, &block); end
 end
@@ -20277,8 +20281,12 @@ class RuboCop::Cop::FormulaAudit::DependencyOrder
   def uses_from_macos_node?(node=T.unsafe(nil)); end
 end
 
-class RuboCop::Cop::FormulaAudit::DeprecateDate
-  def deprecate_date(node0); end
+class RuboCop::Cop::FormulaAudit::DeprecateDisableDate
+  def date(node0); end
+end
+
+class RuboCop::Cop::FormulaAudit::DeprecateDisableReason
+  def reason(node0); end
 end
 
 class RuboCop::Cop::FormulaAudit::Miscellaneous
@@ -21736,6 +21744,7 @@ class SimpleCov::Formatter::Codecov
   BITRISE = ::T.let(nil, ::T.untyped)
   BUILDKITE = ::T.let(nil, ::T.untyped)
   CIRCLE = ::T.let(nil, ::T.untyped)
+  CODEBUILD = ::T.let(nil, ::T.untyped)
   CODESHIP = ::T.let(nil, ::T.untyped)
   DRONEIO = ::T.let(nil, ::T.untyped)
   GITHUB = ::T.let(nil, ::T.untyped)
@@ -22268,8 +22277,6 @@ class String
 
   def classify(); end
 
-  def colorize(color_code); end
-
   def constantize(); end
 
   def cyan(); end